-
RabbitMQ是什么
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
- RabbitMQ概念
- Broker:简单来说就是消息队列服务器实体。
- Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
- Queue:消息队列载体,每个消息都会被投入到一个或多个队列。
- Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
- Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
- vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。
- producer:消息生产者,就是投递消息的程序。
- consumer:消息消费者,就是接受消息的程序。
- channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。
主机名 | IP | 用途 |
---|---|---|
rabbitmq01 | 192.168.200.128 | 磁盘节点 |
rabbitmq02 | 192.168.200.129 | 内存节点 |
rabbitmq03 | 192.168.200.130 | 内存节点 |
- 安装RabbitMQ
-
1:需要配置三个节点的hosts文件,将如下的内容分别加入到三台服务器上。
vim /etc/hostname //其他两台为rabbitmq02、rabbitmq03 rabbitmq01.localdomain # vim /etc/hosts //添加下面三行 192.168.200.128 rabbitmq01 192.168.200.129 rabbitmq02 192.168.200.130 rabbitmq03 # init 6 //重启 # service firewalld stop # setenforce 0
-
2:安装rabbitmq软件。
# yum install epel-release -y //安装epel源 # yum install -y rabbitmq-server //安装软件 # rabbitmq-plugins list //查看插件安装情况 # rabbitmq-plugins enable rabbitmq_management //启用rabbitmq_management服务 # systemctl start rabbitmq-server.service //启动rabbitmq服务 # netstat -ntap | grep 5672 # rabbitmqctl cluster_status //检查三台的集群状态,目前相互独立,没有形成集群。
-
构建Erlang群集
# systemctl stop rabbitmq-server.service //停止三台服务器 # vi /var/lib/rabbitmq/.erlang.cookie //三台值配置成一样的,复制rabbitmq01的内容到其他两台 # systemctl start rabbitmq-server.service
-
在02、 03节点上操作
# rabbitmqctl stop_app # rabbitmqctl join_cluster --ram rabbit@mq01 //加入到磁盘节点 # rabbitmqctl start_app
- 打开浏览器进入web页面管理
- 输入: http://192.168.200.128:15672/
- 默认用户名:guest 密码:guest
- 创建策略
- Name:策略名称
- Pattern:匹配的规则 (这是表示匹配以a开头,^ 匹配所有队列)
- Definition;使用ha-mode模式中的all,也就是同步所有匹配的队列。
-
Priority:优先级,默认是0,值越大优先级越大。
- 添加队列
- Name:队列名称
- Durability:队列是否持久化(durable 是支持)
- Auto delete:自动删除
- Arguments:使用的策略类型
、
-
在创建一个aaa 不填写Arguments值
-
查看队列消息
- 添加队列消息
- 2-Persistent:表示持久化,反之上面显示非持久化。
- Headers: 随便填写
- Properties:点击问号,现在一个ID号
- Payload:消息内容
 
- 将rabbitmq01 节点关了 在rabbitmq02和rabbitmq03查看消息记录是否还存在。
- 输入: http://192.168.200.129:15672/
 
- 将rabbitmq02 节点也关了 在rabbitmq03查看消息记录是否还存在。
- 输入: http://192.168.200.130:15672/
-
现在把刚刚的节点都开启
# rabbitmqctl sync_queue aa //01或者02上执行同步命令 # systemctl restart rabbitmq-server.service //重启3个节点的服务
-
查看队列在服务器的位置
# ll -a /var/lib/rabbitmq/mnesia/rabbit@rabbitmq01/queues/
- 总结
- 一个目录对应的就是一个队列,里面就是该队列本身的消息。注意如果内存节点故障,队列就会丢失;如果是磁盘节点故障,队列还会存在。但如果创建队列是指定了 x-ha-prolicy参数,待修复磁盘节点故障后,在启动磁盘节点的rabbitmq服务,未消费的队列消息及消息会不存在,需要手动执行同步队列命令。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Mongodb集群架构之分片架构
- MongoDB集群架构之分片+副本集架构
- 『互联网架构』软件架构-eureka集群(99)
- Mongodb集群架构之副本集
- 滴滴 Elasticsearch 多集群架构实践
- 集群调度框架的架构演进过程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Persuasive Technology
B.J. Fogg / Morgan Kaufmann / 2002-12 / USD 39.95
Can computers change what you think and do? Can they motivate you to stop smoking, persuade you to buy insurance, or convince you to join the Army? "Yes, they can," says Dr. B.J. Fogg, directo......一起来看看 《Persuasive Technology》 这本书的介绍吧!
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
HEX CMYK 转换工具
HEX CMYK 互转工具