
前面已经搭建了由3个节点组成的普通集群,接下来在普通集群的基础上搭建镜像集群,实现高可用以及消息备份。
登录任意节点的管控台:
Admin-->policies-->Add / update a policy
Name: 策略名称 Pattern: 匹配任意队列或交换机 ha-mode:all 在所有节点同步消息 ha-sync-mode:automatic 自动同步消息
在任意节点上创建1个测试队列,如果看到如下node里有其他节点信息,说明镜像集群搭建完成
以后如果需要对集群进行重启顺序是这样:
启动顺序:磁盘节点==>内存节点
关闭顺序:内存节点==>磁盘节点
创建集群时,指定了节点类型磁盘节点或者内存节点,要按照如上方式进行启动或关闭,否则可能会启动失败,或者丢失消息。
springboot项目连接镜像集群与连接普通集群的方式相同,使用前面连接普通集群的项目进行测试。
启动项目,调用send接口发送消息,根据日志可以看到项目连接的是node2节点,去管控台查看:
发现order_queue被创建,里面有一条消息
根据项目的连接日志,我们直到消息存储在节点node2上,现在我们停掉node2,看order_queue中的消息是否能被使用。
node2已经下线
通过管控台,我们发现,一开始创建时order_queue属于node2节点,但是node2下线后,order_queue现在已经归属于node3。
我们启动程序,根据服务日志可以发现可以正常消费队列中的消息
msgTag=1
message=(Body:'新订单 1' MessageProperties [headers={}, contentType=text/plain, contentEncoding=UTF-8, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, redelivered=true, receivedExchange=exchange_order, receivedRoutingKey=order.new, deliveryTag=1, consumerTag=amq.ctag-fIfWNwHmdF9QPxbjr-m_Sw, consumerQueue=order_queue])
body=新订单 1
*****************************
根据测试,可以验证出如下结论:镜像集群,除了同步虚拟主机、交换机、队列等元数据,还会同步消息,具有高可用性,某些节点宕机不影响集群使用,消息在多个节点上同步备份,因此不会丢失消息。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)