2012-04-10 105 views
0

我有一個調度程序和Azure中的一些工作人員。調度程序將消息放入一個隊列中,工作人員將這些消息拉入並處理它們。我現在剛剛進入了一個場景,在達到某個閾值後,我需要將一些數據從表存儲移動到我們的數據庫。這些項目需要按順序處理,最早最早。一旦達到該閾值,所有其他項目都將按順序處理。當前觸發傳輸的消息需要填入行尾並進行重新處理。將消息重新發送回Azure隊列有任何問題

所以,我的問題的肉......

是否精細簡單地重新發送消息到隊列中的還是有一個潛在的針對導致問題嗎?

queueProvider.SendMessage(message); 

一位同事提到,他「儘管他可能讀了一些關於需要做一些特別的東西。」我還沒有看到任何證實他的懷疑卻然而所以我想我會姿這裏的問題只是爲了安全。

回答

1

簡單的答案是,它很好。如果你有一個CloudQueueMessage,你可以將它發送到任何隊列(這只是一天結束時的REST請求)。每次AddMessage()時,它會創建一個新的ID(可能是同一個彈出式收據,但這並不重要)。話雖這麼說,有可能是您想照顧和或調查一些事情:

  1. 如果你把一個消息到一個隊列,彈出它,並推到另一個隊列或同一個隊列,你或許應該刪除第一條消息離開隊列。只是彈出它意味着你已經設置了隱形時間,但它會很快重新出現(現在你在每個隊列上都有相同的消息內容)。所以,如果我彈出一條消息並立即再次推送它,現在我在隊列中有兩條消息具有相同的內容。
  2. 您現在可以更新消息。如果您需要訂購,這可能適合您。您可以在消息本身的元數據或內容中指明它處於什麼階段,並且您可以通過周到的實現在此處訂購。
+0

感謝您的回答! – 2012-04-10 17:39:37

-1

建議隊列使用者內部的所有邏輯都是冪等的,因爲消息實際上可以被多次拾取。我們必須記住,隊列服務保證一個消息將被傳遞,至少一次 - 所以你最終可以用這種方法複製消息。

相關問題