MessageLockLostExceptions我在处理消息时不断收到。
我将 Microsoft.Azure.ServiceBus 3.2.0 与 .NET Core 2.1 一起使用。
我有一个LockDuration设置为 30 秒的队列,其中已经包含许多要处理的消息。
我从https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues#receive-messages获取了非常基本的消息接收教程代码-from-the-queue,效果很好。
LockDuration现在我想通过添加来模拟一个运行时间稍长的消息处理任务(但仍然在Task.Delay(10_000). 但随后我MessageLockLostException每 4 条消息都会收到一条。
即使我设置MaxAutoRenewDuration = TimeSpan.FromDays(30)and也会发生这种情况PrefetchCount = 0。
这是消息处理方法,我稍作改动以打印出剩余的锁定持续时间:
private static async Task processMessagesAsync(Message message, CancellationToken token)
{
Console.Write($"Received message: {message.SystemProperties.SequenceNumber}. Remaining lock duration: {message.SystemProperties.LockedUntilUtc - DateTime.UtcNow}");
await Task.Delay(10000);
await queueClient.CompleteAsync(message.SystemProperties.LockToken);
Console.WriteLine(" - Complete!");
}
完整代码在这里:https ://pastebin.com/sFGBgE0s
MM们
犯罪嫌疑人X
相关分类