繁体   English   中英

将 webjob(Microsoft.Azure.WebJobs) package 更新到版本 3.0.16 后没有发生显式死信

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM