在前面讲到了RabbitMQ高可用集群的搭建,但是我们知道只是集群的高可用并不能保证应用在使用消息队列时完全没有问题,例如如果应用连接的RabbitMQ集群突然宕机了,虽然这个集群时可以使用的,但是应用订阅的连接就断开了,如果有个机房外网出口带宽被挖掘机弄断了,那集群依然是不可用的。所以我们后面会介绍应用APP如何与连接集群来保证两者配合默契,以及如何实现跨机房的集群复制。
应用连接集群高可用
前面讲到应用服务器通过一个负载均衡服务将连接的流量分发到指定服务器,如果连接的节点宕机怎么办呢。应用服务器连接集群主要做两件事,订阅和发布,所以如果是发布消息每次都会重新初始化连接所以连接节点的切换对整个系统的可用性影响不大。如果是订阅消息就没有真么简单了。首先我们要做到如果连接出现问题应该是抛出异常而不是终止脚本,并且这时应该重新连接连接。
好了不废话了,代码如下:
$queueName = 'superrd';
$exchangeName = 'superrd';
while(

本文介绍了如何确保应用与RabbitMQ集群的高可用性,包括应用服务器在集群节点宕机时自动重连的策略,以及RabbitMQ集群的异地复制方法,如基于Shovel的远程复制方案,以应对机房外网出口故障等场景。
RabbitMQ消息队列-如何实现高可用&spm=1001.2101.3001.5002&articleId=71082398&d=1&t=3&u=2524bc032bb14b66988a82d36c4c439f)
1万+





