1.声明

当前内容用于本人学习和复习之用,当前内容用于测试当前的rabbitmq的ha模式

最近不知道怎么回事,进不了rabbitmq官方网站了,学习困扰

2.开始创建ha模式策略

ha模式是一种策略模式通过policy方式创建(这里使用ui方式创建)

RabbitMQ:集群模式下的ha模式的测试
在当前的node3设置policy(用于正则匹配node2中的node2Queue队列)

RabbitMQ:集群模式下的ha模式的测试
查看结果
RabbitMQ:集群模式下的ha模式的测试
RabbitMQ:集群模式下的ha模式的测试
此时发现集群中都具有该策略,也说明了在集群模式下的policy是可以公用的

查看队列
RabbitMQ:集群模式下的ha模式的测试
RabbitMQ:集群模式下的ha模式的测试
发现当前的node2Queue出现了两个mirror分别指向两个集群节点

3.测试ha模式(node2不宕机)

这里使用前面的消费者和生产者
开始启动多个消息生产者
RabbitMQ:集群模式下的ha模式的测试
启动消费者(消费node2Queue)
RabbitMQ:集群模式下的ha模式的测试
发现一共就只有30条信息,是可以正常消费的

4.测试ha模式(node2宕机)

RabbitMQ:集群模式下的ha模式的测试
RabbitMQ:集群模式下的ha模式的测试
RabbitMQ:集群模式下的ha模式的测试
此时发现当前的node2Queue的states不是down,并且mirror为+1

此时开动消息生产者(三个分别向node1、node2、node3发送数据)并查看结果

node1的发送情况

RabbitMQ:集群模式下的ha模式的测试
node2的发送情况
RabbitMQ:集群模式下的ha模式的测试

node3的发送情况
RabbitMQ:集群模式下的ha模式的测试
发现此时只有node2不能发送消息,node1、node2还是可以发送消息的,继续查看ui界面
RabbitMQ:集群模式下的ha模式的测试
发现此时只有node2数据是没有的,但是node1、node2节点是有数据的

启动消费者(向node2拉取数据)
RabbitMQ:集群模式下的ha模式的测试
连接不上node2,并且无法消费数据

启动消费者(向node1拉取数据)
RabbitMQ:集群模式下的ha模式的测试
发现此时可以向node1或者node2中拉取数据,并且获取到了20条数据

5.分析ha模式

1.ha模式中,集群不存在宕机,那么该模式中所有消息都是可用的,并且具有mirror为其他的节点

2.ha模式中,集群宕机,那么向宕机节点连接直接报错,向其他没有宕机的节点却可以写入和读取数据,数据在复制queue中的消息,保证了宕机模式该队列的有效性,避免了非ha模式中的队列失效

使用图解释:
RabbitMQ:集群模式下的ha模式的测试
宕机后
RabbitMQ:集群模式下的ha模式的测试

6.总结

1.ha模式可以有效的保证非宕机队列的有效性,但是不能保证宕机节点的有效性

2.ha模式通过复制队列方式来实现消息的复制

3.ha模式可以让消费者在任何情况下访问非宕机节点的集群队列

以上纯属个人见解,如有问题请联系本人!

相关文章:

  • 2021-11-07
  • 2021-11-26
  • 2021-06-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-20
猜你喜欢
  • 2022-02-11
  • 2021-05-27
  • 2021-07-03
  • 2022-01-21
  • 2021-12-01
  • 2021-11-10
相关资源
相似解决方案