2015-11-05 172 views
0

我不明白。AZURE服務總線如何使用訂閱消息來處理消息?

假設我有一個球隊,一個主題,一個子球。和三個客戶訂閱。

我發送消息。

第一個客戶端收到一條消息並調用complete()動作。

第二個客戶端會收到一條消息嗎?

如果有客戶訂閱了它,該怎麼辦?

問題是 - 什麼時候將消息完全從queve/topic/subscription中刪除?

P.S. 「一對一」的案例很清楚。

回答

0

我會建議您查看競爭消費者模式。 (https://msdn.microsoft.com/en-us/library/dn568101.aspx?f=255&MSPPError=-2147217396)。

您可以有許多角色(即Azure Worker Role)檢查隊列中的消息(競爭消費者),並在處理時專門鎖定它們。每個角色都在爲消息而奮鬥,而第一個抓住它的人(偶然),目前它是「獨佔」的。如果獲取並處理消息的消費者成功,則運行Complete()方法,否則執行Abandon(消息)。 Complete()完成了它,並且Abandon將它拋回到競爭消費者的狂熱中。如果你身體健康,你甚至可以再次抓住它!

您可以在Azure管理門戶中設置死信息參數,以確定可以爲其他用戶重新引入的次數。在某些情況下,事情不能正常工作,所以殺掉消息以便其他消息可以繼續暢通無阻。

讓我知道你是否有更具體的需求。很樂意提供幫助。這種模式非常有效。

最要好的問候...

相關問題