gpt4 book ai didi

c# - 尽管 WebJobs SDK 处理程序已成功完成,但服务总线消息仍被放弃

转载 作者:行者123 更新时间:2023-11-30 14:51:50 31 4
gpt4 key购买 nike

我使用 WebJobs SDK 将一个长时间运行的进程实现为 WebJob。等待长时间运行的过程,因为我想要结果。

public async Task ProcessMessage([ServiceBusTrigger("queuename")] MyMessage message)
{
await Run(message.SomeProperty); // takes several minutes
// I want to do something with the result here later..
}

我不明白为什么消息 sometimes 被放弃,这当然会再次触发处理程序。我已经尝试调试(本地),在 ProcessMessage 完成之前设置断点,我可以看到它似乎已成功完成。

WebJobs SDK 的服务总线部分负责消息锁更新,据我所知,这应该不是问题。

我遗漏了什么以及如何解决问题?

最佳答案

[编辑之前不正确的回复]

WebJobs SDK 依赖于 MessageReceiver.OnMessageAsync 完成的自动锁更新。这些续订受 OnMessageOptions.AutoRenewTimeout 的约束。设置,可以在 WebJobs SDK 的 v1.1.0 版本中像这样配置:

JobHostConfiguration config = new JobHostConfiguration();

ServiceBusConfiguration sbConfig = new ServiceBusConfiguration();
sbConfig.OnMessageOptions = new OnMessageOptions
{
MaxConcurrentCalls = 16,
AutoRenewTimeout = TimeSpan.FromMinutes(10)
};

config.UseServiceBus(sbConfig);

您还可以通过自定义 MessageProcessor 自定义这些值。查看release notes here有关这些新功能的更多详细信息。

关于c# - 尽管 WebJobs SDK 处理程序已成功完成,但服务总线消息仍被放弃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33391888/

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