【发布时间】:2021-12-17 15:52:43
【问题描述】:
我们在多次读取来自 Azure ServiceBus 的消息时遇到了一些问题。以前我们有同样的问题,结果是由于锁定超时。然后,随着锁超时,消息被再次读取,并且每次读取消息时它们的deliveryCount 增加1。在此之后,我们将最大传递计数设置为 1 以避免重新发送消息,并将锁定超时时间增加到 5 分钟。
当前的问题要奇怪得多。
首先,在 10:45:34 读取消息。消息锁设置为 10:50:34,deliveryCount 为 1。读数显示成功,时间为 10:45:35.0。到目前为止一切顺利。
但是,在 10:45:35.8,再次阅读了相同的消息!而且delivery count还是1。两个receive log中的sequence number和message id都是一样的。这种情况发生在极少数消息中,例如 0.02% 的消息。
据我了解,阅读消息应该会导致成功删除消息,或者增加deliveryCount,在我的情况下应该将消息发送到DLQ。在这些情况下,两者都不会发生。
我正在使用 ServiceBusTrigger,如下所示:
[FunctionName(nameof(ReceiveMessages))]
public async Task Run([ServiceBusTrigger(queueName: "%QueueName%", Connection = "ServiceBusConnectionString")]
string[] messages,
这似乎是服务总线或库中的一个错误,有什么想法吗?
【问题讨论】:
-
是否为此队列启用了会话?
-
@ThiagoCustodio 我认为没有启用会话。会话是“事务性”读取的先决条件吗?
标签: c# azure azureservicebus azure-webjobs