我正在尝试构建一个事件聚合解决方案,该解决方案遵循MS SQL Server + Debezium MS SQL Server Connector中的更改数据捕获(CDC)模式,将CDC作为事件发布到kafka主题+聚合器服务,该服务消费CDC事件,聚合它们并将聚合发布到不同的主题。
目前,我正在寻找一个问题的明确答案,如果Debezium的SQL Server连接器,跟踪多个表并使用主题路由转换将所有消息路由到同一主题,保证它将在"全局"中发布所有跟踪表中的事件。顺序(例如,如果对表A的更改发生在对表B的更改之前,则保证首先发布关于表A更改的事件)。
我已经通读了这里的文档并做了一些测试,似乎这是Debezium提供的保证,但是文档中的措辞有点模糊。
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.
简单来说,如果是在同一事务中,则基于更改的顺序。如果不是,它将基于事务完成的时间。