普通模式:
默認的集群模式,以兩個節點(rabbit1、rabbit2)為例說明。消息實體只存在其中一個節點 rabbit1 或者 rabbit2,rabbit1 和 rabbit2 兩個節點僅有相同的元數據,就是隊列的結構。當消息進入 rabbit1 節點的隊列(Queue)后,當消費者從 rabbit2 節點消費時,集群會臨時在 rabbit1 和 rabbit2 節點間傳遞消息,把 rabbit1 節點下隊列的消息實體取出,然后通過 rabbit2 發送給消費者。所以消費者需要盡量連接每一個節點,同時,需要將同一個邏輯隊列,在多個節點都建立。不然消費者連 rabbit1 或 rabbit2 節點,出口卻只有 rabbit1,而且當 rabbit1 節點故障后,rabbit2 節點無法取到 rabbit1 節點中還未消費的消息。如果做了消息持久化,還可以等 rabbit1 節點恢復后繼續消費;如果沒有持久化就會消息丟失消息。
鏡像模式:
將隊列變為鏡像隊列,存在於多個節點。消息實體會主動在節點之間同步,不會像普通模式,在消費者消費數據時才臨時讀取。缺點 —— 集群內部的同步會占用大量帶寬。