zoukankan      html  css  js  c++  java
  • RabbitMQ笔记

    rabbitmq 在 mac 下可以直接用 brew 安装
    默认安装在 /usr/local/Cellar/下
    命令被软连接加入到了/usr/local/sbin 下,因此可以把此目录放到环境变量中,建议加入到~/.bash_profile 中
    rabbitmq-server start 开启服务
    端口5672  默认
    端口15672  web 端登录管理端口127.0.0.1:15672
    rabbitmq 默认提供的用户 guest  密码 guest
     
    停止服务
    rabbitmqctl  stop
    开启应用  [服务依旧运行]
    rabbitmqctl  start_app 
    停止应用  [服务依旧运行]
    rabbitmqctl  stop_app   
     
    用户管理
    添加用户
    sudo rabbitmqctl add_user username password
    删除用户
    sudo rabbitmqctl delete_user username
    修改密码
    sudo rabbitmqctl change_password username newpassword
    清除用户密码,禁止用户登录
    sudo rabbitmqctl clear_password <username>
    列出所有用户
    sudo rabbitmqctl list_users 
    设置用户角色
    rabbitmqctl  set_user_tags     username     tag
    management
    User can access the management plugin
    policymaker
    User can access the management plugin and manage policies and parameters for the vhosts they have access to.
    monitoring
    User can access the management plugin and see all connections and channels as well as node-related information.
    administrator
    User can do everything monitoring can do, manage users, vhosts and permissions, close other user's connections, and manage policies and parameters for all vhosts.
     
    vhost虚拟主机管理
    virtual host只是起到一个命名空间的作用,所以可以多个user共同使用一个virtual host,文章开头写的vritual_host = '/',这个是系统默认的,就是说当我们创建一个到rabbitmq的connection时候,它的命名空间是'/',需要注意的是不同的命名空间之间的资源是不能访问的,比如 exchang,queue ,bingding等
    创建虚拟主机 
    sudo rabbitmqctl add_vhost vhostpath
    删除虚拟主机
    sudo rabbitmqctl delete_vhost vhostpath
    列出所有虚拟主机
    sudo rabbitmqctl list_vhosts
    列出某个 vhost 的所有用户和权限
    list_permissions [-p vhostpath]
    列出某个用户的所有权限。
    list_user_permissions {username}
    清除用户对某个 vhost 的权限。
    clear_permissions [-p vhostpath] {username}
    设置用户对某个 virtual host 的权限,如果不指定 vhost,则默认为“/” vhost。
    set_permissions [-p vhostpath] {user}
    rabbitmqctl set_permissions -p test_host  kang “.*" ".*" ".*"
     
    添加一个管理员代替 guest
    rabbitmqctl add_user admin 123456
    指定用户的角色
    rabbitmqctl set_user_tags admin administrator         
    rabbitmqctl set_permissions -p / admin ".*" ".*" ".*”    
    分配给用户指定虚拟主机的权限,虽然是administrator角色,但不对所有虚拟主机都有权限,一样需要对每个虚拟主机都授权 
     
     
    显示信息
     rabbitmqctl         list_queues           [-p <vhostpath>] [<queueinfoitem> ...]
    列出某个 vhost 的所有 queue。”queueinfoitem” 为 queue 的信息选项,可以是 “name”、“durable”、“auto_delete”、“arguments”、“ policy”、“pid”、“owner_pid”、“exclusive_consumer_pi d”、“exclusive_consumer_tag”、“messages_ready”、“ messages_unacknowledged”、“messages”、“consumer s”、“active_consumers”、“memory”、“slave_pids”、“ synchronised_slave_pids”、“status”。如果不指定 “queueinfoitem”,默认为 queue 的名字和 queue 的长度
     
    rabbitmqctl      list_exchanges      [-p <vhostpath>] [<exchangeinfoitem> ...]
    列出某个 vhost 的所有 exchange。 “exchangeinfoitem”为 exchange 信息选项,可以是 “name”、“type”、“durable”、“auto_delete”、“internal” 、“arguments”、“policy”、如果不指定 “exchangeinfoitem”,默认显示“name”和“type”信 息。
     
    rabbitmqctl      list_bindings           [-p <vhostpath>] [<bindinginfoitem> ...]
    列出某个 vhost 的所有 binding。 “bindinginfoitem”为 binding 信息选项,可以是 “source_name”、“source_kind”、“destination_name”、 “destination_kind”、“routing_key”、“arguments”。如 果不指定“bindinginfoitem”,所有的选项都会被显 示。
     
    rabbitmqctl      list_connections      [<connectioninfoitem> ...]
    列出 RabbitMQ broker 的所有 connection。 “connectioninfoitem”为连接的信息选项,可以是 “pid”、“name”、“port”、“host”、“peer_port”、“peer_ host”、“ssl”、“ssl_protocol”、“ssl_key_exchange”、“ssl _cipher”、“ssl_hash”、“peer_cert_subject”、“peer_cert_ issuer”、“peer_cert_validity”、“last_blocked_by”、“last_ blocked_age”、“state”、“channels”、“protocol”、“auth _mechanism”、“user”、“vhost”、“timeout”、“frame_m ax”、“client_properties”、“recv_oct”、“recv_cnt”、“sen d_oct”、“send_cnt”、“send_pend”。如果不指定 “connectioninfoitem”,则只会显示 user、客户端 的 host,客户端 port 和连接的 state。
     
    rabbitmqctl       list_channels           [<channelinfoitem> ...]
    列出 RabbitMQ broker 的所有 channel。 “channelinfoitem”为 channel 的信息选项,可以是 “pid”、“connection”、“connection”、“number”、“user ”、“user”、“transactional”、“confirm”、“consumer_cou nt”、“messages_unacknowledged”、“messages_uncom mitted”、“acks_uncommitted”、“messages_unconfirmed ”、“prefetch_count”、“client_flow_blocked”。如果没有指定“channelinfoitem”,则只会显示 pid、user、consumer_count 和 messages_unacknowledged
     
    rabbitmqcrl     list_consumers           [-p <vhostpath>]
    列出某个 vhost 的所有 consumer。 
     
     
    基本概念点

    1.Server(broker): 接受客户端连接,实现AMQP消息队列和路由功能的进程。

    2.Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可以有若干个Exchange和Queue,但是权限控制的最小粒度是Virtual Host

    3.Exchange:接受生产者发送的消息,并根据Binding规则将消息路由给服务器中的队列。ExchangeType决定了Exchange路由消息的行为,例如,在RabbitMQ中,ExchangeType有direct、Fanout和Topic三种,不同类型的Exchange路由的行为是不一样的。

    4.Message Queue:消息队列,用于存储还未被消费者消费的消息。

    5.Message: 由Header和Body组成,Header是由生产者添加的各种属性的集合,包括Message是否被持久化、由哪个Message Queue接受、优先级是多少等。而Body是真正需要传输的APP数据。

    6.Binding:Binding联系了Exchange与Message Queue。Exchange在与多个Message Queue发生Binding后会生成一张路由表,路由表中存储着Message Queue所需消息的限制条件即Binding Key。当Exchange收到Message时会解析其Header得到Routing Key,Exchange根据Routing Key与Exchange Type将Message路由到Message Queue。Binding Key由Consumer在Binding Exchange与Message Queue时指定,而Routing Key由Producer发送Message时指定,两者的匹配方式由Exchange Type决定。 

    7.Connection:连接,对于RabbitMQ而言,其实就是一个位于客户端和Broker之间的TCP连接。

    8.Channel:信道,仅仅创建了客户端到Broker之间的连接后,客户端还是不能发送消息的。需要为每一个Connection创建Channel,AMQP协议规定只有通过Channel才能执行AMQP的命令。一个Connection可以包含多个Channel。之所以需要Channel,是因为TCP连接的建立和释放都是十分昂贵的,如果一个客户端每一个线程都需要与Broker交互,如果每一个线程都建立一个TCP连接,暂且不考虑TCP连接是否浪费,就算操作系统也无法承受每秒建立如此多的TCP连接。RabbitMQ建议客户端线程之间不要共用Channel,至少要保证共用Channel的线程发送消息必须是串行的,但是建议尽量共用Connection。

     
    9.Command:AMQP的命令,客户端通过Command完成与AMQP服务器的交互来实现自身的逻辑。例如在RabbitMQ中,客户端可以通过publish命令发送消息,txSelect开启一个事务,txCommit提交一个事务。 
     
     
  • 相关阅读:
    OpenShift
    ant exec
    深入了解Ant构建工具 命令
    防止sql注入和跨站脚本攻击,跨站请求伪造以及一句话木马的学习记录
    Web攻防之XSS,CSRF,SQL注入(转)
    sublime text常用快捷键(转)
    fiddler使用心得记录
    python+tesseract验证码识别的一点小心得
    window脚本命令学习(转)
    python发送邮件(转)
  • 原文地址:https://www.cnblogs.com/hanyouchun/p/5383548.html
Copyright © 2011-2022 走看看