我從RabbitMQ的網站實現的例子: RabbitMQ Example的RabbitMQ同樣的消息到每個消費者
我已經擴大它有一個按鈕的應用程序發送的消息。 現在我在兩臺不同的計算機上啓動了兩位消費者。 當我發送第一消息被髮送到電腦1的消息,則第二消息發送到計算機2時,THRID到計算機1等。
這是爲什麼,我怎麼可以改變每封郵件發送到每個消費者的行爲?
我從RabbitMQ的網站實現的例子: RabbitMQ Example的RabbitMQ同樣的消息到每個消費者
我已經擴大它有一個按鈕的應用程序發送的消息。 現在我在兩臺不同的計算機上啓動了兩位消費者。 當我發送第一消息被髮送到電腦1的消息,則第二消息發送到計算機2時,THRID到計算機1等。
這是爲什麼,我怎麼可以改變每封郵件發送到每個消費者的行爲?
這是爲什麼
正如Yazan所指出的,消息從在循環方式的單個隊列消耗。您看到的行爲是通過設計的,可以輕鬆擴大給定隊列的消費者數量。
如何更改將每條消息發送給每個消費者的行爲?
要讓每個消費者收到相同的消息,您需要爲每個消費者創建一個隊列並向每個隊列傳遞相同的消息。
做到這一點,最簡單的方法是使用fanout
交換。這會將每條消息發送到綁定到交換機的每個隊列,完全忽略路由密鑰。
如果您需要對路由進行更多控制,可以使用topic
或direct
交換和管理路由密鑰。
無論您選擇哪種類型的交換,您都需要爲每個消費者設置一個隊列,並將每條消息路由到每個隊列。
你不能是controlled by the server檢查輪轉調度部分
它決定其消費又是。我不知道是否有一組算法您可以挑選,但最後服務器將控制這個(我想輪詢算法是默認值)
,除非你想使用的路由鍵與交流
因此,不可能將RabbitMQ用作某種全球性通知發送者,將相同的消息發送給所有客戶端? – GreenEyedAndy
哦,在這一刻對不起,我看到你關於路由的暗示 - 所以它應該有可能做到這一點。 – GreenEyedAndy
@GreenEyedAndy它取決於你的要求,你可以看到這一點,看看它是否適合你的 – Yazan
您實現了生產者 - 消費者模式。如果您希望所有消費者都收到消息,則應實施發佈訂閱模式https://www.rabbitmq.com/tutorials/tutorial-three-java.html –