0
私はConcurrentMessageListenerContainer
を使って自動コミットをfalseに設定して、トピックからのメッセージを消費してデータベースに書き込みます。データベースがダウンしている場合は、コンテナが投票で現在のレコードを処理するのをやめ、次の処理を行わないようにする必要がありますpoll()
。 DataSourceHealthIndicator
を実装し、データベースの状態をUPにチェックした後、残りのレコードを処理するためにコンテナを再起動します。例外のSpring Kafka Stopコンテナ
私はどのように残りのレコードの処理を停止してコンテナを停止することができます、私はconsumer.close()
を使用しようとしました。しかし、それはプロセスを止めず、消費者を投げつけ続けることはすでに閉鎖されています。
コンテナはAcknowledgingConsumerAwareMessageListenerで利用できませんコンシューマのみ利用可能 – Mayur
リスナーメソッド経由ではありませんが、autowireまたはそれ以外の方法で注入できます。ただし、シャットダウンの遅延が発生するため、リスナースレッドでstop()を呼び出さないでください。 –
私は 'ContainerStoppingErrorHandler'を使用しました。これはあなたの提案とほぼ同じです。 – Mayur