1

背景

我在 Azure 服务总线中有一个主题 ( T1 ),它正在从客户端 (Web 应用程序) 获取数百万条消息。有 3 个订阅(S1、S2、S3)没有任何过滤器,它们由 3 个不同的后台进程(工作角色)创建。

问题

当工作角色运行时,只有第一个订阅(S1)似乎完全收到任何消息,然后休息(S2 和 S3)要么不接收任何消息,要么只得到其中的一小部分。所有订阅者都以相同的方式创建,具有相同的精确设置且没有过滤器。

服务总线资源管理器显示S1 的正确消息计数(~100K),但对于 S2 和 S3,活动消息计数非常低(小于 10,通常为 0)。在我看来,消息以某种方式被删除,甚至没有被客户接收。

调查问题的最佳方法是什么以及为什么订阅者之间的消息计数不匹配。关于什么可能是错的任何建议?

4

2 回答 2

1

检查有问题的订阅。订阅支持他们自己的DefaultMessageTimeToLive。默认情况下,它设置为最大值。查看您用于创建订阅的代码,也许它QueueDescription用于自定义 DefaultMessageTimeToLive 和其他值。

此外,启用EnableDeadLetteringOnMessageExpiration以查看消息是否过期。

检查MaxDeliveryCount。如果它太低并且消息未成功处理,则传递计数将超过最大值,并且消息将被发送或死信。

除此之外,如果过滤正在启动,您可以通过启用EnableDeadLetteringOnFilterEvaluationExceptions来发现

如果没有任何帮助,请在 GutHub 或 BitBucket 中发布复制代码的链接,以便人们可以看到所做的事情。

于 2016-07-28T09:41:01.937 回答
0

听起来怪怪的。尝试明确定义主题的选项,如DefaultMessageTimeToLive ,如果它是ReceiveAndDeletePeekLock,还要检查订阅客户端的工作策略。

本教程可能会对您有所帮助:https ://azure.microsoft.com/en-us/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/#how-to-receive-messages-from -a-订阅

于 2016-07-28T07:18:53.533 回答