0
我正在與天青服務總線隊列工作在使用兩個隊列的請求/響應模式和一般它運作良好後。我使用了我找到的一些很好的例子中非常簡單的代碼。我的隊列在網絡和工作者角色之間,使用MVC4,Visual Studio 2012和.NET 4.5。消息在天青服務總線隊列保留在隊列到期時間
在一些壓力測試,我結束了我的過載系統和客戶端放棄之前的一些響應不交付(我會解決,這個問題不是重點)。
發生這種情況時,我最終留在我的響應隊列許多消息,都遠遠超過其ExpiresAtUtc
時間。我的消息TimeToLive
已設置5分鐘。
當我在隊列看看屬性的消息是,它明確規定在過去的到期,用5分鐘的傳輸TimeToLive。
創建隊列,如果不與下面的代碼存在的話:
namespaceManager.CreateQueue(
new QueueDescription(RequestQueueName)
{
RequiresSession = true,
DefaultMessageTimeToLive = TimeSpan.FromMinutes(5) // messages expire if not handled within 5 minutes
});
什麼會導致郵件留在不久後它被設置爲過期隊列?
那麼這很有趣,而不是我所期望的。雖然我不斷地在隊列中收到新的回覆,但如果它按照您的建議工作,應該清除已過期的郵件。我使用「AcceptMessageSessionAsync」接收會話消息。這可以忽略/跳過過期的消息嗎?此外,我現在用的是服務總線資源管理器應用程序[鏈接](http://code.msdn.microsoft.com/windowsazure/Service-Bus-Explorer-f2abca5a)監視的隊列,並選擇接收所有郵件菜單項只拉來自隊列的一條消息。 –
偉大的問題,我不能肯定地說。據我所知,這種行爲是無證的。不難想象,會話確實影響接收處理哪些消息。但最終,如果你實際上沒有收到信息,你真的關心他們是否在那裏?另一個建議可能是設置EnableDeadLetteringOnMessageExpiration = true,看看是否改變了行爲,但是你有一個你需要傾向於自己的死信隊列。 –
感謝您的補充評論。在我的情況下,我確實在乎有消息堵塞隊列,因爲其中有許多有負載。最終我的隊列將填滿。我會試驗死去的字母,看看會發生什麼。 –