Apache Kafka プロバイダーでのエラー処理
Kafkaでの処理中にメッセージにエラーが発生した場合は、それらのメッセージを再処理するか、 Kafkaから有効期限が切れた後に削除されるようにマークすることができます。
順次キュー内のメッセージのエラー処理
順次キューでは、一度に 1 つのメッセージのみエラーになるため、エラー・キューが使用されません。 メッセージにエラーがある場合、キュー内でそのメッセージの後ろにあるメッセージが処理されません。 ただし、エラーがあっても、新しいメッセージがキューに追加されなくなるわけではありません。 Kafka は、 Kafkaで設定された保存時間に基づいて、処理されたメッセージと未処理のメッセージの両方をキューに保持します。
Kafkaでは、 Kafka 保存時間に注意してください。 例えば、48 時間に設定すると、金曜日の夜遅くにメッセージがエラーになります。 他のメッセージはエラー・メッセージの後ろにスタックします。 月曜日の朝までエラー・メッセージが対処されなかった場合、メッセージの処理が再開される前に、エラー・メッセージとその他の未処理のメッセージが期限切れになる可能性があります。
Kafka でエラー状態で有効期限が切れたメッセージは、メッセージ再処理アプリケーションで再処理できます。
メッセージがキューに入っているが処理されていない場合 (クーロン・タスクがアクティブでない場合に発生)、メッセージが期限切れになる可能性があります。 メッセージにエラーがあり処理されなかったため、これらのメッセージはメッセージ再処理アプリケーションでは処理できず、復旧できません。
メッセージにエラーがあり、そのメッセージを再処理しない場合は、メッセージ再処理アプリケーションでこれらのメッセージに削除対象としてマーク付けします。
継続中のキュー内のメッセージのエラー処理
継続中のキュー内のエラーがあるメッセージは、再処理されるようにキューの最後に書き込まれます。 エラーがあるメッセージを再処理できる回数は、この外部システムの「最大再試行回数 (Maximum Retry Count)」フィールドの値によって決まります。
継続中のキューの再配信の遅延
管理者は、継続中のキューに再試行回数が指定されている場合に有効になる、再配信の遅延を構成できます。 再配信遅延が mxe.int.kafkaredeldelay プロパティーで指定されている場合、キューのクーロン・タスクは、遅延時間が経過するまで Kafka キューの末尾にメッセージを再書き込みしません。
例えば、遅延が 30 秒に設定されると、継続中のキューのクーロン・タスクは、30 秒間休止してから、エラーがあるメッセージをキューの最後に再書き込みします。 この遅延により、キュー内の他のメッセージを処理することができ、そのメッセージの一部に、エラーが発生したメッセージを正常に処理するために必要なオブジェクトが含まれている可能性があります。 このメカニズムを使用する場合の欠点は、継続している処理からクーロン・タスクが遅延されるため、その遅延によってプロセッサーがスローダウンすることです。
再配信の遅延を実装するには、システムのプロパティー・アプリケーションで mxe.int.kafkaredeldelay プロパティーを作成して、遅延時間を秒単位で設定します。