当前位置: 首页 > 知识库问答 >
问题:

N服务总线、Azure服务总线、消息消失且未被消费

云德辉
2023-03-14

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

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

启动消息生成器是否可能会重新创建或清空目标队列?如果是这样,如何配置NServiceBus使其永远不会执行此操作?

谢谢

共有2个答案

鱼旺
2023-03-14

经过数周的搜寻,我终于找到了答案。它们没有被删除,而是被移动到死信队列中。当时,我甚至不知道如何在那里查看,我只是在Azure Management Studio中随便找了找,才发现了它们。这与正在部署的producer应用程序无关——这是一种转移注意力的做法。

在搜索了为什么信息会出现在那里后,我发现了这个解释了问题和解决方案。调整队列上的LockDuration和MaxDeliveryCount设置后,问题似乎已经消失。

琴宾鸿
2023-03-14

不,NServiceBus从不删除队列,甚至不删除源队列,请随时搜索代码库https://github.com/Particular/NServiceBus.AzureServiceBus/tree/master/src您将看到,只有对主题的订阅才能被删除(当您取消订阅时)

<罢工> 然而,消费者可以选择在启动时清除队列,是否已经这样配置(这是一个选择,而不是默认) 您可以划伤这个,清除不支持Azure servicebus传输

其他东西,如诊断或管理工具,可能已经从队列中读取并删除了消息吗?

 类似资料:
  • 我正在尝试在Azure中构建一个简单的WebAPI REST服务,后端有一个服务总线队列工作器。我可以从Web API向工作人员发送一条消息。然而,我试图发送更多的信息,只是为了看看一切是如何运作的。因此,我创建了一个简单的控制器,如下所示: 当我呼叫控制器时,我只收到工作人员接收到的大约1/2的消息。其余的似乎都被放弃了。

  • 我在Azure服务总线中构建了一个支持多队列订阅的服务,但是我正在得到一些奇怪的行为。 我的subscription singleton类有一个如下所示的方法: 其思想是,您为特定类型的消息订阅Azure Service Bus,该消息直接对应于队列。在订阅中,传入一个委托以了解如何处理消息。 谁能告诉我,我需要做什么不同的,以确保消费者拥有的消息,直到完成?

  • 我在Azure Service Bus中使用代理消息传递(主题/订阅),我很好奇如何(或者是否)使用SSL保护通信。

  • 我正在使用Python开发一个集成,从不同的Azure服务总线主题和队列中读取消息。但我在安排留言时有个问题。我无法查看计划的邮件。我想偷看它们,然后要么完成,要么让它们不读,直到预定的时间。我尝试查看队列和主题,但我找不到任何文档说明如何查看其中任何一个排定的消息。有人设法做到了吗?应该是一个非常常见的用例。在使用标准的REST调用时也没有发现任何问题。

  • 我正在使用带有.NET核心的Azure服务总线 在我们的应用程序中,我们正在向服务总线发送会话消息。每当我们收到带有session-Id的取消请求时,我们需要删除/删除/完成带有该特定sessionId的消息,而不需要进行任何进一步的处理 但我得到了错误-请求的会话'session-name'不能被接受。它可能被另一个接收器锁定。

  • 参考https://github.com/Azure/azure-service-bus/tree/master/samples/dotnet/gettingstart/microsoft.Azure.servicebus/basicsendreceiveusingtopicsubscriptionclient,我了解Azure服务总线主题的一般工作方式,我的问题更多地是关于它实际上是如何工作的。