2013-01-14 64 views
3

我對使用基於消息的體系結構(例如Azure服務總線主題/訂閱功能)不熟悉。在Azure服務總線中處理不同消息類型的最佳做法

我想知道如何最好地使用不同的消息類型。

E.g.假設我有兩條消息。一個是創建一個新客戶,另一個是刪除一個客戶。

我可以;

  1. 創建兩個主題。每個主題將有一個訂閱。處理消息的代碼將獨立處理其消息類型。

  2. 爲客戶創建一個主題。創建一個訂閱以接收所有消息。處理消息的代碼需要在處理消息之前確定消息類型。

  3. 爲客戶創建一個主題。創建兩個訂閱,它們對消息類型進行過濾。處理消息的代碼將獨立處理其消息類型。

我敢肯定,沒有對錯之分,但是很感謝有這方面經驗的人的一些建議。

非常感謝,

大衛

回答

7

對選題的幾點思考 - /替補:

  1. 會讓你有一個節點(進程/應用程序等),感興趣的不同消息類型或單個消息類型。如果您需要單個應用程序來處理多個消息類型(包括添加和刪除),那麼最好的方法是擁有一個主題。然後,您的應用程序可以收聽單個訂閱並處理這兩個消息,還可以將更多的應用程序實例添加到該單一訂閱中。稍後,如果您決定分開處理,您仍然可以創建兩個不同的訂閱並過濾消息,以便添加/刪除發送到另一個或另一個的消息。

  2. 如果您的系統專注於個人客戶,假設您正在編寫多個服務,而且每個客戶都有一個服務,那麼每個客戶都有一個主題是很好的,因爲您可以與客戶線性擴展,並且擁有明確的授權/處理不同客戶之間的界限。但是,如果您通過單個多租戶服務處理所有客戶請求,並且不希望爲每個客戶提供不同的服務實例,那麼這不是最好的方法。

    開頭的單個主題爲您提供了很大的靈活性,稍後您可以使用ForwardTo將消息從單個訂閱傳送到另一個主題/隊列等,隨着系統的發展。這使您可以從簡單的開始創建豐富的消息傳遞拓撲。

相關問題