我有两个Kafka生产者在创建和删除客户时创建消息。每个产生不同主题中的消息。有一些相应的Kafka使用者负责创建和删除顾客的操作。
问题是消息删除客户C1在创建 C1之前消费了。客户C1将被创建,并且永远不会被删除。
如何保证仅在创建消息C1被使用后才使用删除消息C1?还是其他方法来确保在使用kafka时创建和删除动作同步?
仅在主题分区内才能保证在Kafka中进行数据排序。如果您确保客户C1的所有数据(创建和删除)都进入一个分区(例如,通过选择一种客户标识符作为Kafka消息的键),则将确保在创建数据之前将其存储并使用。删除。
但是,我在这里看到的问题是您有两个不同的生产者。因此,总是有可能在创建之前将删除内容写入Kafka主题(由于“创建”生产者中的任何类型的问题)。
理想情况下,您只有一个生产者,涵盖创建和删除。如果可能的话,我还建议将两个使用者合并到同一个ConsumerGroup。