2013-07-11 138 views
3

我們希望能夠在存儲項目狀態的服務總線隊列中斷消息中保存屬性;所以在出於某種原因重新處理項目的情況下,我們有一個記錄指出了它在過程中的位置(改進我們的重試邏輯)。在Azure服務總線隊列上更新已中斷的消息

因此,我們必須從隊列中拿起一個項目下面的代碼:

var brokeredMessage = 
    _queueClient.Receive(TimeSpan.FromSeconds(DEFAULT_WAIT_TIME_IN_SECONDS)); 

然後,我們要調整一個屬性,因此它擁有一個狀態枚舉像這樣:

brokeredMessage.Properties.Add("Status", MessageStatusEnum.MessageReceived); 

是有可能在這樣的Brokered Message中保留一個新/更新屬性,是否需要調用其他方法,或者在接收到屬性後所做的任何更改會丟失嗎?

回答

3

今天我們沒有能力更新和現有的隊列中的中介消息。您可以將屬性添加到現有的中介消息,但僅限於在對消息本身執行AbandonDeadLetter操作時。請參閱http://msdn.microsoft.com/en-us/library/windowsazure/jj673129.aspx

我們確實支持想要通過MessageSession存儲工作流程/消息組進度的方案。這裏基本上,您啓用Sessions爲隊列/訂閱,然後而不是處理消息您稱AcceptMessageSession。消息的SessionID屬性將決定它屬於哪個會話。每個會話都有一個可用狀態,您可以通過GetStateSetStateMessageSession進行訪問。所有這些操作也支持事務處理,以保證強大的一致性。以下是演示使用會話和會話狀態的示例: http://code.msdn.microsoft.com/Brokered-Messaging-Session-41c43fb4

+0

很好的答案謝謝! –

相關問題