2012-02-18 80 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

相關問題