0

ログシンクストリームのアプリケーション依存関係のある私のカスタムSpringクラウドストリームシンクが、RabbitMQ停止中にRabbitMQ接続を失い、5回接続しようとしてから消費者を停止することがわかりました。私は手動でRabbitMQがアップしたら、それが正常に接続するために、アプリケーションを手動で再起動する必要があります。私がrabbitMQバインディングhereのデフォルトのプロパティを見ると、それはインターバル時間を与えますが、無限の再試行のプロパティはありません(これはデフォルトの動作と想定しています)。誰かが私が無限に接続しようとするためにここで行方不明になるかもしれないことを私に教えてもらえますか?Springクラウドストリーム:SinkがRabbitMQ接続を失う

Error faced during outage triggering consumer retry : 
2017-08-08T10:52:07.586-04:00 [APP/PROC/WEB/0] [OUT] Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - home node '[email protected]' of durable queue 'datastream.dataingestor.datastream' in vhost '8880756f-8a21-4dc8-9b97-95e5a3248f58' is down or inaccessible, class-id=50, method-id=10) 
+0

5回ではなく3回後に同様の問題が発生しています。明らかに、これは 'SimpleMessageListenerContainer'のデフォルト値です(https://docs.spring.io/spring-amqp/docs/1.7.4.RELEASE/reference/htmlsingle /#containerAttributes)。何とかこの番号を上書きしていますか? –

答えて

0

RabbitMQクラスタがあり、該当するキューがダウンしたノードでホストされているようです。

キューがHAの場合、この問題は発生しません。

リスナーコンテナは(現在)その条件を処理しません。 RabbitMQ自体に接続が失われた場合、これは永遠に再試行されます。

JIRA Issueを開いてご覧ください。コンテナは接続エラーと同じエラーを処理する必要があります。

+0

シンプルなSpring AMQPアプリで問題を再現した[this JIRA](https://jira.spring.io/browse/AMQP-778)を開きました。 –

+0

こんにちは@GaryRussel、 'SimpleMessageListenerContainer'の' missingQueuesFatal'を見ると、これがこの接続の問題を解決する方法になるようです。 @rahulが持っているのと同様の問題もあります。これはあなたが開いたJIRAに関連していますか? JIRAが修正されるまで回避策をお勧めしますか?私は自分自身の 'SimpleMessageListenerContainer'ビーンを宣言しようとしましたが、バインダはビーンとコンストラクタを直接無視するようです。また、SimpleMessageListenerContainer.checkMissingQueuesFatal()は 'applicationContext'が常にnullであるため、' spring.amqp.global.properties'をロードしていないようです。 –

+0

はい。 'missingQueuesFatal = false'が動作します。残念ながら、それはバインダーによって露出されません。 JIRAを閉じた理由は、バインダーのプロパティを公開することで問題を解決できるからです。[#104](https://github.com/spring-cloud/spring-cloud-stream-binder-rabbit/issues/104)を参照してください。 。 –

関連する問題