2016-08-17 42 views
0

我們正面臨服務總線的問題。使用重複檢測時,Azure服務總線延遲(預定)消息的主題丟失

  1. 我們有一個主題,兩個訂閱。
  2. 我們啓用了重複檢測,時間爲1分鐘(首先嚐試2秒)。我們使用重複檢測,以避免在短的時間間隔處理的多個消息(以維持消息之間的間隔)
  3. 我們使用消息調度(ScheduledEnqueueTimeUtc)以重複的消息後5分鐘出現,用相同的消息ID (每一次新的消息與計劃創建,並在完成舊消息)
  4. 的工作流程如下(問題):
    • 第一時間的消息發佈(無調度)
    • 這消息是直接的消息泵消耗的新消息,並且具有相同詳細信息和5分鐘的時間表的新消息被髮送到主題(UTC),期望它在5分鐘後出現
    • 消息未出現在訂閱
  5. 調試時,這個問題不上來
  6. 當我們發送首先消息,至少有30秒的延遲(計劃),那麼它如果我們重新創建主題,訂閱工作正常
  7. 關閉重複檢測功能後,我們可以使用上述工作流程

由於我們對正在發生的事情對所發佈的消息沒有任何線索,我們需要幫助確定問題的根源。

回答

0

這是ASB的預期行爲。 當計劃消息時,它實際上排隊在代理上,並且延遲了外觀。服務器端的ASB在到達時消除重複消息,並使用消息ID進行重複消除。

在你的情況,如果你延遲第二消息和原始消息的調度處理,就會有什麼可消除重複和第二個消息將被排隊。如果您沒有延遲,那麼代理將看到與先前發送的消息相同的ID,該消息尚未完成或DLQ尚未消失,並且將被刪除。

可能的方法是而不是重複使用相同的傳輸消息ID(ID用於BrokeredMessage)。如果您需要關聯消息,則可以使用Properties

+0

部分解釋行爲。所以我會將其標記爲答案。但是原始問題中的第6點仍未正確解釋 – Abhilash

+0

如果您可以提供複製代碼的鏈接,那麼我可以幫助您解決這一問題。 –

相關問題