使用多个线程扩展Kafka消息消耗

时间:2017-12-13 15:54:39

标签: multithreading apache-kafka

在接收Kafka消息时实现多线程是否有助于处理许多消息? 例如,我想做一些高延迟的消息处理,我想知道是否应该实现多线程来处理消息处理。 有人有任何想法吗?

1 个答案:

答案 0 :(得分:2)

我不太清楚你想要实现什么,但考虑到这一点。通过在主题中包含更多分区和同一个使用者组中的更多使用者,可以实现消费者方面的扩展,以便您可以并行化从不同消费者获取来自不同分区的消息(最大并行度使用分区等于消费者数量)。然后,在每个使用者中,因为从分区中获取消息是通过循环内的poll()完成的,所以当然可以从poll中获取消息并将它们放在内部缓冲区中并使用线程池来并行处理它们(如果排序对你来说并不重要)并且再次将主线程留给poll()以获取新消息。与订单相关,您必须注意提交阶段,因为处理消息乱序也意味着不按顺序提交偏移。