我正在尝试在Azure ServiceBus中实现“消息延迟”模式,但在让一个基本的示例正常工作时遇到了问题。我使用的是Microsoft.Azure.ServiceBus v5.0.0,并遵循了this SO question和this Microsoft Documentation的建议。
// Send a message
var sender = new MessageSender("my_sb_connection_string", "my_queue_name", RetryPolicy.Default);
await sender.SendAsync(new Message());
// Receive the message, defer it and then receive the deferred message
var receiver = new MessageReceiver("my_sb_connection_string", "my_queue_name",
ReceiveMode.PeekLock, RetryPolicy.Default);
var msg = await receiver.ReceiveAsync();
await receiver.DeferAsync(msg.SystemProperties.LockToken);
var deferredMsg = await receiver.ReceiveDeferredMessageAsync(msg.SystemProperties.SequenceNumber);每次我调用ReceiveDeferredMessageAsync()时,都会得到一个异常:
Microsoft.Azure.ServiceBus.MessageNotFoundException: Messages not found. One or more sequence numbers missing. 我确信我做错了一些简单的事情,但我看不出可能是什么。
发布于 2020-10-02 23:50:51
问题原来是我将队列的“最大传递计数”设置为1-消息进入DLQ (显然)是因为它达到了最大传递计数。
将Max Delivery Count更改为大于1的值允许` `DeferAsync()调用正确地将邮件标记为延迟。
对我来说,这似乎是一个错误。https://github.com/Azure/azure-service-bus/issues/375
https://stackoverflow.com/questions/64172829
复制相似问题