アプリケーションのグローバルな状態を維持するサーバーがあります。
クライアントはサーバーに接続し、グローバル状態の変化に関するメッセージを取得できます (サーバーが情報をブロードキャストするためのパブリッシュ/サブスクライブ メカニズム)。
ただし、起動時には、クライアントはグローバル状態に関する情報をまったく持っておらず、それを必要としています。私が望むのは、システムにサブスクライブする新しいクライアントの場合です。最初の通知メッセージは、アプリケーションの完全な状態です。次に、この状態に関する変更のみを受け取ります。
- クライアントがメッセージング システムに接続する
- メッセージングシステムにサブスクライブします
- 取得する最初のメッセージは、システムの完全な状態です
- 次に、グローバル状態に関する変更のみを受け取ります
この考え方は、新しいプレーヤーが最初にゲームの完全な状態を取得する必要があるマルチプレーヤー ゲームに似ており、その後、ゲームの変更のみが送信されます。
ActiveMQ や Stomp などのメッセージング システムは、複数の言語に対応し、複数のトランスポート レイヤーで使用できるため、私のニーズには適しています。ただし、完全な状態を送信する (または一貫した方法で最後の変更を累積する) という概念はありません。
もちろん、この状態を静的な方法で簡単に提供することもできます (最初に完全な状態を取得し、次にパブリッシュ/サブスクライブ システムにサブスクライブします)。完全な状態を処理している間? この変更は、取得したばかりのグローバル状態で既に考慮されていますか? ...)。ただし、Stomp と ActiveMQ によって既に提供されている多言語/複数トランスポートの側面は失われます。
それを行うための既存のライブラリ/ツールはありますか? ActiveMQ の何らかの拡張機能はありますか? ストンプに似た何か?それとも手作りする必要がありますか?