通常我们使用rabbitmq 做消息队列,若我们是 cluster模式。若我们的网络不稳定很容易造成网络分区,监测是否发生网络分区可以使用rabbitmq的ui来看,也可以用命令来检测 rabbitmqctl cluster_status 若返回值为: [{nodes,[{disc,['rabbit@node1', 'rabbit@node2']}]}, {running_nodes,['rabbit@node2','rabbit@node1']}, {cluster_name,<<"rabbit@node1">>}, {partitions,[]}] 则集群状态为正常,若返回值为 [{nodes, [{disc, ['rabbit@node1','rabbit@node2']}]}, {running_nodes,['rabbit@node1']}, {cluster_name,<<"rabbit@node1">>}, {partitions, [{'rabbit@node1',['rabbit@node2']}]}] 则表示rabbitmq发生网络分区了。 此时我们要手动解决网络分区。 一、最简单的是我们重启rabbitmq集群服务,这样会造成以产生的消息队列失去了消费者,即用户的一些操作可能一直处于“转圈”等待中。 二、 为了从网络分区中恢复,首先需要挑选一个信任的分区