2017-09-27 161 views
1

我有一個WebJob從服務總線獲取消息正在工作正常。如果Webjob無法完成或拋出異常,則消息將發送回隊列中,這本身就很好。Azure WebJob服務總線重新排隊隊列出現錯誤

我已經將MaxDequeueCount設置爲10,如果在某些情況下失敗,它將不會再出現問題,因爲它會嘗試再次處理它。但問題是,消息似乎被髮送到隊列的底部,並且在我們回到第一個失敗的消息之前處理其他消息。

我想每次處理一條消息,因爲我可能會在同一個實體中連續進行多個更新。如果訂單發生變化,它會以錯誤的順序更新實體。

是否可以在錯誤時將隊列發送回隊列中,或者繼續處理相同的消息,直到達到MaxDequeueCount?

回答

0

理想情況下,您不應該依賴消息順序。

根據您的要求,您可能會使用Azure服務總線Sessions的FIFO語義。當在會話中處理消息並且消息是中止時,它將被再次處理,而不是進入隊列末尾。你需要記住以下幾點:

  1. 只能在一個時間
  2. 處理一個消息需要會話中使用
  3. 如果消息沒有完成不會中止,它會留下掛在隊列中,當會話重新啓動時將被拾取。
相關問題