2016-08-29 6 views
0

このセットアップでは、Webサービスを呼び出してキューを作成し、応答からキュー名を受け取ります。Spring amqp:シャットダウンを検出して別のキューに再接続する

次に、SimpleMessageListenerContainerを設定し、そこにキュー名を設定してから開始します。

ただし、時々キューが削除され、「404はキューXXXXXXXXXを宣言できませんでした」というエラーが発生します。このような場合、Webサービスを再度呼び出して、新しいQueueNameをSimpleMessageListenerContainerに追加し、古いものを削除する必要があります。

私がこれを処理するコードをトリガーする唯一の方法は、カスタムCachedConnectionFactoryを作成してshutdownCompletedメソッドをオーバーライドすることでした。

しかし、SimpleMessageListenerContainerも切り替わると、shutdownCompletedがトリガされるように見えます。そのため、ループ内に留まります。 shutdownCompletedに送信されたShutdownSignalExceptionは、トリガがサーバまたはクライアントから新しいキューを処理している場合には、別のものに見えないので、「2番目の」処理をスキップする方法を理解できません。

サーバーがキューを強制終了したときにカスタム処理を検出して実行する通常の方法は何ですか?

答えて

0

コンテナは、リスナーに障害が発生したときにListenerContainerConsumerFailedEventを発行します。

ApplicationListener<ListenerContainerConsumerFailedEvent>を追加し、コンテナを停止し、キューを変更して再起動します。

デフォルトでは、コンテナは、あきらめる前に3回再接続しようとするため、複数のイベントが発生する可能性があります。

関連する問題