0

チャネルをしばらく使用した後、rabbitmq が再起動します。
次に、Java クライアント アプリケーション (まだ実行中) がチャネルを使用
しようとすると、クローズ チャネルを使用しようとします。

チャネルが閉じているかどうかを確認する方法はありますか?
開いたままにする方法はありますか?
永久に保存せずにそれを行う方法はありますか?
(サーバーの再起動時にチャネルとキューを削除しますが、新しい使用時にそれらを作成できるようにしたい)

ありがとう。

4

3 に答える 3

1

ChannelisOpen使用できる方法があります。

やりたいことは、接続を監視して、接続が閉じられたときに、サーバーが再び立ち上がるようにポーリングを開始することです。Connection.addShutdownListenerおよびShutdownNotifierインターフェイスのドキュメントを参照してください。

残念ながら、閉じられたチャンネルは再接続できません。接続が回復したら、新しいチャンネルを作成する必要があります。

于 2012-08-24T19:23:39.067 に答える
0

Spring AMQP 統合、特にSpring Retryを確認することをお勧めします。セクション 2.12 から:

Spring Retry は、いくつかの AOP インターセプターと、再試行のパラメーター (試行回数、例外タイプ、バックオフ アルゴリズムなど) を指定するための大きな柔軟性を提供します。Spring AMQP は、Spring Retry インターセプターを AMQP ユースケースに便利な形式で作成するためのいくつかの便利なファクトリー Bean も提供し、カスタム回復ロジックを実装するための強く型付けされたコールバック インターフェイスを備えています。詳細については、StatefulRetryOperationsInterceptor および StatelessRetryOperationsInterceptor の Javadoc およびプロパティを参照してください。

于 2012-08-24T11:40:49.360 に答える