チャネルをしばらく使用した後、rabbitmq が再起動します。
次に、Java クライアント アプリケーション (まだ実行中) がチャネルを使用
しようとすると、クローズ チャネルを使用しようとします。
チャネルが閉じているかどうかを確認する方法はありますか?
開いたままにする方法はありますか?
永久に保存せずにそれを行う方法はありますか?
(サーバーの再起動時にチャネルとキューを削除しますが、新しい使用時にそれらを作成できるようにしたい)
ありがとう。
Channel
isOpen
使用できる方法があります。
やりたいことは、接続を監視して、接続が閉じられたときに、サーバーが再び立ち上がるようにポーリングを開始することです。Connection.addShutdownListener
およびShutdownNotifier
インターフェイスのドキュメントを参照してください。
残念ながら、閉じられたチャンネルは再接続できません。接続が回復したら、新しいチャンネルを作成する必要があります。
Spring AMQP 統合、特にSpring Retryを確認することをお勧めします。セクション 2.12 から:
Spring Retry は、いくつかの AOP インターセプターと、再試行のパラメーター (試行回数、例外タイプ、バックオフ アルゴリズムなど) を指定するための大きな柔軟性を提供します。Spring AMQP は、Spring Retry インターセプターを AMQP ユースケースに便利な形式で作成するためのいくつかの便利なファクトリー Bean も提供し、カスタム回復ロジックを実装するための強く型付けされたコールバック インターフェイスを備えています。詳細については、StatefulRetryOperationsInterceptor および StatelessRetryOperationsInterceptor の Javadoc およびプロパティを参照してください。