[英]After updating webjob(Microsoft.Azure.WebJobs) package to version 3.0.16 explicit deadletter is not happening
使用以前的 2.3.0 版本的 webjob 显式死信是可能的。
下面是示例代码
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.ServiceBus;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
public static class Program
{
static ISubscriptionClient subscriptionClient;
public static void Main()
{
var builder = new HostBuilder();
builder.ConfigureAppConfiguration(c =>
{
c.AddJsonFile("appsettings.json");
});
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddServiceBus(sbOptions =>
{
sbOptions.MessageHandlerOptions.AutoComplete = false;
sbOptions.MessageHandlerOptions.MaxConcurrentCalls = 5;
});
});
var host = builder.Build();
using (host)
{
host.Run();
}
}
public static async Task ProcessQueueMessage(
[ServiceBusTrigger("topic_name", "subscription_name")] Message message, TextWriter log)
{
subscriptionClient = new SubscriptionClient("connection_string", "topic_name", "subscription_name");
await subscriptionClient.DeadLetterAsync(message.SystemProperties.LockToken);
await subscriptionClient.CloseAsync();
}
}
使用以前的 webjob(2.3.0 版) JobHostConfiguration() 显式死信是可能的,并且使用 HostBuilder() 的最新版本 3.0.16 没有发生显式死信,它会重试直到达到最大传递计数,然后向死信发送消息,这应该不是预期的行为,一旦调用 DeadLetterAsync(),消息应该 go 到死信。 在 .net 框架和 .net 内核中都可以观察到它。 也可以通过使用 MessageHandlerOptions 来实现不使用 webjob 配置显式死信。 您能否让我知道如何使用最新版本的 webjob 配置明确地死信。
显式死信是 Azure 服务总线 SDK 功能,而不是 WebJobs。 您仍然可以这样做,但使用需要在 function 签名中指定的MessageReceiver
。 对消息的所有操作都是通过 ASB SDK track 2 中的消息接收器完成的。这是一个示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.