我正在爲遊戲系統創建基礎架構。我需要它作爲擴展和故障轉移的消息基礎。它還使用套接字來發布/訂閱消息通知。我的挑戰是:我應該使用我擁有的還是使用像nServiceBus或MassTransit這樣的完整ESB?基於消息的Pub/Sub故障轉移
這是我到目前爲止,它有點複雜。首先,它是一個撲克系統。
客戶端連接到插座接收消息。然後將消息分派到一個或多個本地表隊列。 (當然可以有多個客戶端)。
卡經銷商客戶,在後端運行,也可以通過不同的插座連接。 (可以有多個經銷商)。
運行在後端的機器人客戶端也通過不同的套接字進行連接。 (可以有多個機器人客戶端)。
每個客戶和經銷商在數據庫中創建一個「訂戶」記錄。這表明他們的IP是什麼,最終表明他們連接了哪些表。
概述:
不同的客戶端可以連接到不同的插座,但訂閱到同一個表。因此,針對一個表的任何消息都可能由多個套接字處理,以確保消息以每個表爲基礎。
我如何實現這一點是我有一個消息表和一個ControllerMessage表。 ControllerMessage表跟蹤由特定控制器處理的所有消息。我使用簡單的LEFT OUTER JOIN來確定需要由特定控制器發送的消息。
該系統運行良好。故障轉移非常快速且高效,因爲異步套接字在對方意外斷開連接或斷開連接時立即通知。
但是...有沒有比建立自己的ESB更好的方法?我甚至在做一些ESB可以提供的信息豐富和適應的東西;儘管我將不得不創建代碼或XSLT模式。
我會考慮使用ESB,但是這是基於java的ESB。我知道那裏有幾個.NET ESB。 – NickV