我有一個服務器,它維護應用程序的全局狀態。Pub/sub,同時保持訪問系統的完整狀態
客戶端可以連接到服務器並獲取有關全局狀態更改的消息(發佈/訂閱機制以便服務器廣播信息)。
但是,在啓動時,客戶端根本沒有關於全局狀態的信息,他們需要它。我想要的是任何新客戶訂閱系統,第一個通知消息是應用程序的完整狀態。然後,他們只收到關於此狀態變化:
- 客戶端連接到郵件系統
- 它簽約的消息系統
- 它得到的第一個消息是系統的全狀態
- 然後,它只收到關於全局狀態的變化
這個想法類似於多人遊戲,其中新玩家必須首先獲得完整的遊戲狀態,然後只發送遊戲中的更改。
像ActiveMQ或Stomp這樣的消息傳遞系統可以滿足我的需求,因爲它們是多語言的,可以與多個傳輸層一起使用。然而,沒有這種發送完整狀態的概念(或以連貫的方式累積最後的變化)。當然,我可以很容易地以靜態的方式提供這個狀態(首先我得到完整的狀態,然後我訂閱發佈/訂閱系統),但是我必須小心在此期間可能發生的變化(沒有我在處理完整狀態時會失去一些更改嗎?這種更改是否已在我剛剛檢索的全局狀態中考慮到?...)。但是,我失去了Stomp和ActiveMQ已經提供的多語言/多傳輸方面的功能。
是否有一些現有的庫/工具可以做到這一點? ActiveMQ的某種擴展?類似Stomp的東西?還是需要手工製作?
是啊,這也是我會在默認情況下做的。爲了以防萬一,我還在其他幾天等待其他答案。 – 2012-04-23 19:13:31
酷...我很好奇,如果有人知道更清潔的方法以及...好問題 – 2012-04-24 15:14:07