与Azure Service Bus的本机实现交换NServiceBus消息

时间:2019-02-12 03:10:17

标签: c# nservicebus azureservicebus

使用IQueueClient / Functions-ServiceBusTrigger(Microsoft.Azure.ServiceBus)消耗通过NServiceBus发布的消息

我正在使用.NET Core和Microsoft.Azure.ServiceBus在WebJob中工作,以使用由单独的服务使用NServiceBus发布的消息。我使用此WebJob的最初方法是将类Functions.cs与方法ProcessMessage一起使用,该方法使用属性ServiceBusTrigger

以下是我的Function.cs的示例:

public class Functions
{
   public Task ProcessAuditLogMessage([ServiceBusTrigger("MyQueue")] 
      Message message)
   {
      var messageBody = Encoding.UTF8.GetString(message.Body);
      var auditLogMessage = JsonConvert
            .DeserializeObject<MyMessage>(messageBody);

      _logger.Information("Hello World");

      return Task.CompletedTask;
    }
}

Program.cs中,我有:

class Program
{
   static async Task Main()
   {
      var serviceCollection = new ServiceCollection();
      serviceCollection.AddWebJobs(o => o.AllowPartialHostStartup = true);

      var builder = new HostBuilder()
         .UseServiceProviderFactory(
              new AutofacServiceProviderFactory(serviceCollection))
         .ConfigureContainer<ContainerBuilder>(b =>
         {
            BuildAutofacContainer();
         })
         .ConfigureWebJobs(b =>
         {
            b.AddServiceBus(o =>
            {
               o.ConnectionString = configProvider.AuditLogServiceBus;
             });
          });

      var host = builder.Build();

      using (host)
      {
         await host.RunAsync();
      }
   }

   private static IContainer BuildAutofacContainer(IServiceColletion 
          serviceCollection)
   {
      ...
   }
}

我期望该逻辑将消耗队列中发布的消息,但到目前为止,这些消息已通过DeadLetterReasonMaxDeliveryCountExceeded和错误描述{{1 }}的迹象表明,至少有人试图将这些消息传递给我的消费者。

不幸的是,就错误消息/日志而言,这就是我的全部(我正在从Azure仪表板设置一些日志,看看是否可以获得更详细的日志)

是否有人遇到了使用Microsoft.Azure.ServiceBus而不是NServiceBus(在用户端)使用NServiceBus发布的消息的情况。也许我想念一些东西...

0 个答案:

没有答案