2017-11-08 2 views
0

私はConcurrentMessageListenerContainerを使って自動コミットをfalseに設定して、トピックからのメッセージを消費してデータベースに書き込みます。データベースがダウンしている場合は、コンテナが投票で現在のレコードを処理するのをやめ、次の処理を行わないようにする必要がありますpoll()DataSourceHealthIndicatorを実装し、データベースの状態をUPにチェックした後、残りのレコードを処理するためにコンテナを再起動します。例外のSpring Kafka Stopコンテナ

私はどのように残りのレコードの処理を停止してコンテナを停止することができます、私はconsumer.close()を使用しようとしました。しかし、それはプロセスを止めず、消費者を投げつけ続けることはすでに閉鎖されています。

答えて

0

container.stop()を呼び出します。 @KafkaListenerを使用している場合は、リスナーコンテナレジストリのstop()を呼び出して、登録されているすべてのコンテナを停止します。

+0

コンテナはAcknowledgingConsumerAwareMessageListenerで利用できませんコンシューマのみ利用可能 – Mayur

+0

リスナーメソッド経由ではありませんが、autowireまたはそれ以外の方法で注入できます。ただし、シャットダウンの遅延が発生するため、リスナースレッドでstop()を呼び出さないでください。 –

+0

私は 'ContainerStoppingErrorHandler'を使用しました。これはあなたの提案とほぼ同じです。 – Mayur

関連する問題