Использование сообщения, опубликованного с помощью 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 (на стороне потребителя).Может быть, я что-то упустил ...