🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 概念介绍 * **Broker**:简单来说就是消息队列服务器实体。 * **Exchange**:消息交换机,它指定消息按什么规则,路由到哪个队列。 * **Queue**:消息队列载体,每个消息都会被投入到一个或多个队列。 * **Binding**:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。 * **Routing Key**:路由关键字,exchange根据这个关键字进行消息投递。 * **vhost**:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。 * **producer**:消息生产者,就是投递消息的程序。 * **consumer**:消息消费者,就是接受消息的程序。 * **channel**:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。 ![](https://img.kancloud.cn/6e/0d/6e0d7c3b4830e87109543afb72467f38_691x317.webp) ## RabbitMQ使用流程 AMQP模型中,消息在producer中产生,发送到MQ的exchange上,exchange根据配置的路由方式发到相应的Queue上,Queue又将消息发送给consumer,消息从queue到consumer有push和pull两种方式。 消息队列的使用过程大概如下: 1. 客户端连接到消息队列服务器,打开一个channel。 2. 客户端声明一个exchange,并设置相关属性。 3. 客户端声明一个queue,并设置相关属性。 4. 客户端使用routing key,在exchange和queue之间建立好绑定关系。 5. 客户端投递消息到exchange。 exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。 exchange也有几个类型,完全根据key进行投递的叫做Direct交换机,例如,绑定时设置了routing key为”abc”,那么客户端提交的消息,只有设置了key为”abc”的才会投递到队列。 ## rabbitMQ常用的命令 启动监控管理器:rabbitmq-plugins enable rabbitmq\_management关闭监控管理器:rabbitmq-plugins disable rabbitmq\_management启动rabbitmq:rabbitmq-service start关闭rabbitmq:rabbitmq-service stop查看所有的队列:rabbitmqctl list\_queues清除所有的队列:rabbitmqctl reset关闭应用:rabbitmqctl stop\_app启动应用:rabbitmqctl start\_app **用户和权限设置** 添加用户:rabbitmqctl add\_user username password 分配角色:rabbitmqctl set\_user\_tags username administrator 新增虚拟主机:rabbitmqctl add\_vhost vhost\_name 将新虚拟主机授权给新用户:`rabbitmqctl set_permissions -p vhost_name username “.*” “.*” “.*”`(后面三个”\*”代表用户拥有配置、写、读全部权限) **角色说明** * 超级管理员(administrator)可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。 * 监控者(monitoring)可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等) * 策略制定者(policymaker)可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。 * 普通管理者(management)仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。 * 其他无法登陆管理控制台,通常就是普通的生产者和消费者。