如果我使用两组Kafka-0.8.0 SimpleConsumers

时间:2016-09-08 22:21:47

标签: apache-kafka kafka-consumer-api

这是参考SimpleConsumer ExampleHigh Level Consumer Example

根据文档,似乎建议SimpleConsumers负责管理偏移本身,他们可以选择多次读取消息或仅占用主题中的一部分分区。所有这一切都是可能的,因为他们可以形成他们的请求并指定他们想要的偏移量。

现在,如果我有两个简单的消费者群集并且都使用不同的zookeeper来存储偏移量,那么两个群集很可能会读取重复的消息。这种理解是否正确?为了消除它们之间的重复,它们必须使用一个zookeeper-cluster来存储偏移量。

消费者群体的概念仅适用于高级消费者。因此,如果我有两个高级别消费者群集并且都使用相同的组ID,那么他们将不会收到任何重复的消息。

如果上述情况不正确,请提出建议。

2 个答案:

答案 0 :(得分:0)

简单的消费者不使用zookeeper存储偏移量。建议将Zookeeper用作存储以保存已处理的记录偏移量。

  

消费者群体的概念仅适用于高级消费者。   因此,如果我有两个高级别消费者群集,并且都使用   相同的组ID,然后他们将不会得到任何重复的消息

两个集群是什么意思?如果两个消费者属于同一个组(具有相同的组ID),那么您的陈述是正确的。

答案 1 :(得分:0)

如果您使用的是高级消费者和相同的group-id,那么在使用同一主题时不会出现重复消息。

如果使用简单消费者,则完全取决于您维护偏移的方式。如果两个消费者的偏移同步,即它们保持相同的偏移水平,则不会有任何重复。 在您的情况下,它可能会导致重复,因为您要单独维护偏移量。