12.3. 以 CloudEvents 格式发出 Debezium 更改事件记录
CloudEvents 是以常见方式描述事件数据的规格。其目的是跨服务、平台和系统提供互操作性。Debezium 允许您配置 Db2、MongoDB、MySQL、Oracle、PostgreSQL 或 SQL Server 连接器来发出符合 CloudEvents 规格的更改事件记录。
以 CloudEvents 格式发出更改事件记录是一项技术预览功能。技术预览功能不被红帽产品服务级别协议(SLA)支持,且可能无法完成。因此,红帽不推荐在生产环境中实施任何技术预览功能。此技术预览功能为您提供对即将推出的产品创新的早期访问,允许您在开发过程中测试并提供反馈。如需有关支持范围的更多信息,请参阅 技术预览功能支持范围。
CloudEvents 规格定义:
- 一组标准化事件属性
- 定义自定义属性的规则
- 用于映射事件格式到序列化表示的编码规则,如 JSON 或 Apache Avro
- 用于传输层的协议绑定,如 Apache Kafka、HTTP 或 AMQP
要将 Debezium 连接器配置为发出符合 CloudEvents 规格的更改事件记录,Debebe 提供了 io.debezium.converters.CloudEventsConverter
,它是一个 Kafka Connect 消息转换器。
目前,只能使用结构化映射模式。CloudEvents 更改事件 envelope 可以是 JSON 或 Avro,您可以使用 JSON 或 Avro 作为每个 envelope 类型的数据格式。有关以 CloudEvents 格式发出更改事件的信息如下:
有关使用 Avro 的详情,请参考:
12.3.1. CloudEvents 格式的 Debezium 更改事件记录示例 复制链接链接已复制到粘贴板!
以下示例显示了 PostgreSQL 连接器发送的 CloudEvents 更改事件记录类似如下。在本例中,PostgreSQL 连接器配置为使用 JSON 作为 CloudEvents 格式 envelope,也可以用作 数据格式
。
项 | Description |
---|---|
1 | 连接器根据更改事件的内容为更改事件生成的唯一 ID。 |
2 |
事件源,这是由连接器配置中 |
3 | CloudEvents 规格版本。 |
4 |
生成更改事件的连接器类型。此字段的格式是 |
5 | 源数据库中更改的时间。 |
6 |
描述 |
7 |
操作标识符。可能的值有 |
8 |
来自 Debezium 更改事件已知的所有 |
9 |
在连接器中启用时,从 Debezium 更改事件已知的 |
10 |
实际的数据更改。根据操作和连接器,数据可能包含在、或 |
以下示例还显示了 PostgreSQL 连接器发出的 CloudEvents 更改事件记录是什么样子。在本例中,PostgreSQL 连接器再次配置为使用 JSON 作为 CloudEvents 格式 envelope,但这一次连接器被配置为使用 Avro 作为 数据格式
。
项 | Description |
---|---|
1 |
表示 |
2 | Avro 数据遵循的 schema 的 URI。 |
3 |
|
也可以将 Avro 用于 envelope 和 data
属性。
12.3.2. 配置 Debezium CloudEvents converter 示例 复制链接链接已复制到粘贴板!
在 Debezium 连接器配置中配置 io.debezium.converters.CloudEventsConverter
。以下示例演示了如何配置 CloudEvents converter 来发出具有以下特征的更改事件记录:
- 使用 JSON 作为信封。
-
使用
http://my-registry/schemas/ids/1
中的 schema registry 将data
属性序列化为二进制 Avro 数据。
项 | 描述 |
---|---|
1 |
指定 |
CloudEvents 转换器转换 Kafka 记录值。在同一个连接器配置中,如果要对记录键进行操作,您可以指定 key.converter
。例如,您可以指定 StringConverter
、LongConverter
、JsonConverter
或 AvroConverter
。
12.3.3. Debezium CloudEvents converter 配置选项 复制链接链接已复制到粘贴板!
当您将 Debezium 连接器配置为使用 CloudEvent converter 时,您可以指定以下选项。
选项 | 默认 | 描述 |
|
用于 CloudEvents envelope 结构的编码类型。该值可以是 | |
|
用于 | |
N/A |
使用 JSON 时要传递给底层转换器的任何配置选项。 | |
N/A |
使用 Avro 时要传递给底层转换器的任何配置选项。 | |
none |
指定应如何调整模式名称以与连接器使用的消息转换器兼容。该值可以是 |