Kafka将多个线程发布到同一分区

时间:2018-08-02 17:47:27

标签: apache-kafka spring-kafka

我有一笔交易要在同一个分区上将数千条记录发布到Kafka。我正在使用Spring KafkaTemplate进行此操作。为了提高当前逻辑的性能,我正在考虑在多个线程中进行Kafka发布。所有要发布的事件都具有相同的密钥,并且打算进入相同的分区。使用多个线程会导致多个线程之间的偏移冲突吗?我应该坚持一个线程进行所有发布吗?

2 个答案:

答案 0 :(得分:0)

事务已绑定到线程,因此您将获得多个事务。

您是否尝试过增加linger.ms生产者属性?

答案 1 :(得分:0)

我们在Spring应用程序中使用多线程方法将msg发布到相同的Kafka主题,但尚未报告任何问题。 Kafka是一个基于commitlog的过程,将新消息添加到日志中,并将偏移量提供给zookeeper管理消费者。

您的方法与多个生产者使用相同的密钥同时向一个主题发送消息的方法相同。由于有当选的分区负责人,卡夫卡可以处理这种情况。

还有一个缓冲时间,直到将产生的消息备份到产生器缓冲区中并在缓冲区空间已满时将其刷新为止。因此,Kafka已经拥有处理具有相同密钥的邮件轰炸的机制。