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