NServiceBus、Azure 服务总线、消息消失且未被使用

NServiceBus, Azure Service Bus, messages vanishing and not getting consumed

我在 Azure 中托管了两个云服务工作者角色,一个使用 NServiceBus(Azure 服务总线传输)使用消息,另一个生成消息。

昨天,当队列中仍有大量消息时,我部署了新版本的生产者工人角色,因为我们正在处理早上遗留下来的大量消息。当生产者启动时,它似乎已经清空(或可能重新创建)队列,并且丢失了许多重要的生产消息。这看起来很奇怪,但是日志显示大约在生产者角色开始时,消费者没有进一步处理消息,我们可以肯定地知道那里有几百条消息在等待。

启动消息生成器是否可能会重新创建或清空目标队列?如果是这样,我如何配置 NServiceBus 从不这样做?

谢谢。

不,NServiceBus 永远不会删除队列,甚至不会删除源队列,请随时在 https://github.com/Particular/NServiceBus.AzureServiceBus/tree/master/src 搜索代码库,您会看到只能删除主题订阅(当您取消订阅时)

然而,消费者可以选择在启动时清除队列,是否已配置成这种方式(这是一个选择加入,而不是默认设置)你可以擦掉这个,清除Azure 服务总线传输不支持

是否有其他东西(如诊断或管理工具)读取并删除了队列中的消息?

经过数周的搜索,我终于找到了答案。它们并没有被删除,而是被移到了死信队列中。当时,我什至都不知道怎么去那里,只是在 Azure Management Studio 中四处寻找,我才找到它们。它与正在部署的生产者应用程序无关——这是一个转移注意力的问题。

在搜索了为什么消息会在那里结束后,我 found this 解释了问题和解决方案。调整队列上的 LockDuration 和 MaxDeliveryCount 设置后,问题似乎已经消失。