2017-01-23 64 views
0

我目前正在試圖找出使用NServiceBus的下列問題的最佳解決方案:我有用戶可以用來搜索不同事物的GUI,但有關這些事情的信息傳播到多個服務/數據庫中。例如,假設用戶正在搜索一個城市中的公園列表,但是這個城市的每個區只在他們自己的數據庫中保存他們公園的信息(它們通過網絡服務公開)。我需要NServiceBus發送消息到每個端點(分區)什麼信息用戶需要,等待響應,然後當它從所有端點(並且然後)將其發回給用戶(GUI)時。用戶只對全部信息感興趣,因此總線需要知道每個終端是否發送了它的響應(它也需要實時進行,所以總線會認爲該終端處於離線狀態,並且如果需要太多時間則發送失敗消息)。終端可以隨時更改,因此代碼需要易於維護。最好的選擇是添加/刪除端點可以在不改變代碼的情況下完成。如何搜索NServiceBus中多個端點的數據?

下面是我對可能的解決方案的想法:

  • 發佈/訂閱模式讓我很容易地通過訂閱/不改變發行代碼退訂隨意發送消息給多個端點,並添加/刪除端點。問題:根據定義,發行商不知道有多少訂閱者(以及他們是什麼),因此等待所有訂閱者作出響應變得困難,如果不是不可能的話。

  • 請求/響應模式讓我可以輕鬆地告訴端點我想要回答,並且我會知道端點是否響應。問題:每次我需要添加/刪除新端點時,我需要更改發件人的代碼。可擴展性也可能是一個問題。

我的問題:是否有任何方法來結合這些模式?還是我看錯了這個問題?有什麼方法可以實現我想要的一切?

回答

0

我想你確實是在錯誤地看問題。

這聽起來像你想要查詢多個服務,並聚合在UI中呈現的信息。一般來說,公交車不是直接查詢的好選擇。總線非常適合將命令發送到特定端點,以及在發生狀態更改時發佈。

如果您正在針對端點執行查詢,那麼最好的辦法就是建模並公開一個查詢(通過類似WebAPI的查詢)。

相關問題