2012-11-09 51 views
0

我在一個系統上工作,我們在多個國家擁有相同的網站。每個網站都有自己的服務。一切運作良好,但我總是發現自己必須發送消息,而不是發佈消息,否則在我知道之前就知道其他服務是完全不相關的。我發佈到許多服務,然後過濾它的相關性,這聽起來毫無意義。NServiceBus在多系統環境下發布

當我想要將消息發佈到某個服務子集時,我應該處理這種做法嗎?其他人如何處理這個問題?

回答

0

默認情況下,端點預訂所有消息。如果您只想要某些端點訂閱特定集合,那麼您需要將您的端點配置爲DoNotAutoSubscribe()。然後,您必須明確訂閱端點將使用Bus.Subscribe()感興趣的每種消息類型。

0

您能描述一下確定特定端點系統相關性的邏輯嗎?發佈和訂閱的目的是系統中有其他終端可以訂閱的事件。
你不應該知道你的用戶。那麼你如何確定相關性?

如果這些消息與特定端點不相關您爲什麼要訂閱這些消息?

0

如果它確實是一個事件消息,那麼你需要發佈消息。如果您需要發佈到某個子集,則可以擁有一個單獨的訂閱存儲,以便有問題的端點使用。

通常應由用戶決定是否收到的事件是相關的,但如果你預先有信息,然後可以與單獨的訂閱存儲。

在我的FOSS ESB項目(http://shuttle.codeplex.com/)中,必須向ESB提供一個ISubscriptionManager實現,以確定發送發佈消息的訂戶uris。儘管可能是可能是矯枉過正的,但可以提供一個包含執行過濾的邏輯的自定義實現;否則單獨的訂閱商店。