2016-02-18 31 views
0

我們有被部署到我們計劃使用NservierBus讓所有的應用程序可以在它們之間的pub/sub消息,我認爲我們使用的pub/sub模式,並使用MSMQ傳輸集成不同服務器的多個Web和Windows應用程序對它會有好處。但有一點我不清楚,如果它是一種避免硬代碼將子端點設置爲MSMQ的方法QueueName @ ServerName,如果pub位於另一個服務器上,則QueueName @ ServerName中直接包含服務器名稱。在6-pre我看到設置端點名稱的想法,然後使用路由委託到傳輸級別的地址,這是一個解決方案嗎?或者只有網關是解決方案?是一個好主意的經紀人嗎?這種情況下的最佳做法是什麼?Nservicebus路由

+0

您是否嘗試過使用的配置文件? http://docs.particular.net/nservicebus/messaging/message-owner 有沒有辦法周圍不知何故讓用戶知道它需要尋找它的訂閱信息創建正確的訂閱。我通常會盡量確保您不會將消息發送到特定的實例,並讓他們只需訂閱一般事件。這是一個相當普遍的問題,除了上面的配置可能更適合架構或編程。 –

回答

1

當使用發佈/訂閱,用戶目前需要知道發佈者的隊列的位置。然後,用戶每次啓動時都會向該隊列發送訂閱消息。它不知道它是否已訂閱,是否訂閱了所有消息,因爲您可能已添加/配置了一些新消息。

出版商讀取這些訂閱信息和存儲在存儲訂閱。 NServiceBus爲你做這件事,所以沒有必要爲此編寫代碼。您唯一需要的是在訂閱者中配置發佈者的(隊列)位置。 我自己寫了一個教程,你可以在這裏找到:http://dennis.bloggingabout.net/2015/10/28/nservicebus-publish-subscribe-tutorial/

這就是說,你應該特別注意與發佈消息的網站有關的問題。對更多的信息可以在這裏找到:http://docs.particular.net/nservicebus/hosting/publishing-from-web-applications

在一個向外擴展的情況與MSMQ,您還可以使用經銷商:http://docs.particular.net/nservicebus/scalability-and-ha/distributor/

最後一點:這取決於具體情況,但我不會擔心太瞭解端點(或其隊列)的位置。我很可能不會僅僅爲這個'技術問題'使用pub/sub。但是,這又完全取決於情況。我可以理解,隨機產卵的富客戶可能會想要這樣做。但也有其他解決方案,具有更集中的存儲空間和可供所有富客戶端訪問的API。

+0

感謝Dennis,但是如果有幾個訂閱者需要訂閱serverA上發佈者的一種消息類型。如果我將QueueName @ ServeA放入配置中。但有一天,如果我將發佈者移動到serverB,似乎我需要轉到每個訂閱者配置來更新所有Queue端點,我們是否有辦法避免使用中央存儲? – NiuNiu

+0

所有訂閱者都需要得到通知和更改,以便他們可以訂閱ServerB發佈者。訂閱者通常會向發佈者發送其他消息,然後發送訂閱消息,因此他們需要知道。在將所有訂閱消息發送到ServerB後,可以關閉ServerA。 你可以建立自己的東西使用此繞過配置:http://docs.particular.net/nservicebus/messaging/message-owner#configuring-endpoint-mapping –