Error Handling
Overview
このガイドでは、MongoDB Kafka Sink Connector でエラーを処理する方法を学習できます。 次のリストは、Sink Connector でエラーが発生する一般的なシナリオを示しています。
Avro 直列化を使用してトピックに書き込み、Protobuf 逆直列化を使用してそのトピックからメッセージをデコードする
変更イベント ドキュメントを含まないメッセージに対して 変更データ キャプチャ ハンドラーを使用する
受信ドキュメントに無効な単一メッセージ変換を適用した場合
Sink Connector でエラーが発生すると、次の 2 つのアクションが実行されます。
エラーの処理
コネクタでエラーが発生した場合、何らかの方法でエラーを処理する必要があります。 Sink Connector は、エラーに応答して次の操作を実行できます。
すべてのエラーで停止
デフォルトでは、Sink Connector はエラーに遭遇すると終了し、メッセージの処理を停止します。 Sink connector のエラーが重大な問題を示している場合は、これが適切なオプションです。
Sink Connector がクラッシュした場合は、メッセージの処理を再開するために以下のいずれかのアクションを実行し Connector を再起動する必要があります。
Sink Connector が一時的にエラーを許容できるようにする
Sink Connector の設定を更新して、メッセージを処理できるようにします
トピックからエラー メッセージを削除する
エラーが発生したときに Sink Connector を停止させるには、 errors.tolerance
オプションの値を指定しないか、以下を Connector 構成に追加します。
errors.tolerance=none
すべてのエラーを許容する
すべてのエラーを許容し、メッセージの処理を停止しないように Sink Connector を構成できます。 これは Sink Connector を起動してすばやく実行するのに適したオプションですが、問題が発生した場合にフィードバックが受け取られないため、コネクターに問題が発生するリスクがあります。
次のオプションを指定することで、Sink Connector がすべてのエラーを許容できるようになります。
errors.tolerance=all
警告
順序付き一括書込みでメッセージがスキップされる可能性あり
コネクタを エラーを許容するように設定し、順序付き一括書き込みを使用すると、データが失われる可能性があります。 エラーを許容するようにコネクターを設定し、順序なしの一括書込みを使用すると、データの損失は少なくなります。 一括書き込み操作の詳細については、 の「書込みモデル戦略」ページを参照してください。
データエラーを許容する
データ エラーのみを許容し、他のすべてのエラーの処理を停止するように Sink Connector を構成できます。 この設定では、コネクタはデッド レター キューにデータ エラーを送信します(構成されている場合)。
次のオプションを指定して、データエラーのみを許容するように Sink Connector を設定します。
errors.tolerance=data
トピックへのエラーとメッセージの書き込み
Sink Connector を構成して、エラーを書込み (write) とメッセージをトピック(デッド レター キューと呼ばれる)のドキュメントに送信し、さらに検査や処理が可能になります。 デッド レター キューは、Apache Kafka などのメッセージ キュー システム内のロケーションであり、エラーをクラッシュしたり無視したりする代わりに、システムがエラー メッセージをルーティングします。 デッドレターキューは、プログラムを停止した際のフィードバックとすべてのエラーを許容する耐久性を組み合わせたもので、ほとんどの配置におけるエラー処理の開始点として適しています。
次のオプションを指定することで、Sink Connector がすべてのエラーメッセージをデッドレターキューにルーティングすることができます。
errors.tolerance=all errors.deadletterqueue.topic.name=<name of topic to use as dead letter queue>
エラーの具体的な理由とエラー メッセージを含める場合は、次のオプションを使用します。
errors.deadletterqueue.context.headers.enable=true
デッド レター キューについて詳しくは、Confluent のガイドを「 デッド 文字のキュー に関するもの 」を参照してください 。
別のデッド レター キューの構成例については、「 デッド 文字キューの構成例 」を参照してください。
コネクターが定義する例外、およびコンテキスト ヘッダーとしてデッド レター キューに書込む例外の詳細については、「一括書込みの例外 」を参照してください。
ログ エラー
許容されたエラーと許容されないエラーをログファイルに記録できます。 エラーをログに記録する方法を確認するには、タブをクリックします。
次のデフォルト オプションを使用すると、 Kafka Connect はアプリケーション ログに未タームのエラーのみを書込みます。
errors.log.enable=false
次のオプションを使用すると、 Kafka Connect は許容されているエラーと許容されていないエラーの両方をアプリケーション ログに書込みます。
errors.log.enable=true
メッセージのトピックやオフセットなど、メッセージに関するメタデータをログに記録する場合は、次の オプションを使用します。
errors.log.include.messages=true
詳細については 、 Kafka Connect を使用したログ記録 に関する Confluent のガイドを参照してください。
Connectorレベルでのエラーの処理
Sink Connector には、コネクターレベルでエラー処理を構成できるオプションが用意されています。 オプションは次のとおりです。
Kafka 接続オプション | MongoDB Kafka Connectorオプション |
---|---|
errors.tolerance | mongo.errors.tolerance |
errors.log.enable | mongo.errors.log.enable |
Kafka Connect フレームワークに関連するエラーではなく、MongoDB に関連するエラーに対してコネクターが異なる応答をする場合は、これらのオプションを使用します。
詳細については、次のリソースを参照してください。