是否有办法查看NServiceBus当前存在哪些订阅

是否有办法查看NServiceBus当前存在哪些订阅,nservicebus,Nservicebus,我关心我的NServiceBus解决方案 我有一个“消息中心”,发布一些非常重要的消息。但有时它会丢失订阅信息,只是因为认为没有人在听而丢弃消息 我尝试打开“NServiceBus.Integration”来存储订阅。但尽管如此,我仍然对糟糕的启动顺序存在问题,因为它认为没有人在听 有没有办法调试这个过程?试着弄清楚它为什么会变得混乱 我甚至不知道如何看待它“认为”它有什么订阅 我选择了NServiceBus,因为它永远不会丢失数据。现在我失去了大卡盘。我知道这是一个配置问题,但它引起了很大的悲

我关心我的NServiceBus解决方案

我有一个“消息中心”,发布一些非常重要的消息。但有时它会丢失订阅信息,只是因为认为没有人在听而丢弃消息

我尝试打开“NServiceBus.Integration”来存储订阅。但尽管如此,我仍然对糟糕的启动顺序存在问题,因为它认为没有人在听

有没有办法调试这个过程?试着弄清楚它为什么会变得混乱

我甚至不知道如何看待它“认为”它有什么订阅


我选择了NServiceBus,因为它永远不会丢失数据。现在我失去了大卡盘。我知道这是一个配置问题,但它引起了很大的悲痛。

在您的案例中可能发生的情况是,您正在使用MSMQ进行订阅存储。尽管订阅可能会持续一段时间,但使用MSMQ长期存储东西总是很不稳定的

对于持久订阅存储(永久保存),您应该使用SQL server作为订阅存储

注意:无论您是使用sql还是msmq存储当前订阅,都可以查看它们。在SQL中,只需查看订阅表,对于msmq,请查看发布服务器的订阅队列

更新


从版本3开始,我一直在使用默认的RavenDb。

在您的情况下可能发生的情况是,您正在使用MSMQ进行订阅存储。尽管订阅可能会持续一段时间,但使用MSMQ长期存储东西总是很不稳定的

对于持久订阅存储(永久保存),您应该使用SQL server作为订阅存储

注意:无论您是使用sql还是msmq存储当前订阅,都可以查看它们。在SQL中,只需查看订阅表,对于msmq,请查看发布服务器的订阅队列

更新


从版本3开始,我一直在使用默认的RavenDb。

根据我的经验,要正确分配订阅,应该首先启动EventHandler项目,然后在它们都空闲时启动CommandHandler(发布者)

您可以使用Service Bus MQ Manager查看订阅的消息,它有一个对话框,列出所有“消息”及其订阅者/发布者。我的一个附带项目,它是免费和开源的。

根据我的经验,要正确分配订阅,应该首先启动EventHandler项目,然后在它们都空闲时启动CommandHandler(发布者)

您可以使用Service Bus MQ Manager查看订阅的消息,它有一个对话框,列出所有“消息”及其订阅者/发布者。我的一个附带项目,它是免费和开源的。

生产配置文件将订阅数据存储在2.6版的数据库中,以及3.0版的RavenDB中。在这两种情况下,您都可以看到订阅。发布者订阅工具在其中有正确的队列。但它实际上并没有出现在另一个队列中。(我甚至尝试删除队列并重新创建它们。)在我运行runner.exe工具后,这一切都出了问题(我运行该工具是因为我遇到了DTC问题。)我只需要发布/订阅可以提供的更可靠的解决方案。由于我没有进行完全修复,我将把你的答案标记为“正确”。我把我的系统调高了,不使用发布。现在是直接
Send
s。希望这将使一切变得更加可靠。只要您使用持久订阅存储和事务队列,基于NSB发布子的解决方案与基于点对点的解决方案一样“可靠”。为了更好地理解NSB订阅模型,请参见我在这里的回答中的图表:生产配置文件将订阅数据存储在2.6版的数据库中,以及3.0版的RavenDB中。在这两种情况下,您都可以看到订阅。发布者订阅工具在其中有正确的队列。但它实际上并没有出现在另一个队列中。(我甚至尝试删除队列并重新创建它们。)在我运行runner.exe工具后,这一切都出了问题(我运行该工具是因为我遇到了DTC问题。)我只需要发布/订阅可以提供的更可靠的解决方案。由于我没有进行完全修复,我将把你的答案标记为“正确”。我把我的系统调高了,不使用发布。现在是直接
Send
s。希望这将使一切变得更加可靠。只要您使用持久订阅存储和事务队列,基于NSB发布子的解决方案与基于点对点的解决方案一样“可靠”。要更好地了解NSB订阅模型,请参见我的回答中的图表: