スレッドを実行して JMS コンシューマーを作成し、そのメッセージ リスナーを設定する理由はありません。 JMSメッセージリスナーの要点は、メッセージを非同期に受信することです(何らかの理由で複製しようとしているように見える機能)。
JMS コンシューマを作成してメッセージ リスナを設定し、コンシューマが閉じられていないことを確認するだけです。アプリケーションの書き方によっては、while
が必要になる場合があります。 ループして、プログラムが終了しないことを確認し、コンシューマーを閉じます。あなたのスレッドはそれをしていません。メッセージを 5 秒間待った後、コンシューマーがスコープから外れます。これは、ガベージ コレクションが行われることを意味します。ほとんどの JMS 実装では、それが閉じられることを期待しています。しかし、それはそれよりも悪いかもしれません。コンシューマーを明示的にクローズせずに範囲外に放置すると、コンシューマーにリークが発生し、最終的にメッセージ ブローカーが停止する可能性があります。これはずさんなプログラミングであるだけでなく、メッセージを消費しようとする他のユーザーにとって問題になる可能性があります。