【问题标题】:Debezium, Kafka connect: is there a way to send only payload and not schema?Debezium,Kafka 连接:有没有办法只发送有效负载而不发送模式?
【发布时间】:2021-04-17 07:55:47
【问题描述】:

我在 kafka connect 中有一个发件箱 postgresql 表和 debezium 连接器,它根据添加到表中的行创建 kafka 消息。

我面临的问题是消息格式。这是创建的消息值:

{
  "schema": {
    "type": "string",
    "optional": true,
    "name": "io.debezium.data.Json",
    "version": 1
  },
  "payload": "{\"foo\": \"bar\"}"
}

但是(因为消费者)我需要消息只包含有效负载,如下所示:

{
  "\"foo\": \"bar\""
}

这是我的 kafka 连接器配置的一部分:

"transforms": "outbox",
"transforms.outbox.type": "io.debezium.transforms.outbox.EventRouter",
"transforms.outbox.route.topic.replacement": "${routedByValue}",
"transforms.outbox.route.by.field": "aggregate_type",
"transforms.outbox.table.field.event.payload.id": "aggregate_id",
"transforms.outbox.table.fields.additional.placement": "payload_type:header:__TypeId__"

有没有办法在不创建自定义转换器的情况下实现这一点?

【问题讨论】:

    标签: apache-kafka apache-kafka-connect debezium


    【解决方案1】:

    您似乎正在使用 org.apache.kafka.connect.json.JsonConverterschemas.enable=true 作为您的价值转换器。当您执行此操作时,它会将架构与消息中的有效负载一起嵌入。

    如果您设置value.converter.schemas.enable=false,您应该只获得消息中的有效负载。

    参考:Kafka Connect: Converters and Serialization Explained — JSON and Schemas

    【讨论】:

    • 谢谢,这对 JsonConverter 有用,对于我的消费者案例,我实际上不得不将值转换器更改为 org.apache.kafka.connect.storage.StringConverter 但这个答案和文章让我找到了解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2017-02-08
    • 2016-09-23
    • 2017-02-23
    • 2019-04-22
    相关资源
    最近更新 更多