出口CloudEvents
CloudEvents是以通用方式描述事件数据的规范。它的目标是提供跨服务、平台和系统的互操作性。开云体育官方注册网址Debezium允许您配置MongoDB、MySQL、PostgreSQL或SQL Server连接器,以发出符合CloudEvents规范的更改事件记录。
对CloudEvents的支持处于孵化状态。这意味着准确的语义、配置选项和其他细节可能会在未来的版本中根据反馈而改变。请让我们知道您的具体要求,或者如果您在使用此功能时遇到任何问题。 |
CloudEvents规范定义了:
一组标准化的事件属性
定义自定义属性的规则
将事件格式映射到序列化表示(如JSON或Avro)的编码规则
传输层的协议绑定,如Apache Kafka、HTTP或AMQP
为了配置Debezium连接器开云体育官方注册网址以发出符合CloudEvents规范的变更事件记录,Debezium提供了io.开云体育官方注册网址debezium.converters.CloudEventsConverter
,这是一个Kafka连接消息转换器。
目前只支持结构化映射模式。CloudEvents更改事件信封可以是JSON或Avro,每种信封类型都支持JSON或Avro作为数据
格式。预计未来的Debezium版本将支持二进制映射模式。开云体育官方注册网址
有关使用Avro的信息,请参见:
事件格式示例
下面的例子展示了一个由PostgreSQL连接器发出的CloudEvents更改事件记录的样子。在这个例子中,PostgreSQL连接器被配置为使用JSON作为CloudEvents格式信封和数据
格式。
{"id": "name:test_server;lsn:29274832;txId:565",(1)"source": "/d开云体育官方注册网址ebezium/postgresql/test_server",(2)"specversion": "1.0",(3)"type": "io.d开云体育官方注册网址ebezium.postgresql.datachangeevent",(4)“时间”:“2020-01-13T13:55:39.738Z”,(5)"datacontenttype": "application/json",(6)"io开云体育官方注册网址debeziumop": "r",(7)"io开云体育官方注册网址debeziumversion": "2.1.2.Final",(8)"io开云体育官方注册网址debeziumconnector": "postgresql", "iodebeziumname": "test_server", "iodebeziumtsms": "1578923739738", "iodebeziumsnapshot": "true", "iodebeziumdb": "postgres", "iodebeziumschema": "s1", "iodebeziumtable": "a", "iodebeziumtxId": "565", "iodebeziumlsn": "29274832", "iodebeziumxmin": null, "iodebeziumtxId": "565", "iodebeziumtxId": "565",(9)"io开云体育官方注册网址debeziumtxtotalorder": "1", "iodebeziumtxdatacollectionorder": "1", "data": {(10)“之前”:空,“后”:{“pk”:1、“名称”:“Bob”}}}
1 | 连接器根据变更事件的内容为变更事件生成的唯一ID。 |
2 | 事件的源,它是数据库的逻辑名,由开云体育电动老虎机topic.prefix 属性。 |
3. | CloudEvents规范版本。 |
4 | 生成变更事件的连接器类型。该字段的格式为io.开云体育官方注册网址debezium。CONNECTOR_TYPE.datachangeevent .的价值CONNECTOR_TYPE 是mongodb ,mysql ,postgresql ,或sqlserver . |
5 | 源数据库中更改的时间。开云体育电动老虎机 |
6 | 控件的内容类型数据 属性,在本例中为JSON。唯一的选择是阿芙罗。 |
7 | 操作标识符。可能的值为r 对于阅读,c 为创建、u 如需更新,或d 删除。 |
8 | 所有源 属性被映射到CloudEvents扩展属性,这些属性来自Deb开云体育官方注册网址ezium更改事件io开云体育官方注册网址debezium 属性名的前缀。 |
9 | 当在连接器中启用时,每个事务 属性映射到一个CloudEvents扩展属性开云体育官方注册网址io开云体育官方注册网址debeziumtx 属性名的前缀。 |
10 | 实际数据本身就会改变。根据操作和连接器的不同,数据可能包含之前 ,后 和/或补丁 字段。 |
下面的示例还展示了由PostgreSQL连接器发出的CloudEvents更改事件记录的样子。在本例中,PostgreSQL连接器再次配置为使用JSON作为CloudEvents格式信封,但这一次连接器配置为使用Avro用于数据
格式。
{"id": "name:test_server;lsn:33227720;txId:578", "source": "/deb开云体育官方注册网址ezium/postgresql/test_server", "specversion": "1.0", "type": "io.debezium.postgresql.datachangeevent", "time": "2020-01-13T14:04:18.597Z", "datacontenttype": "application/avro",(1)"dataschema": "http://my-registry/schemas/ids/1",(2)" i开云体育官方注册网址odebeziummop ": "r", "iodebeziumversion": "2.1.2. "Final", "io开云体育官方注册网址debeziumconnector": "postgresql", "iodebeziumname": "test_server", "iodebeziumtsms": "1578924258597", "iodebeziumsnapshot": "true", "iodebeziumdb": "postgres", "iodebeziumschema": "s1", "iodebeziumtable": "a", "iodebeziumtxId": "578", "iodebeziumlsn": "33227720", "iodebeziumxmin": null, "iodebeziumtxId": "578", "iodebeziumtxtotalorder": "1", "iodebeziumtxdatacollectionorder": "1", "data": "AAAAAAEAAgICAg=="(3)}
1 | 指示数据 属性包含Avro二进制数据。 |
2 | Avro数据所遵循的模式的URI。 |
3. | 的数据 属性包含base64编码的Avro二进制数据。 |
它也可以使用Avro信封以及数据
属性。
示例配置
配置io.开云体育官方注册网址debezium.converters.CloudEventsConverter
在Debeziu开云体育官方注册网址m连接器配置中。下面的示例展示了如何配置clouddevents转换器以发出具有以下特征的更改事件记录:
使用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转换器转换Kafka记录值。在相同的连接器配置中,您可以指定key.converter
如果你想操作记录键。例如,您可以指定StringConverter
,LongConverter
,JsonConverter
,或AvroConverter
.
配置选项
在配置Debezium连接器以使用Clou开云体育官方注册网址dEvent转换器时,可以指定以下选项。
选项 |
默认的 |
描述 |
|
用于CloudEvents信封结构的编码类型。取值为 |
|
|
类使用的编码类型 |
|
N/A |
使用JSON时传递给底层转换器的任何配置选项。的 |
|
N/A |
使用Avro时传递给底层转换器的任何配置选项。的 |
|
没有一个 |
指定应如何调整模式名称以与连接器使用的消息转换器兼容。取值为 |