重要
このページの日本語コンテンツは古くなっている可能性があります。最新の英語版コンテンツをご覧になるには、こちらをクリックしてください。
Confluent Cloud デッドレターキュー¶
さまざまな理由で無効なレコードが生まれることがあります。Connect で見られる典型的なエラーは、シリアル化と逆シリアル化(serde)のエラーです。たとえば、シンクコネクターに JSON フォーマットのレコードが届いたものの、そのシンクコネクターの構成では Avro などの別のフォーマットが想定されていた場合にエラーが発生します。Confluent Cloud では、serde エラーが発生してもコネクターは停止しません。代わりに、コネクターはレコードの処理を続行してエラーをデッドレターキュー(DLQ)に送信します。エラーが発生した場合には、DLQ トピックのレコードのレコードヘッダーを使用してエラーを分析し、トラブルシューティングすることができます。通常、このようなエラーは、簡単に解決できる構成エラーです。
注釈
Confluent Platform でシンクコネクターの DLQ トピックがどのように作成されるかに関する詳細については、「デッドレターキュー」を参照してください。
DLQ の表示¶
Confluent Cloud でシンクコネクターを起動すると、DLQ トピックが自動的に生成されます。dlq-<connector-ID>
というトピックの名前を以下に示します。
DLQ トピックをクリックして開きます。
DLQ トピック¶
デフォルトの表示を変更してレコードのリストを表示し、レコードを開くアイコン(以下の例では、レコード ID の隣にあるアイコン)をクリックします。
DLQ トピックレコード¶
レコードを開いたら、Header を選択します。
DLQ レコードヘッダー¶
各 DLQ レコードヘッダーには、エラーが発生したトピックの名前、エラーの例外、スタックトレースなどの情報が含まれています。DLQ レコードヘッダーを確認し、エラーを解決するために必要な構成変更を特定します。
レコードヘッダーは、上記のように Confluent Cloud で表示することや、JSON ファイルとしてダウンロードすることができます。以下のヘッダー出力に、提供された情報を示しています。この例では、pageviews
という名前のトピックのデシリアライズするのに失敗したためエラーが発生しました。コネクターは Avro フォーマット済みのデータを想定していましたが、JSON などの異なるデータフォーマットが提供されました。解決するには、コネクターの構成を確認し、想定されるトピックフォーマットを Avro から JSON に変更します。
[
{
"key": "__connect.errors.topic",
"stringValue": "pageviews"
},
{
"key": "__connect.errors.partition",
"stringValue": "1"
},
{
"key": "__connect.errors.offset",
"stringValue": "8583"
},
{
"key": "__connect.errors.connector.name",
"stringValue": "lcc-g3yom"
},
{
"key": "__connect.errors.task.id",
"stringValue": "0"
},
{
"key": "__connect.errors.stage",
"stringValue": "VALUE_CONVERTER"
},
{
"key": "__connect.errors.class.name",
"stringValue": "io.confluent.connect.avro.AvroConverter"
},
{
"key": "__connect.errors.exception.class.name",
"stringValue": "org.apache.kafka.connect.errors.DataException"
},
{
"key": "__connect.errors.exception.message",
"stringValue": "Failed to deserialize data for topic pageviews to Avro: "
},
{
"key": "__connect.errors.exception.stacktrace",
"stringValue": "org.apache.kafka.connect.errors.DataException: Failed to deserialize data for topic pageviews to Avro: /
\n\tat io.confluent.connect.avro.AvroConverter.toConnectData(AvroConverter.java:110) ...omitted"
}
]
Limitations¶
Currently, you cannot add dead letter queue (DLQ) topics to the list of topics in the sink connector configuration. The connector will fail if a DLQ topic is consumed by the sink connector.
次のステップ¶
ポッドキャスト『Handling Message Errors and Dead Letter Queues in Apache Kafka featuring Jason Bell』をお聞きください。