尽早发布,频繁发布!在早些时候的 1.1 Beta1 和 1.0.1 Final 版本之后,我今天很高兴地分享 Debezium 1.1.0.Beta2 发布的消息!
Beta2 的主要新增功能是对使用 Testcontainers 集成测试您的变更数据捕获 (CDC) 设置的支持。此外,用于实现 outbox 模式的 Quarkus 扩展以及用于提取变更事件的 after 状态的 SMT 已经过重新设计,现在提供了更多的配置灵活性。
Testcontainers 支持
在设置 CDC 流水线时,您应该彻底测试您的配置:源数据库必须配置正确(例如,考虑 MySQL 的 binlog 模式),连接器必须使用正确的凭据、过滤器等等。
自动化是关键,因此我们对使用 Testcontainers (DBZ-1722) 编写 CDC 集成测试的新支持感到非常兴奋。只需几行代码,您就可以使用 Linux 容器设置所有必需的服务,部署 Debezium 连接器,并针对发出的变更数据事件运行断言。
我们计划很快发布一篇专门讨论此主题的博客文章,在此期间,请参阅 文档 以了解更多信息。
Quarkus Outbox Pattern 扩展的更多配置选项
对于需要更新其自身数据库以及向外部使用者发送事件的服务,实现 outbox 模式 的 Quarkus 扩展 非常有用:通过将事件写入“outbox”表并从那里使用 Debezium 捕获它们,可以避免对数据库和 Apache Kafka 进行不安全的“双重写入”。
为了提供更大的灵活性,Quarkus 扩展现在允许完全灵活地自定义 outbox 表的列类型 DBZ-1711。例如,您可以将选项 quarkus.debezium-outbox.payload.column-definition 设置为 JSONB NOT NULL,以便为 outbox 表的 payload 列使用 PostgreSQL 的 JSONB 列。
更灵活的 After 状态提取
用于 提取变更事件的 after 状态 的 SMT 现在允许更灵活地传播特定事件属性:使用新的 add.fields 和 add.headers 选项,任何顶级属性(op、ts_ms)以及 source 和 transaction 属性都可以传播到出站记录和/或作为 Kafka 记录的标头。
transforms=unwrap,...
transforms.unwrap.type=io.debezium.transforms.ExtractNewRecordState
transforms.unwrap.add.fields=table,lsn
transforms.unwrap.add.headers=op,source.ts_ms 现有的 operation.header 和 add.source.fields 选项已被弃用,将在未来的 Debezium 版本中移除。
其他更改和错误修复
Debezium 1.1 Beta2 版本共解决了 13 个问题。
最值得注意的是,已缓解一个已知的 Kafka Connect 问题,该问题可能导致在停止 PostgreSQL 或 Oracle 连接器时错过变更事件(DBZ-1766),并且用于 提取新文档状态 的 MongoDB SMT 可以优雅地处理不受 Apache Avro 支持的字符(例如 $ref)的标识符(DBZ-1767)。
非常感谢此版本的所有贡献者:Alex Soto、Daan Roosen、John Psoroulas、Matthias Wessendorf、Melissa Winstanley,以及在 Testcontainers 工作中提供建议的 Sergei Egorov。
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。