我需要在发布/订阅模式下拨打1000次Kafka消费者。据我所知,kafka在pub / subscribe模式下工作,我需要为每个使用者提供一个新的groupId(props.put(" group.id",String.valueOf(Instant.now())。 toEpochMilli())))。但是当我这样做时,如果两个消费者线程在同一毫秒内访问消费者,则会出现问题。该问题应如何解决?
答案 0 :(得分:0)
如果要在消费者中传播消息,则需要使用相同的group.id
。如果您有1000条消息和1000个消费者,那么每个消费者通常会消费一条消息。
另一方面,如果您希望每个使用者都使用主题中的所有消息,则需要使用不同的group.id
,以便所有使用者都使用该主题中的消息。如果您拥有大量消费者,则可以使用UUID.randomUUID().toString()
为每个消费者生成不同的group.id
。
根据docs:
消费者使用消费者群组名称和每条记录标记自己 发布到主题的内容将传递给每个主题中的一个消费者实例 订阅消费者群体。消费者实例可以分开 流程或在不同的机器上。
如果所有的消费者实例都有相同的消费者群体,那么 记录将有效地在消费者实例上进行负载平衡。
如果所有消费者实例都有不同的消费者群体,那么 每条记录都将广播给所有消费者流程。