首页 > 解决方案 > 多表 Debezium 连接器是否保证跨更改跟踪表的排序?

问题描述

我正在尝试构建一个事件聚合解决方案,该解决方案遵循 MS SQL Server + Debezium MS SQL Server 连接器中的更改数据捕获 (CDC) 模式,将 CDC 作为事件发布到 kafka 主题 + 聚合器服务,它使用 CDC 事件,聚合它们并将聚合发布到不同的主题。

目前,我正在寻找一个问题的明确答案,如果 Debezium 的 SQL Server 连接器(它跟踪多个表并使用主题路由转换将所有消息路由到同一主题)保证它将以“全局”顺序从所有跟踪表中发布事件(例如,如果对表 A 的更改发生在对表 B 的更改之前,则保证首先发布有关表 A 中更改的事件)。

我已经阅读了此处的文档并进行了一些测试,这似乎是 Debezium 提供的保证,但文档中的措辞有点模棱两可。

标签: sql-serverapache-kafkaapache-kafka-connectdebezium

解决方案


The connector sorts the changes that it reads in ascending order, based on the values of their commit LSN and change LSN. This sorting order ensures that the changes are replayed by Debezium in the same order in which they occurred in the database.

简而言之,如果它在同一个事务中,它基于更改的顺序。如果不是,则以交易完成的时间为准。


推荐阅读