2011-05-10 62 views
7

我已經建立了這個示例:Getting Started With RabbitMQ in .net,但做2個節目:發佈/ RabbitMQ的與訂閱樣本.NET

  • 一個出版商
  • 一個訂戶

我使用BasicPublish進行發佈,並使用BasicAck進行示例收聽。如果我運行一個發佈者和幾個訂閱者 - 在發佈者的每個「發送消息」上 - 只有一個訂閱者獲得它。因此,發佈者向訂閱者發送消息時有一些訂單(作爲訂閱者開始),並且我想向所有訂閱者發送一條消息。那個樣本有什麼問題?可能你可以通過RabbitMq提供發佈者/訂閱者消息交換的工作示例嗎?

回答

9

您鏈接的示例使用無需交換的簡單排隊,這可確保只有單個消費者處理消息。要支持RabbitMQ中的發佈/訂閱,您需要先創建一個Exchange,然後讓每個訂閱者在該Exchange上綁定一個隊列。生產者然後發送消息到Exchange,它將消息發佈到已綁定到它的每個隊列(至少使用簡單的Fanout交換類型。可以通過直接和話題交換來實現路由。)

對於Java示例(可以很容易地轉換爲C#)請參見here

編輯: 更新.NET版本可以發現here

+0

只是將java代碼更改爲c#並且它工作正常。謝謝。 – 0x49D1 2011-05-29 10:00:55

3

我已經添加了這個Getting Started With RabbitMQ in .net

+0

謝謝 - 到目前爲止,您的例子是我見過的唯一一個在.NET中進行異步訂閱的例子。在委託上調用Invoke似乎是「復古」 - 有沒有更好的方法? – TrueWill 2011-10-12 16:37:55