gpt4 book ai didi

azure-functions - 使用 Azure Functions ServiceBus 触发函数在 BrokeredMessage 上调用 .Complete 或 .DeadLetter

转载 作者:行者123 更新时间:2023-12-04 07:15:29 25 4
gpt4 key购买 nike

我正在使用服务总线队列触发功能。

当我们手动(并且至关重要地立即)DeadLetter BrokeredMessage 时,它​​确实进入了死信队列。
但是,运行时报告以下错误:

The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue



示例函数:
[FunctionName("MySbFunction")]
public static async Task Run(
[ServiceBusTrigger("topic-name", "subscription-name", AccessRights.Manage, Connection = "xxx")] BrokeredMessage msg,
ILogger log)
{
await msg.DeadLetterAsync();
}

如果我们 .CompleteAsync(); 也会发生同样的情况而是消息 - 消息已完成,但运行时会引发错误。

我理解死信消息的正常方法是在执行期间抛出异常,导致函数失败,重试消息。

我对这种方法的问题是有时消息是不可恢复的——尝试 x 次不会产生另一个结果。

我想 .CompleteAsync();的原因一条消息要重试:
我可以:
  • .Clone();原创 BrokeredMessage
  • 设置为ScheduledEnqueueTimeUtc属性(property)。
  • .CompleteAsync();原文
  • 将克隆的消息放回队列中(通过输出绑定(bind))

  • 这在技术上是可行的,但是当在预期流程之外完成消息时,运行时仍会报告上述错误。

    最佳答案

    问题是运行时自己管理服务总线消息完成,调用 Complete成功调用后或Abandon在异常情况下。

    有一个 feature request选择退出此类行为并在函数内手动管理完成。修复已实现,我不确定它是否在当前运行时中,但文档尚未更新。

    按照上面的问题了解状态。

    关于azure-functions - 使用 Azure Functions ServiceBus 触发函数在 BrokeredMessage 上调用 .Complete 或 .DeadLetter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51881103/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com