ユーザーがリクエストを送信すると、リモートサービスにJMSメッセージを送信し、応答を待つWebアプリがあります。(非同期リクエストもあり、メッセージの再生などのためにさまざまな機能が設定されているため、HTTPではなくJMSを使用することをお勧めします)
「JMSを使用して要求応答を実装するにはどうすればよいですか?」、ActiveMQは、リクエストごとの一時キュー、またはJMSCorrelationIDにセレクターを持つ一時コンシューマーのいずれかのアイデアを思いとどまらせるようです。これは、それらのスピンアップに伴うオーバーヘッドのためです。
ただし、プールされたコンシューマーを応答に使用する場合、応答コンシューマーから元の要求スレッドにディスパッチするにはどうすればよいですか?
私は確かに自分のスレッドセーフなコールバック登録/ディスパッチを書くことができましたが、私よりもよく知っている誰かによってすでに書かれていると思われるコードを書くのは嫌いです。
そのActiveMQページは、2006年以降更新されていないLingoと、多くの落とし穴のバグのために私のチームによって厳しく禁止されているCamelSpringRemotingを推奨しています。
このパターンを実装するライブラリの形式で、またはJMSを介した同期要求/応答をシミュレートするための別のパターンの形式で、より良い解決策はありますか?
関連するSOの質問:
- 同期使用にJMS一時キューを使用することをお勧めしますか?、これは、JMSCorrelationIDのセレクターを使用してコンシューマーを起動することは実際にはオーバーヘッドが少ないことを示唆しており、ActiveMQのドキュメントに記載されている内容と矛盾します。誰が正しいの?