MessageListenerがあるため、JMS接続を常に開いたままにします。
長期間有効なJMS接続を使用するアプリケーションのメンテナンスを最小限に抑えることを心配する必要があるのは一般的ですか?
私は、一時的な接続障害など、よく知られている一般的な種類の障害から回復しようと考えていました。
MessageListenerがあるため、JMS接続を常に開いたままにします。
長期間有効なJMS接続を使用するアプリケーションのメンテナンスを最小限に抑えることを心配する必要があるのは一般的ですか?
私は、一時的な接続障害など、よく知られている一般的な種類の障害から回復しようと考えていました。
優れた JMS プロバイダーは、ソケットのドロップやメッセージ ブローカーのフェイルオーバーや再起動などのネットワーク停止に対処します。たとえば、Apache ActiveMQで自動再接続を有効にする方法は次のとおりです。
すべての JMS リソース (接続、セッション、プロデューサー、コンシューマー) を再作成するのは非常に面倒なことがよくありますが、JMS プロバイダーがそれを行う方がはるかに簡単です。
この機能をサポートできないプロバイダーを使用する必要がある場合は、切り替えるか、これの一部を実行できる Spring JMS ヘルパー クラスを使用することを検討してください。
私が知っている標準の JMS 仕様には、接続の問題がアプリケーションに表示されないことを保証するものは何もありません。拡張機能としてこれを行うベンダーがいくつかあるかもしれません (James Strachan が示唆しているように)。
ベンダーの拡張機能に依存しない堅牢な JMS クライアントが必要な場合は、エラーを処理して再接続する必要があります。JMS リスナーを JBossMQ に再接続するを参照してください(タイトルにもかかわらず、JBossMQ 固有ではありません)。
次の 2 つのケースを処理する必要があります。
ローカル JMS サーバーをインストールし (何でも構いません)、アプリを接続してサーバーを停止することをお勧めします。これにより、ケース #2 で予想されるエラー メッセージが表示されます。次に、MockRunnerで単体テストを作成して、エラー処理が正しいことを確認します。