1

Spring WebSocket とメッセージングの使用方法についていくつか質問があります。そのため、Web サービス コンシューマー エンドポイントにデータ ペイロードを送信する外部 Web サービス プロデューサー エンドポイントとやり取りするプログラムがあります。プログラムの反対側では、これらのデータ ペイロードを複数の WebSocket 接続 (stomp および sockjs) にルーティングします。外部 Web サービス プロデューサーは、すべてのクエリ リクエストの各データ ペイロードでサブスクリプション ID を提供しているため、私のアプローチは、独自の一意の宛先 (つまり、/user/{subscriptionId}/subscribe) を持つ SimpMessagingTemplate を使用してそれらをブローカーに送り返すことです。こうすることで、クエリが重複して作成された場合に各 Websocket クライアントを既存の宛先にサブスクライブし、それ以外の場合は外部 Web サービス プロデューサーに新しいサブスクリプションのみを要求できます。

  1. データ ペイロードをメッセージ ブローカーに送信できるように、Web サービス コンシューマーなどの別のコンポーネント内から SimpMessagingTemplate にアクセスするにはどうすればよいですか? SimpMessagingTemplate を静的に宣言し、テンプレート オブジェクトが格納されているコントローラー内で getter 関数を宣言するだけですか?

  2. すべての既知の宛先のリストと、各宛先への Stomp クライアント サブスクライバーの数を取得するにはどうすればよいですか? 外部 Web サービス プロデューサーは各サブスクリプションの終了時間を設定するため、宛先にまだサブスクライバーがある場合は自動更新リクエストを実装したいと考えています。マップ/キャッシュを使用して自分で追跡し、websocket セッションが開いたり閉じたりするたびに更新できると思いますが、リスクを最小限に抑え、おそらくエラーが発生しにくくなるか、おそらく完全なこれを行うには、RabbitMQ や ActiveMQ などの注目のブローカーが必要です。

4

1 に答える 1