使用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)
{
...
}
}
我期望该逻辑将消耗队列中发布的消息,但到目前为止,这些消息已通过DeadLetterReason
:MaxDeliveryCountExceeded
和错误描述{{1 }}的迹象表明,至少有人试图将这些消息传递给我的消费者。
不幸的是,就错误消息/日志而言,这就是我的全部(我正在从Azure仪表板设置一些日志,看看是否可以获得更详细的日志)
是否有人遇到了使用Microsoft.Azure.ServiceBus而不是NServiceBus(在用户端)使用NServiceBus发布的消息的情况。也许我想念一些东西...