gpt4 book ai didi

azure-web-app-service - WebJobs 不重试失败的队列消息

转载 作者:行者123 更新时间:2023-12-04 15:57:47 24 4
gpt4 key购买 nike

我在使用新的 0.3.0-beta WebJobs SDK 的 WebJob 中有以下逻辑。当我的代码处理消息失败时,Azure 仪表板会显示一个聚合异常(这是有道理的,因为这是异步的)。但是,它不会重试处理消息。

很小的documentation我已经能够找到表明应该在失败后 10 分钟内重试该消息的指示。新的 SDK 不是这样吗?

public static Task ProcessMyMessageAsync(
[QueueTrigger(Config.MY_QUEUE)] string msg,
int dequeueCount,
CancellationToken cancellationToken)
{
var processor = Config.Container.GetInstance<IMessageProcessor>();
return processor.HandleJobAsync(msg, dequeueCount, cancellationToken);
}

我得到的异常源于 SQL 超时异常(它是我代码中针对 SQL Azure 的数据库查询):
System.AggregateException: System.AggregateException: One or more errors occurred. 
---> System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details.
---> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
---> System.ComponentModel.Win32Exception: The wait operation timed out

最佳答案

您应该设置 MaxDequeueCount。

JobHostConfiguration jobHostConf = new JobHostConfiguration();
jobHostConf.Queues.MaxDequeueCount = 10;
var host = new JobHost(jobHostConf);
host.RunAndBlock();

在将消息放入死信/坏信队列之前,这将重试 10 次。

您还可以在函数中使用自定义重试策略。我建议你看看“ transient 故障处理应用程序块” https://msdn.microsoft.com/en-us/library/hh680934(v=pandp.50).aspx

或者您可以使用 SqlAzureExecutionStrategy 在 EF 中启用重试
https://msdn.microsoft.com/en-us/data/dn456835.aspx

关于azure-web-app-service - WebJobs 不重试失败的队列消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24452061/

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