【发布时间】:2021-06-12 18:54:58
【问题描述】:
我在 RDBMS 中有两个业务实体:Associate 和 AssociateServingStore。我计划有两个主题目前正在将 ADD/UPDATE/DELETE 写入 AssociateTopic 和 AssociateServingStoreTopic,这两个主题被多个下游系统使用,这些系统将用于他们自己的业务需求。
每当从 UI 添加 Associate/AssociateServingStore 时,目前我将 Associate 和 AssociateServingStore 写入两个单独的主题,并且我最后有一个消费者来阅读这两个主题,问题是可以从中读取消息的顺序两个单独的主题..因为这遵循一个工作流程,如果不先阅读 Associate ,我将无法阅读 AssociateServingStore .. 如何按顺序阅读它们? (使用分区键,我可以按分区内相同主题的顺序读取数据)但是在这里我有两个单独的主题并想按顺序阅读,首先阅读 Associate & 然后 AssociateServingSotre 以及如何以我可以阅读的方式设计它在 AssociateServingStore 之前关联。
如果我自己以消费者的身份思考,我计划读取 Associate 的前 50 行,然后从 AssocateServingStore 读取 50 行并处理消息,但问题是如果我从所消耗的 50 条记录中获取 AssociateServingStore 中的一行从前 50 个关联事件中尚未读取/处理,我会在最后遇到问题,说在子插入时未找到父记录。
如何在这些 RDBMS 业务事件的情况下设计消费者,我们有多个主题但按顺序阅读它们,这样我就不会陷入在阅读父主题消息之前可能会阅读特定子主题消息的情况,并且在插入/更新期间遇到问题,例如找不到父记录。有没有办法我们可以在临时表中暂存数据并使用时间戳相应地处理它们?我想不出可以保证读取顺序并相应地处理它们的设计
有什么建议吗?
【问题讨论】:
标签: apache-kafka event-handling kafka-consumer-api confluent-platform azure-eventhub