出口CloudEvents

CloudEvents是一种规范,描述事件数据的一种常见方法。其目的是提供互操作性在服务、平台和系统。开云体育官方注册网址Debezium允许您配置MongoDB, MySQL、PostgreSQL或SQL Server连接器发出更改事件记录,符合CloudEvents规范。

支持CloudEvents处于酝酿状态。这意味着精确语义、配置选项和其他细节在未来可能会改变根据反馈修改。请让我们知道您的具体要求或如果你遇到任何问题在使用这个特性。

CloudEvents规范定义了:

  • 一套标准化的事件属性

  • 规则定义自定义属性

  • 编码规则映射事件格式序列化JSON或Avro等表征

  • 等传输层的协议绑定Apache卡夫卡,HTTP或AMQP

配置一个Debezium连接器开云体育官方注册网址发出更改事件记录,符合CloudEvents规范,Debezium提供io.开云体育官方注册网址debezium.converters.CloudEventsConverter,这是一种卡夫卡转换器连接信息。

目前,只有支持结构化的映射模式。CloudEvents更改事件信封可以是JSON或Avro,每个信封类型支持JSON或Avro作为数据格式。预计未来Debezium版本将支持二进制映射模式。开云体育官方注册网址

对于使用Avro的信息,见:

示例事件格式

下面的例子显示了一个CloudEvents发出更改事件记录PostgreSQL连接器的样子。在这个例子中,PostgreSQL连接器配置为使用JSON作为CloudEvents格式信封和也数据格式。

{" id ": "名称:test_server; lsn: 29274832; txId: 565”,(1)“源”:“/ debezi开云体育官方注册网址um / postgresql / test_server”,(2)“specversion”:“1.0”,(3)“类型”:“io.debe开云体育官方注册网址zium.postgresql.datachangeevent”,(4)“时间”:“2020 - 01 - 13 t13:55:39.738z”,(5)“datacontenttype”:“application / json”,(6)“io开云体育官方注册网址debeziumop”:“r”,(7):“i开云体育官方注册网址odebeziumversion 2.3.0.Final”,(8):“i开云体育官方注册网址odebeziumconnector postgresql”、“iodebeziumname”:“test_server”、“iodebeziumtsms”:“1578923739738”,“iodebeziumsnapshot”:“真正的”、“iodebeziumdb”:“postgres”、“iodebeziumschema”:“s1”、“iodebeziumtable”:“一”、“iodebeziumlsn”:“29274832”,“iodebeziumxmin”:空,“iodebeziumtxid”:“565”,(9)“io开云体育官方注册网址debeziumtxtotalorder”:“1”,“iodebeziumtxdatacollectionorder”:“1”,“数据”:{(10)“之前”:空,“后”:{“pk”: 1、“名称”:“Bob”}}}
1 惟一的ID,连接器生成事件的基础上改变事件的内容。
2 事件的来源,这是数据库的逻辑名称指定的开云体育电动老虎机topic.prefix在连接器的配置属性。
3 CloudEvents规范版本。
4 连接器类型生成事件的变化。这个字段的格式io.开云体育官方注册网址debezium。CONNECTOR_TYPE.datachangeevent。的价值CONNECTOR_TYPEmongodb,mysql,postgresql,或sqlserver
5 源数据库的变化。开云体育电动老虎机
6 描述的内容类型数据在本例中属性,它是JSON。唯一的选择是Avro。
7 一个操作标识符。可能的值是r对于阅读,c为创建、u为更新或d删除。
8 所有属性已知Debezium变化事件映射到CloudEvents通开云体育官方注册网址过使用扩展属性io开云体育官方注册网址debezium属性名称的前缀。
9 在连接器中启用时,每一个事务属性的Debezium更改事件映射到CloudEvents开云体育官方注册网址扩展属性使用io开云体育官方注册网址debeziumtx属性名称的前缀。
10 实际的数据变化本身。根据操作和连接器,可能包含的数据之前,和/或补丁字段。

下面的示例还显示了一个CloudEvents发出更改事件记录PostgreSQL连接器的样子。在这个例子中,再次PostgreSQL连接器配置为使用JSON作为CloudEvents信封的格式,但这一次的连接器配置为使用Avro数据格式。

{" id ": "名称:test_server; lsn: 33227720; txId: 578”,“源”:“/ debez开云体育官方注册网址ium / postgresql / test_server”、“specversion”:“1.0”,“类型”:“io.debezium.postgresql.datachangeevent”,“时间”:“2020 - 01 - 13 t14:04:18.597z”、“datacontenttype”:“应用程序/ avro”,(1)“dataschema”:“http://my-registry/schemas/ids/1”,(2)“io开云体育官方注册网址debeziumop”:“r”、“iodebeziumversion”:“tripwire。最后”、“iodebe开云体育官方注册网址ziumconnector”:“postgresql”、“iodebeziumname”:“test_server”、“iodebeziumtsms”:“1578924258597”、“iodebeziumsnapshot”:“真正的”、“iodebeziumdb”:“postgres”、“iodebeziumschema”:“s1”、“iodebeziumtable”:“一”、“iodebeziumtxId”:“578”、“iodebeziumlsn”:“33227720”、“iodebeziumxmin”:空,“iodebeziumtxId”:“578”、“iodebeziumtxtotalorder”:“1”,“iodebeziumtxdatacollectionorder”:“1”、“数据”:“AAAAAAEAAgICAg = = "(3)}
1 表明,数据属性包含Avro二进制数据。
2 URI Avro数据遵循的模式。
3 数据属性包含base64编码Avro二进制数据。

还可以使用Avro信封以及数据属性。

示例配置

配置io.开云体育官方注册网址debezium.converters.CloudEventsConverter在你Debezi开云体育官方注册网址um连接器配置。下面的例子展示了如何配置CloudEvents转换器发出更改事件记录,有以下特点:

  • 使用JSON的信封。

  • 使用模式注册表http://my-registry/schemas/ids/1序列化的数据作为二进制Avro属性数据。

…“价值。converter": "io.debezium.converters.CloudEventsConverter", "value.converter.serializer.type" : "json",(1)“value.converter.data.serializer。”:“avro”、“value.converter.avro.schema.registry类型。url”:“http://my-registry/schemas/ids/1”……
1 指定serializer.type是可选的,因为json是默认的。

CloudEvents转换器转换卡夫卡记录值。在相同的连接器配置,您可以指定key.converter如果你想操作记录键。例如,您可以指定StringConverter,LongConverter,JsonConverter,或AvroConverter

配置选项

当您配置Debezium连接器使用Clou开云体育官方注册网址dEvent转换器可以指定以下选项。

表1。CloudEvents转换器配置选项的描述

选项

默认的

描述

json

编码类型用于CloudEvents信封的结构。价值可以jsonavro

json

使用的编码类型数据属性。价值可以jsonavro

N /一个

任何配置选项传递到底层当使用JSON转换器。的json。前缀是移除。

N /一个

任何配置选项使用Avro时通过底层的转换器。的avro。前缀是移除。例如,对于Avro数据,你会指定avro.schema.registry.url选择。

没有一个

指定应该如何调整的兼容模式名消息转换器使用的连接器。价值可以没有一个avro