2013-03-08 59 views
9

我遇到Azure消息總線隊列問題。Windows Azure MessageLockLostException

我遇到了MessageLockLostException拋出和請求操作未在00:01:10的分配超時內完成。分配給此操作的時間可能是更長時間的一部分

我已將我的隊列設置爲ReceiveMode.PeekLock

我還檢查

if(message.LockedUntilUtc.Minute <= 1) 
    message.RenewLock(); 

爲什麼會出現這種情況,是什麼導致了鎖給了呢?我從你收到的地方默認讀了5分鐘的地方讀書。這個過程通常需要更長的時間。我想續訂鎖定,但這不太好。

+0

難道是我還是你的信息沒有告訴你你的鎖定超時是1:10(70秒)?該配置在創建隊列時設置。 – 2013-03-08 22:35:59

回答

16

LockDuration是隊列的屬性。您通常在創建隊列時進行設置。這是Queue級別的屬性,不能在消息庫中進行更改。你讀過的,很可能是說這段時間不能超過5分鐘。默認值是1分鐘,這就是爲什麼你面臨問題。爲什麼你在70秒後面對它 - 我假設檢查這個條件的邏輯是每10秒執行一次。

因此,我建議您創建或修改您的隊列以將LockDuration屬性設置爲5分鐘。然後,在適當的時候,您的郵件正在工作RenewLock

+1

啊,謝謝!這更有意義! 有關其他信息:QueueDescription是LockDuration存在的位置。 – Styles 2013-03-09 02:14:44

+2

請注意,從管理門戶創建隊列時的默認值爲30秒。 – ken2k 2015-05-06 16:27:11