尽早发布,频繁发布!在早些时候的 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.fieldsadd.headers 选项,任何顶级属性(opts_ms)以及 sourcetransaction 属性都可以传播到出站记录和/或作为 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.headeradd.source.fields 选项已被弃用,将在未来的 Debezium 版本中移除。

其他更改和错误修复

Debezium 1.1 Beta2 版本共解决了 13 个问题

最值得注意的是,已缓解一个已知的 Kafka Connect 问题,该问题可能导致在停止 PostgreSQL 或 Oracle 连接器时错过变更事件(DBZ-1766),并且用于 提取新文档状态 的 MongoDB SMT 可以优雅地处理不受 Apache Avro 支持的字符(例如 $ref)的标识符(DBZ-1767)。

非常感谢此版本的所有贡献者:Alex SotoDaan RoosenJohn PsoroulasMatthias WessendorfMelissa Winstanley,以及在 Testcontainers 工作中提供建议的 Sergei Egorov

Gunnar Morling

Gunnar 是一位软件工程师,内心是一个开源爱好者,目前在 Confluent 担任技术专家。此前,他曾帮助构建一个基于 Apache Flink 的实时流处理平台,并领导了 Debezium 项目,这是一个用于变更数据捕获的分布式平台。他是 Java Champion,并创立了多个开源项目,如 JfrUnit、kcctl 和 MapStruct。Gunnar 是一位热情的博主 (morling.dev),并曾在 QCon、Java One 和 Devoxx 等各种会议上发表演讲。他居住在德国汉堡。

   


关于 Debezium

Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。

参与进来

我们希望您觉得 Debezium 有趣且有用,并希望尝试一下。在 Twitter @debezium 上关注我们,在 Zulip 上与我们聊天,或加入我们的 邮件列表 与社区交流。所有代码都在 GitHub 上开源,因此请在本地构建代码,帮助我们改进现有连接器并添加更多连接器。如果您发现问题或有改进 Debezium 的想法,请告诉我们或 记录一个问题

版权所有 © Debezium 及其作者。保留所有权利。有关我们的商标详情,请访问我们的 商标政策商标列表。第三方商标属于其各自所有者,在此提及并不表示任何认可或关联。
×