kafka消费者读写同一分区

时间:2017-08-28 03:11:33

标签: apache-kafka kafka-consumer-api kafka-producer-api

来自不同群体的2个消费者可以从同一个主题和分区x中读取并写入另一个主题和分区吗?

我将实施一种消费者策略,其中一个消费者丢弃另一个消费者处理的数据。 生成器将数据持久保存到共享分区中的顺序并不重要。

我只是想知道这是否可能

1 个答案:

答案 0 :(得分:1)

您可以在此处使用两种不同的方法:

  • 消费者属于不同的消费群体。这意味着两者都将接收所有消息,并且由业务逻辑决定忽略消费者的某些消息而另一方正在处理消息
  • 消费者属于同一个消费者群体,因此他们会收到不同的分区,并且您将消息传递给消费者而不是另一个消费者。您正在利用Kafka功能,但这取决于您将如何分配"分区"如果使用默认的循环方式或使用每封邮件的密钥或自定义分区程序,您的数据。

我在第二个解决方案中看到的唯一问题是重新平衡。如果消费者脱机然后返回,则会发生重新平衡,并且可以以不同的方式分发分区。即你开始从分区P1和P2读取消费者C1,从分区P3和P4读取C2。想象一下C2离线了。首先,如果它离线更长时间,C1将获得所有分区(我不知道它是否适合您的场景)但是当C2重新联机时,重新平衡发生并分配分区可以是不同的,即P1和P2分配给C2(不再是C1),P3和P4分配给C1(不再是C2);这取决于这种消费者交换分区是否是您的应用程序逻辑的问题。