Azure Service Bus队列-由于对象的当前状态,操作无效

问题描述 投票:0回答:1

我正在.net核心应用程序之一中使用Azure Service Bus队列,以FIFO顺序从队列接收消息。一旦从队列接收到消息,那么我将处理每条消息的业务逻辑。处理完每条消息的业务逻辑后,我尝试使用以下代码行从Queue中删除消息:

await _messageReceiver.CompleteAsync(message.SystemProperties.LockToken);

但是对于一些消息,我无法从Queue中删除消息。因为即使我在服务总线队列上配置了“锁定持续时间” 3分钟,对消息的锁定也已过期。

从服务总线队列中删除/完成消息时出现以下错误:

异常类型:System.InvalidOperationException

异常消息:由于对象的当前状态,操作无效。

这些是我在Azure Service Bus队列上配置的属性:

Max Delivery Count =1
Lock Duration=3 minutes
azure asp.net-core-2.0 azure-servicebus-queues dead-letter
1个回答
0
投票

由于某些原因,您无法删除Azure Service Bus队列中的消息。

具有锁定持续时间的挑战

第一个挑战是时间,特别是每条消息一旦检索就锁定时间。问题是消息必须显示在UI中,然后为客户提供时间选择要重新提交或删除的消息。解决方案是要求客户增加锁定时间,但是由于多种原因,这是不可能的。首先,由于客户的整合,可能无法增加锁定时间,因此我们不能依靠它。

Read more on this blog post关于如何克服挑战。

© www.soinside.com 2019 - 2024. All rights reserved.