1.声明
当前内容用于本人学习和复习之用,当前内容用于测试当前的rabbitmq的ha模式
最近不知道怎么回事,进不了rabbitmq官方网站了,学习困扰
2.开始创建ha模式策略
ha模式是一种策略模式通过policy方式创建(这里使用ui方式创建)
在当前的node3设置policy(用于正则匹配node2中的node2Queue队列)
查看结果
此时发现集群中都具有该策略,也说明了在集群模式下的policy是可以公用的
查看队列
发现当前的node2Queue出现了两个mirror分别指向两个集群节点
3.测试ha模式(node2不宕机)
这里使用前面的消费者和生产者
开始启动多个消息生产者
启动消费者(消费node2Queue)
发现一共就只有30条信息,是可以正常消费的
4.测试ha模式(node2宕机)
此时发现当前的node2Queue的states不是down,并且mirror为+1
此时开动消息生产者(三个分别向node1、node2、node3发送数据)并查看结果
node1的发送情况
node2的发送情况
node3的发送情况
发现此时只有node2不能发送消息,node1、node2还是可以发送消息的,继续查看ui界面
发现此时只有node2数据是没有的,但是node1、node2节点是有数据的
启动消费者(向node2拉取数据)
连接不上node2,并且无法消费数据
启动消费者(向node1拉取数据)
发现此时可以向node1或者node2中拉取数据,并且获取到了20条数据
5.分析ha模式
1.ha模式中,集群不存在宕机,那么该模式中所有消息都是可用的,并且具有mirror为其他的节点
2.ha模式中,集群宕机,那么向宕机节点连接直接报错,向其他没有宕机的节点却可以写入和读取数据,数据在复制queue中的消息,保证了宕机模式该队列的有效性,避免了非ha模式中的队列失效
使用图解释:
宕机后
6.总结
1.ha模式可以有效的保证非宕机队列的有效性,但是不能保证宕机节点的有效性
2.ha模式通过复制队列方式来实现消息的复制
3.ha模式可以让消费者在任何情况下访问非宕机节点的集群队列
以上纯属个人见解,如有问题请联系本人!