开云体育官方注册网址Debezium事件反序列化

该功能目前处于孵化状态,即准确的语义,配置选项等可能会根据我们收到的反馈在未来的版本中改变。如果您在使用这些SerDes时遇到任何问题,请告诉我们。

开云体育官方注册网址Debezium以复杂消息结构的形式生成数据更改事件。这个消息稍后会被配置好的Kafka Connect转换器序列化,消费者负责将其反序列化为逻辑消息。为了这个目的,卡夫卡使用了所谓的并行转换器

开云体育官方注册网址Debezium提供SerDes (io.开云体育官方注册网址debezium.serde.DebeziumSerdes)来简化消费者的反序列化,无论是Kafka流管道还是普通Kafka消费者。

JSON SerDe

JSON SerDe反序列化JSON编码的更改事件,并将其转换为Java类。在内部这是通过使用杰克逊Databind

使用者使用。创建serde实例

final Serde Serde = 开云体育官方注册网址DebeziumSerdes.payloadJson(MyType.class);

然后,使用者将接收逻辑Java类型MyType其字段是由JSON消息初始化的。这适用于键和值。也可以使用普通的Java类型,如整数,例如当键由单个键组成时INT字段。

当Kafka Connect使用JSON转换器时,它通常提供两种操作模式——带模式或不带模式。如果使用模式,则消息如下所示:

{"schema":{…}, "payload": {"op": "u", "source":{…}, " ts_ms " : "...", " 前”:{“field1”:“oldvalue1”、“field2”:“oldvalue2”},“后”:{“field1”:“newvalue1”、“field2”:“newvalue2”}}}

然而如果没有模式,结构看起来更像这样:

{"op": "u", "source":{…}, " ts_ms " : "...", " 前”:{“field1”:“oldvalue1”、“field2”:“oldvalue2”},“后”:{“field1”:“newvalue1”、“field2”:“newvalue2}}

类驱动反序列化行为from.field配置选项,并遵循以下规则:

  • 如果消息包含模式,则使用有效载荷只有

  • 如果键是反序列化的,则将键字段映射到目标类中

  • 如果该值是反序列化的,并且包含Debezium事件信封,那么:开云体育官方注册网址

    • 如果from.field未设置时,则将完整的信封反序列化为目标类型

    • 否则,将反序列化并仅将配置为目标类型的字段的内容映射为目标类型,从而有效地平铺消息

  • 如果该值是反序列化的,并且包含一个扁平的消息(例如,当使用SMT for时)事件压扁)然后将平铺的记录映射到目标逻辑类型

配置选项

财产

默认的

描述

N/A

如果要反序列化包含完整信封的消息,则为空,之前/如果只需要更改之前或之后的数据值。

确定在遇到未知属性时是否应该静默忽略它,或者是否应该抛出运行时异常。