Обмен сообщениями NServiceBus с собственной реализацией Azure Service Bus - PullRequest
0 голосов
/ 12 февраля 2019

Использование сообщения, опубликованного с помощью NServiceBus, с использованием IQueueClient / Functions-ServiceBusTrigger (Microsoft.Azure.ServiceBus)

Я работаю в WebJob, используя .NET Core и Microsoft.Azure.ServiceBus, чтобы получить сообщениеэто было опубликовано отдельным сервисом, использующим 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)
   {
      ...
   }
}

Я ожидал, что эта логика будет использовать сообщения, опубликованные в очереди, но пока сообщения перемещаются на счет мертвых букв сDeadLetterReason: MaxDeliveryCountExceeded и описание ошибки Message could not be consumed after 10 delivery attempts, которое дает мне указание на то, что по крайней мере есть попытка доставить эти сообщения моему потребителю.

К сожалению, это все, что у меня есть с точки зрениясообщения об ошибках / журналы (я нахожусь в процессе настройки некоторых журналов с моей панели мониторинга Azure и вижу, могу ли я получить более подробные журналы)

Кто-нибудь сталкивался со сценарием о необходимости использования сообщений, которые имеютбыл опубликован с NServiceBus, используя Microsoft.Azure.ServiceBus вместо NServiceBus (на стороне потребителя).Может быть, я что-то упустил ...

...