簡體   English   中英

在 Azure Function v1 中將 BrokeredMessage 移動到死信后出現 MessageLockLostException

[英]MessageLockLostException after moving BrokeredMessage to dead letter in Azure Function v1

我有一個通過服務總線主題觸發的 Azure Function v1。 如果發生任何錯誤,我會將 BrokeredMessage 放入死信。 它似乎有效,但之后我在函數的日志流中看到以下內容:

2019-11-19T10:49:31.382 [錯誤] MessageReceiver 錯誤(操作=完成):Microsoft.ServiceBus.Messaging.MessageLockLostException:提供的鎖無效。 鎖已過期,或者消息已從隊列中刪除。

以下是我將 BrokeredMessage 置於死信中的方式:

myBrokeredMessage.DeadLetter(deadLetterReason, exception.Message);
// after this I have tried following but doesn't work:
// 1. do nothing
// 2. myBrokeredMessage.Complete();
// 3. myBrokeredMessage.Abandon();

我的 Function 運行良好。 但是在它運行並執行上述代碼之后,該錯誤似乎會記錄流式傳輸。 它似乎在做我想要的(將 BrokeredMessage 放入死信隊列),但該錯誤似乎並不好,我想修復它。 我想我沒有正確處理某種鎖。

我應該怎么做才能修復該錯誤?

我應該怎么做才能修復該錯誤?

這更像是一個警告而不是錯誤。 函數的設計方式是默認情況下 function 完成或死信消息。 如果您控制傳入消息發生的情況,Functions 運行時不會,它仍然會嘗試應用完成邏輯,因為從它的角度來看,用戶代碼沒有拋出異常,因此傳入消息應該被視為已成功處理並完成。

使用Functions 2.x有一個主機設置,您可以打開它以允許手動完成並禁用自動完成。 這在 v1.0 中不可用,因此您必須忽略記錄的錯誤。 或者,升級到 2.x。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM