2010-06-30 37 views
0

考慮一層N-many用戶,所有用戶都使用相同的隊列名稱和路由鍵值連接到直接交換。這將創建一個負載平衡系統,其中入站消息將循環發送給其中一個訂閱者。這對處理橫向擴展問題非常有效,因爲隨着負載的增加可以添加更多的用戶,並且可以稍後在必要時撤銷。如何向所有用戶廣播具有相同隊列名稱/路由鍵值的直接交換

現在考慮的是能夠將消息發送到該層所有訂戶的要求,不知道有多少(例如「重置狀態」或「關機現在請」行政消息)。有沒有辦法在rabbitmq中做到這一點?如果這是不可能的,是否有更好的方法?

我的環境是使用amqplib的Python。

回答

2

如果我理解正確的,這是你的設置:

  • 你有一個製片人發佈到一個直接交流;
  • 你有一個隊列綁定到該交換;
  • 你有很多訂戶,都從上面的隊列中消費。

這適用於向任意訂閱者發送消息(因此排序 - 負載平衡),但您希望能夠向所有訂閱者發送一些消息。

你可以爲每個用戶的分發交換和一個額外的隊列做到這一點:

  • 您製作發佈系統範圍內的消息,以扇出交換;
  • 每個綁定到該交換機的用戶都有一個隊列;
  • 每個用戶首​​先嚐試從該隊列中消費;如果它不成功,它會嘗試從當前使用的通用隊列中消耗。
+0

感謝您的回答,你的理解是完全正確無誤。我有一個新手 - 跟蹤問題(對不起):你如何嘗試從多個隊列中消耗? – ccgillett 2010-07-01 15:04:49

相關問題