apache-kafka - 每个分区都有多线程 Kafka 消费者,是否可能并推荐,如果有任何示例片段?

标签 apache-kafka kafka-consumer-api

我们使用的是 Kafka 0.9 版本,并且将大量消息推送到 kafka 主题中的特定分区。在这个主题中有多个这样的分区。我们在这个主题中为每个分区分配了一个消费者,并且我们在外部数据存储的主题分区中手动维护偏移量。 我想知道我们是否开始在主题分区中获取大量消息,是否有可能让消费者处理主题分区是多线程的。因为分配给分区的消费者实例可能无法在我们希望它完成的时间跨度内完成所有记录的处理。 是否有可能有这种带有分区的多线程消费者。推荐吗?此外,如果答案是肯定的,那么多个线程如何进行偏移量管理,因为所有这些线程都在处理同一分区内的消息。有可用的示例片段吗?

请注意:我问的是“消费者处理一个主题中的单个分区”,我不是在消费者组中寻找跨分区的主题

最佳答案

您可以做的是让 1 个线程处理该分区的消息消耗,并让一组工作人员处理这些消息。此解决方案存在一些问题(例如,消息的处理过程可能不按顺序进行)并且也会失败并重试,您需要单独处理它们,因为偏移量提交将由消费者在 (1) 时完成它将消息传递给工作人员或(2)工作人员必须在处理完成时通知消费者,以便消费者可以保留一个列表(按偏移量 asc 排序)并且只有在下一个偏移量之后才会提交偏移量最后提交的偏移量(并从列表中删除)。这个解决方案的缺点是可能有多个偏移量等待提交,因为工作人员速度慢(或消息量大),如果下次消费者出现故障,您将重新处理消息(无论哪种方式都有解决方法)。

希望对您有所帮助!

关于apache-kafka - 每个分区都有多线程 Kafka 消费者,是否可能并推荐,如果有任何示例片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34909516/

相关文章:

apache-kafka - Kafka 命令行生产者/消费者有 1 秒的延迟

java - 将 @Gateway 与 Spring-Integration-Kafka 一起使用

apache-kafka - 删除未使用的 kafka 消费者组

apache-kafka - Kafka 中读取字段 'topics' : java. nio.BufferUnderflowException 时出错

apache-kafka - 如何为kafka主题选择分区数?

java - 自 Spring Boot 升级以来,结合 @ConditionalOnMissingBean 定义 Bean 不起作用

apache-kafka - 卡夫卡流 : one record to multiple records

java - 什么数据格式被认为在 Kafka 上写入速度最快?

apache-kafka - Kafka Connect 进入重新平衡循环

apache-kafka - 在 VirtualBox 中连接到 Kafka