2012-05-08 61 views
0

我正在爲遊戲系統創建基礎架構。我需要它作爲擴展和故障轉移的消息基礎。它還使用套接字來發布/訂閱消息通知。我的挑戰是:我應該使用我擁有的還是使用像nServiceBus或MassTransit這樣的完整ESB?基於消息的Pub/Sub故障轉移

這是我到目前爲止,它有點複雜。首先,它是一個撲克系統。

  1. 客戶端連接到插座接收消息。然後將消息分派到一個或多個本地表隊列。 (當然可以有多個客戶端)。

  2. 卡經銷商客戶,在後端運行,也可以通過不同的插座連接。 (可以有多個經銷商)。

  3. 運行在後端的機器人客戶端也通過不同的套接字進行連接。 (可以有多個機器人客戶端)。

  4. 每個客戶和經銷商在數據庫中創建一個「訂戶」記錄。這表明他們的IP是什麼,最終表明他們連接了哪些表。

概述:

不同的客戶端可以連接到不同的插座,但訂閱到同一個表。因此,針對一個表的任何消息都可能由多個套接字處理,以確保消息以每個表爲基礎。

我如何實現這一點是我有一個消息表和一個ControllerMessage表。 ControllerMessage表跟蹤由特定控制器處理的所有消息。我使用簡單的LEFT OUTER JOIN來確定需要由特定控制器發送的消息。

該系統運行良好。故障轉移非常快速且高效,因爲異步套接字在對方意外斷開連接或斷開連接時立即通知。

但是...有沒有比建立自己的ESB更好的方法?我甚至在做一些ESB可以提供的信息豐富和適應的東西;儘管我將不得不創建代碼或XSLT模式。

回答

0

那麼,你不需要重新發明輪子。大多數上述功能在大多數ESB中都受支持。 下面是使用WSO2 ESB實現pub-sub的完整用例[1]。

供參考:WSO2 ESB是一個100%開源ESB,具有Apache 2.0許可證。

[1] http://wso2.org/library/articles/2011/12/wso2-esb-example-pubsub-soa

+0

我會考慮使用ESB,但是這是基於java的ESB。我知道那裏有幾個.NET ESB。 – NickV