普通模式:
默认的集群模式,以两个节点(rabbit1、rabbit2)为例说明。消息实体只存在其中一个节点 rabbit1 或者 rabbit2,rabbit1 和 rabbit2 两个节点仅有相同的元数据,就是队列的结构。当消息进入 rabbit1 节点的队列(Queue)后,当消费者从 rabbit2 节点消费时,集群会临时在 rabbit1 和 rabbit2 节点间传递消息,把 rabbit1 节点下队列的消息实体取出,然后通过 rabbit2 发送给消费者。所以消费者需要尽量连接每一个节点,同时,需要将同一个逻辑队列,在多个节点都建立。不然消费者连 rabbit1 或 rabbit2 节点,出口却只有 rabbit1,而且当 rabbit1 节点故障后,rabbit2 节点无法取到 rabbit1 节点中还未消费的消息。如果做了消息持久化,还可以等 rabbit1 节点恢复后继续消费;如果没有持久化就会消息丢失消息。
镜像模式:
将队列变为镜像队列,存在于多个节点。消息实体会主动在节点之间同步,不会像普通模式,在消费者消费数据时才临时读取。缺点 —— 集群内部的同步会占用大量带宽。