1.什么是RabbitMQ
MQ(Message Queue)消息队列
- 消息队列中间件,是分布式系统中的重要组件
- 主要解决,异步处理,应用解耦,流量削峰等问题
- 从而实现高性能,高可用,可伸缩和最终一致性的架构
- 使用较多的消息队列产品:RabbitMQ,RocketMQ,ActiveMQ,ZeroMQ,Kafka等
2.rabbitMQ各组件功能
1.Broker:消息队列服务器实体.
2.Virtual Host:虚拟主机
-
标识一批交换机、消息队列和相关对象,形成的整体
-
虚拟主机是共享相同的身份认证和加密环境的独立服务器域
-
每个vhost本质上就是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器、绑定和权 限机制
-
vhost是AMQP概念的基础,RabbitMQ默认的vhost是 /,必须在链接时指定
3.Exchange:交换器(路由)
用来接收生产者发送的消息并将这些消息路由给服务器中的队列
4.Queue:消息队列
用来保存消息直到发送给消费者。
它是消息的容器,也是消息的终点。
一个消息可投入一个或多个队列。
消息一直在队列里面,等待消费者连接到这个队列将其取走。
5.Banding:
绑定,用于消息队列和交换机之间的关联。
6.Channel:通道(信道)
- 信道是建立在真实的TCP连接内的 虚拟链接
- AMQP命令都是通过信道发出去的,不管是发布消息、订阅队列还是接收消息,都是通过信 道完成的
- 因为对于操作系统来说,建立和销毁TCP连接都是非常昂贵的开销,所以引入了信道的概 念,用来复用TCP连接。
7.Connection:
网络连接,比如一个TCP连接。
8.Publisher:
消息的生产者,也是一个向交换器发布消息的客户端应用程序。
9.Consumer:
消息的消费者,表示一个从消息队列中取得消息的客户端应用程序
10.Message:消息
- 消息是不具名的,它是由消息头和消息体组成。
- 消息体是不透明的,而消息头则是由一系列的可选属性组成,这些属性包括routing-key(路由
键)、priority(优先级)、delivery-mode(消息可能需要持久性存储[消息的路由模式])等。
2.1 RabbitMQ安装启动
erlang下载:https://dl.bintray.com/rabbitmq-erlang/rpm/erlang
socat下载:http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
RabbitMQ下载:https://www.rabbitmq.com/install-rpm.html#downloads
安装:
[root@localhost opt]# rpm -ivh erlang-21.3.8.16-1.el7.x86_64.rpm
[root@localhost opt]# rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
[root@localhost opt]# rpm -ivh rabbitmq-server-3.8.6-1.el7.noarch.rpm
启动:(后台插件)
[root@localhost opt]# rabbitmq-plugins enable rabbitmq_management
[root@localhost opt]# systemctl start rabbitmq-server.service
[root@localhost opt]# systemctl status rabbitmq-server.service
[root@localhost opt]# systemctl restart rabbitmq-server.service
[root@localhost opt]# systemctl stop rabbitmq-server.service
查看进程
[root@localhost opt]# ps -ef | grep rabbitmq
- 创建账号
- 设置用户角色
- 设置用户权限
- 查看当前用户和角色
- 查看当前用户和角色
```java
[root@localhost opt]# rabbitmqctl add_user ywc 123456
[root@localhost opt]# rabbitmqctl set_user_tags ywc administrator
[root@localhost opt]# rabbitmqctl set_permissions -p "/" ywc ".*" ".*" ".*"
[root@localhost opt]# rabbitmqctl list_users
[root@localhost opt]# rabbitmqctl change_password ywc 123789