从多个主题消费时的Kafka Transactions

时间:2019-06-10 16:46:29

标签: apache-kafka kafka-producer-api

我在读过程写系统中使用Kafka,希望利用恰好一次的处理。

对于从使用者poll读取的每条消息,我都会根据消息的主题和分区来抓取一个缓存的生产者实例。为了生成生产者的交易ID,我使用{consumer group}-{topic}-{partition}。这应该确保如果在处理过程中发生使用者组重新平衡事件,则旧实例将被隔离,从而确保其输出被忽略。目前,这是在每个消息的基础上进行的,次优。

明显的快速提升是从同一主题分区的消息中收集所有输出,并将它们作为单个事务提交。在许多情况下,我们正在阅读多个主题,因此我的问题是:除了以下情况之外,还有什么更好的方法可以确保在这种情况下完全匹配一次:

  • 将来自消费者poll方法的消息按其分组 主题/分区
  • 使用上述“交易ID”方案访问缓存的生产者
  • 遍历各组并处理所有消息, 通过小组的“分区”生产者在一个commitTransaction中提交所有写入和偏移量更新

0 个答案:

没有答案