2017-08-25 16 views
0

私たちはSpring Kafkaを使用してKafka Consumerを実装しています。単一のメッセージの処理が失敗した場合、私が正しく理解しているように、Kafka処理できないメッセージを消費する - 後で壊れたメッセージを再処理する方法?

のオプションがあり
  • いくつかの再試行が使用して処理しています気にしてばかりACK
  • ないでくださいRetryTemplate
  • も、これが機能しない場合RecoveryCallback

私はあなたのベストプラクティスがそれにどういうことをしているのですか? DeserializationException(JSON形式のメッセージ用)や長いローカルストレージのダウンタイムなど、単純なアプリケーションの例外を考えています。壊れたアプリケーションを修正するために、ホットフィックスの展開のような余分な作業が必要です。エラーメッセージ。

メッセージを失う(つまり処理しない)ことは選択肢ではないので、残っている唯一のオプションは、エラーメッセージを一部の永続ストアに保存することです。 g。他の「不具合のあるメッセージ」カフカの話題などであり、後でそれらのイベントを再処理することができ、イベント処理を完全に停止する必要はありません。

どのようにこれらのシナリオを処理しますか?

答えて

3

例として、Spring Cloud Streamがあります。これは、失敗したメッセージを別のトピックに公開するように設定できます。errors.foo;ユーザーはそれを元のトピックに戻して後で再試行できます。

このロジックは、回復コールバックで行われます。

1

エラーメッセージの場合でも、メッセージを一切削除することはできません。したがって、障害のあるメッセージに遭遇すると、その障害のあるレコードの代わりにデフォルトのメッセージを送信し、同時にメッセージを失敗したトピックに送信して後で再試行します。

関連する問題