サーバー側(Java)から変更されたコンテンツについてJavaScriptWebアプリケーションに通知するために現在使用されているカスタムメッセージングシステムの代替品を設計しています。このレガシーメッセージングシステムは、カスタムテキストベースのプロトコルとプレーンJavaソケットを使用してFlashXMLSocketを介して機能します。
置換は、Webアプリケーション(FlashではなくWebソケットを介して)だけでなく、C#で記述された追加のデスクトップクライアントアプリケーションでも使用されます。
私の要件は次のとおりです。
- ユーザ認証
- トランスポート暗号化(SSL / TLS)
- 双方向メッセージ交換
- ユーザーが受信を許可されたメッセージのみを取得できるようにする、ある種の(自動)パブリッシュ/サブスクライブ
- 確立されたプロトコルに基づくメッセージ交換(可能な場合は既存のライブラリを使用できるようにするため)
- クラスタ化可能なサーバーコンポーネント
現時点では、メッセージングシステムは、更新をクライアントに公開するためにのみ使用されます。クライアントはこれらのメッセージに反応し、サーバーから直接(メッセージングシステム経由ではなく)詳細情報を取得します。この新しいメッセージングシステムが正常に確立されれば、将来、より高度なユースケースに使用される可能性があります。いくつかの可能性には、ユーザーのチャット、ファイル交換、サーバーコンポーネントのリモートコントロールが含まれる場合があります。
私はこれらの要件を実装するための実行可能なテクノロジーについて少し調査しましたが、私の選択はejabberd(XMPP)またはRabbitMQ(AMQP)のいずれかを使用することに帰着すると思います。私の要件に関するこれら2つのシステムの主な長所と短所は何ですか?システムインフラストラクチャの他の部分にはすでにRabbitMQを使用しているので、それが私の自然な選択でした。クライアントアプリケーションをこのような重要なメインコンポーネントに直接接続するのが良いかどうかはわかりません。ただし、クライアント通知に別のRabbitMQインストールを使用するだけで、これを軽減できる場合があります。