发布/订阅模式下的Kafka消费者

时间:2018-05-13 07:38:26

标签: java apache-kafka

我需要在发布/订阅模式下拨打1000次Kafka消费者。据我所知,kafka在pub / subscribe模式下工作,我需要为每个使用者提供一个新的groupId(props.put(" group.id",String.valueOf(Instant.now())。 toEpochMilli())))。但是当我这样做时,如果两个消费者线程在同一毫秒内访问消费者,则会出现问题。该问题应如何解决?

1 个答案:

答案 0 :(得分:0)

如果要在消费者中传播消息,则需要使用相同的group.id。如果您有1000条消息和1000个消费者,那么每个消费者通常会消费一条消息。

另一方面,如果您希望每个使用者都使用主题中的所有消息,则需要使用不同的group.id,以便所有使用者都使用该主题中的消息。如果您拥有大量消费者,则可以使用UUID.randomUUID().toString()为每个消费者生成不同的group.id

根据docs

  

消费者使用消费者群组名称和每条记录标记自己   发布到主题的内容将传递给每个主题中的一个消费者实例   订阅消费者群体。消费者实例可以分开   流程或在不同的机器上。

     

如果所有的消费者实例都有相同的消费者群体,那么   记录将有效地在消费者实例上进行负载平衡。

     

如果所有消费者实例都有不同的消费者群体,那么   每条记录都将广播给所有消费者流程。