在具有触发器的Webjob中,我想管理重试计数,因为我需要在最后一次重试计数时执行一些操作,如果仅执行try-catch,我将失去重试机制,而我等不及消息中毒了,因为在blob中,所有监听blob的作业的所有消息都会触发到同一队列,直到读取所有队列,我才知道有毒消息从何而来! / p>
那么有什么主意(如果可能的话)获得此重试计数?
答案 0 :(得分:1)
您可以通过“队列”配置中的maxDequeueCount
设置来控制最大重试次数。之所以影响Blob函数,是因为在后台使用了控制队列来将Blob调度到您的函数。
以下是配置队列的示例代码,您可以在其中配置maxDequeueCount
,默认数字应为5。这是doc链接:Queue storage trigger configuration。
static void Main()
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage(a => {
a.BatchSize = 8;
a.NewBatchThreshold = 4;
a.MaxDequeueCount = 4;
a.MaxPollingInterval = TimeSpan.FromSeconds(15);
});
});
var host = builder.Build();
using (host)
{
host.Run();
}
}