rabbitmq-web界面:
Admin
Users
增
删
改
设置角色
virtual hosts权限
说明:
virtual host相当于一个单独的rabbitmq服务器,每个virtual是独立的,不可互通的,相当于mysql中的数据库,都是独立的,可以单独设置权限,Virtual Name一般以/开头
添加chost及授权:
sudo rabbitmqctl add_vhost myvhost
sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"
Virtual Hosts
增
删
改
添加用户的virtual hosts权限
sudo rabbitmqctl add_vhost /testvhost
sudo rabbitmqctl set_permissions -p /testvhost admin ".*" ".*" ".*"
broker的配置:
broker='amqp://admin:admin@localhost:5672//testvhost'
Policies:策略(高级)
为什么要使用policy
一个策略按名称匹配一个或多个队列(使用正则表达式模式),可以使用策略一次为多个队列配置x参数,并通过更新策略定义一次全部更新它们。
定义 Policies 的方法,目前有三种途径:
通过 rabbitmqctl 命令创建
通过 RabbitMQ REST API
通过管理插件(web)
Policy 各属性解释:
name:名字,可以使用任意字符,建议不要使用空格
pattern:用于匹配队列/交换机的正则表达式
apply-to:该 Policy 是针对队列,还是交换机,还是同时针对两者
priority:优先级。一个队列/交换机只会有一个生效的 Policy,如果匹配多个 Policy,则优先级数值最大的 Policy 生效
definition:JSON格式的一组键值对,表示设置的属性,会被注入匹配队列/交换机
官方文档:
查
增
删
Queue:队列
队列的增加
详情
Overview
Consumers
Bindings
Publish message
Get messages
Move messages
Delete / purge:删除队列:Delete / 清空队列:Purge
Exchange:交换机
增加交换器
详情
Overview
Bindings
Publish message
Delete this exchange
Channels:频道、信道
channel是建立在真实的连接内的虚拟连接
每条channel都会被指派一个唯一ID
一个TCP连接,对应多个channel,理论上无限制,减少TCP创建和销毁的开销,实现共用TCP的效果
与RabbitMQ打交道的最重要的一个接口
注:一个生产者或一个消费者与MQ服务器之间只有一条TCP连接
Connections
Connections和Channel的区别
Channel是我们与RabbitMQ打交道的最重要的一个接口,我们大部分的业务操作是在Channel这个接口中完成的,包括定义Queue、定义Exchange、绑定Queue与Exchange、发布消息等。
如果每一次访问RabbitMQ都建立一个Connection,在消息量大的时候建立TCP Connection的开销将是巨大的,效率也较低。Channel是在connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的channel进行通讯,channel之间是完全隔离的
Channel作为轻量级的Connection极大减少了操作系统建立TCP connection的开销
Overview
ready
如果队列中ready状态的消息数比较多,可以认为是消费者的处理能力不足,可以通过增加消费者来解决
unacked
消费者取走消息后没有及时做消息确认,对于开启手动确认机制的,不进行ack则消息会一直以unacked状态留在队列中。默认是自动应答
消费者处理能力不足。生产者投放消息的速度较快,当消费者按照设置的值(prefetch_count)取走相应数量的消息时,这些消息都会暂时处于unacked状态。
消费者挂掉后,unacked的消息会变成ready状态的消息重新放在队列中,待下次消费者启动后可以直接读取