2012-02-18 82 views
1

我关心我的NServiceBus解决方案。有没有办法看到目前NServiceBus存在什么订阅

我有一个发布一些非常重要的消息的“MessageHub”。但有时它会失去对其订阅的跟踪,因为它认为没有人在倾听而放弃该消息。

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

有没有办法来调试这个过程?试图弄清楚为什么它会变得困惑?

我甚至不知道的方式来看看它的订阅“认为”它......

我NServiceBus去,因为它是不应该永远丢失数据。现在我失去了大卡盘。我知道这是一个配置问题,但它造成了很多悲伤。

回答

1

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

对于长期订阅存储(永久存活),您应该使用SQL Server作为订阅存储。

注意:无论您使用sql还是msmq来存储它们,都可以随时查看当前的订阅。在SQL中,只需查看订阅表,然后查看发布者的订阅队列中的msmq。

UPDATE

由于3版本我一直在使用RavenDb这是默认的。

+1

生产配置文件将订阅数据存储在2.6版的数据库中,以及3.0版的RavenDB中。在这两种情况下,您都可以看到订阅。 – 2012-02-18 15:50:12

+0

发布商订阅工具在那里有正确的队列。但它并没有真正显示在另一个队列中。 (我甚至尝试删除队列并重新制作它们)。在运行runner.exe工具后,我发现这一切都出错了(我之所以这么做,是因为我有DTC问题。) – Vaccano 2012-02-18 18:47:59

+0

我只需要一个更可靠的发布/订阅解决方案。由于我没有去完全解决,所以我打算将你的答案标记为“正确”。我改变了我的系统,不使用发布。现在它是直接发送。希望这将使一切更加可靠。 – Vaccano 2012-02-18 18:48:58

0

在我的实验中,为了正确指定订阅,应该首先启动EventHandler项目,然后当它们全部空闲时,启动CommandHandlers(发布者)。

您可以使用Service Bus MQ Manager查看正在订阅的消息,它具有一个列出所有“消息”及其订户/发布者的对话框。我的一个侧面项目,它的自由和开放源代码。 http://blog.halan.se/page/Service-Bus-MQ-Manager.aspx

相关问题