27.6. コンシューマーエラーの処理
Kafka コンシューマーは kafka ブローカーからメッセージをポーリングしている間、エラーが発生する可能性があります。本セクションでは、何が起こるか、設定可能な内容を説明します。
コンシューマーは、Kafka ポーリング
API を呼び出すときに例外を出力することがあります。たとえば、無効なデータが原因でメッセージをデシリアライズできない場合や、その他の種類のエラーなどがシリアライズできない場合などです。これらのエラーは、再試行可能 な KafkaException
の形式になります。再試行できる例外(RetriableException
)は、(ポーリングのタイムアウトのある)再試行されます。その他のすべての種類の例外は、pollOnError 設定に従って処理されます。この設定には次の値があります。
- DISCARD はメッセージを破棄し、次のメッセージのポーリングを続行します。
- ERROR_HANDLER は Camel のエラーハンドラーを使用して例外を処理し、その後、次のメッセージのポーリングを続行します。
- RECONNECT はコンシューマーを再接続し、再度メッセージのポーリングを試行します。
- RETRY により、コンシューマーは同じメッセージのポーリングを再度再試行します。
- STOP はコンシューマーを停止します(コンシューマーが再度メッセージを消費できるようにする必要がある場合は手動で起動/再起動する必要があります)。
デフォルトは ERROR_HANDLER で、Camel のエラーハンドラー(設定されている場合)が原因となった例外を処理できるようにします。その後、次のメッセージのポーリングを続行します。この動作は、Camel コンポーネントが持つ bridgeErrorHandler オプションと似ています。
高度な制御では、org.apache.camel.component.kafka.PollExceptionStrategy
のカスタム実装をコンポーネントレベルで設定できます。これにより、上記のストラテジーによってどの例外が発生するかを制御できます。