我有一个 MassTransit Consumer,平均应在 15-20 分钟内完成其消息。
我正在使用 Azure.ServiceBus.Core 传输。
消息将通过所有配置的业务逻辑成功运行,但在消息完成后,消息会出现
MassTransit.MessageLockExpiredException
故障。
我尝试设置 MaxAutoRenewDuration 和 LockDuration
x.UsingAzureServiceBus((context, cfg) =>
{
cfg.Host(hostContext.Configuration["AzureServiceBus_ConnectionString"]);
cfg.UseConsumeFilter(typeof(ConsumeContextFilter<>), context);
cfg.ConfigureEndpoints(context);
cfg.MaxAutoRenewDuration = TimeSpan.FromMinutes(30);
cfg.LockDuration = TimeSpan.FromMinutes(30);
});
我看到您正在尝试将锁定持续时间设置为 30 分钟,让我解释一下为什么这是不可能的。
服务总线消息的最长锁定持续时间为 5 分钟,请参阅服务总线文档的本节。解决这个问题的方法是在锁过期之前(即 5 分钟过去之前)更新锁。