我剛剛開始使用Windows Azure服務總線(主題&隊列),我試圖實現競爭消費者消息傳遞模式。Azure服務總線中的競爭消費者消息傳遞模式
從本質上講,我想有一組消息生產者和一組消息消費者的。一旦生成消息,我想讓第一個可用的消費者處理消息。沒有其他消費者應該收到消息。
有沒有辦法在Azure中做到這一點?
我剛剛開始使用Windows Azure服務總線(主題&隊列),我試圖實現競爭消費者消息傳遞模式。Azure服務總線中的競爭消費者消息傳遞模式
從本質上講,我想有一組消息生產者和一組消息消費者的。一旦生成消息,我想讓第一個可用的消費者處理消息。沒有其他消費者應該收到消息。
有沒有辦法在Azure中做到這一點?
那麼你可能不想要話題,而是Brokered Messaging。
通過使用消息的標籤和/或內容類型屬性以及PeekLock接收模式,您可以模擬代理消息中的類似主題的功能。
主題是中介消息的一個功能,但是是一對多的「發佈/訂閱」模式。隊列是一對一的消息通信。所以是的,這聽起來像你應該簡單地使用隊列。另見http://msdn.microsoft.com/en-us/library/hh689723(VS.103).aspx。
隊列是一對一的消息通信,因爲消息將被傳遞給一個接收者。但是,沒有什麼能夠阻止您讓多個接收器同時在同一隊列中偵聽,以啓用您提到的場景。 – 2012-05-10 21:10:33
簡單。只需讓兩個(或更多)接收器同時從單個隊列中接收,即可完成。任何檢索到的消息都只能到達其中一個接收者,因爲在發送消息時,消息日誌上的光標會提前。競爭的消費者是網絡排隊的固有能力,所以沒有什麼特別需要。
如果您需要相反的信息 - 每條消息都發送給每個消費者 - 您爲每個消費者制定一個標識符,這將爲您提供一個獨立於其他接收者的獨立消息日誌。對於踢球,你顯然也可以讓競爭的消費者進行訂閱。
Clemens
不確定我看到你如何讓訂閱上的競爭消費者。這是使用過濾器來完成的嗎?你能解釋一點還是指向更多信息? – 2013-01-13 15:17:03
每封郵件的背後是什麼樣的/多少工作?你有什麼時間限制? – 2012-04-09 19:57:25
@Simon理想情況消費者將在消息生成時間的10-30ms內開始處理消息。如果生產者推出消費者,我會增加更多消費者以滿足需求。 – JoeGeeky 2012-04-09 20:40:54