gpt4 book ai didi

c# - Azure ServiceBus - 多次读取同一消息

转载 作者:行者123 更新时间:2023-12-03 00:20:36 25 4
gpt4 key购买 nike

我们在多次读取来自 Azure ServiceBus 的消息时遇到一些问题。之前我们也遇到过同样的问题,结果是由于锁超时造成的。然后,当锁超时时,消息会被再次读取,并且每次读取消息时,deliveryCount 都会增加 1。之后,我们将最大发送次数设置为 1,以避免重新发送消息,并将锁定超时时间增加到 5 分钟。

当前的问题比较奇怪。

首先,消息在 10:45:34 读取。消息锁设置为 10:50:34,deliveryCount 为 1。读取结果表明成功,时间为 10:45:35.0。到目前为止一切都很好。

但是,在 10:45:35.8,同样的消息再次被读取!并且投递计数仍然是1。两个接收日志中的序列号和消息id都是相同的。这种情况发生在极小比例的消息中,例如 0.02% 的消息。

根据我的理解,读取消息应该会成功(消息应该被删除),或者增加deliveryCount(在我的例子中应该将消息发送到DLQ)。在这些情况下,这两种情况都不会发生。

我正在使用 ServiceBusTrigger,如下所示:

    [FunctionName(nameof(ReceiveMessages))]
public async Task Run([ServiceBusTrigger(queueName: "%QueueName%", Connection = "ServiceBusConnectionString")]
string[] messages,

这似乎是服务总线或库中的错误,您对它可能是什么有什么想法吗?

最佳答案

这不是 SDK,而是特定的实体。听起来实体已损坏。删除并重新创建它。如果这没有帮助,请打开支持案例。

另一方面,大多数情况下,当交付计数设置为 1 时,表明出现了问题。如果您确实需要最多一次交付保证,请使用ReceiveAndDelete模式而不是PeekLock

关于c# - Azure ServiceBus - 多次读取同一消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69821952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com