为 Kafka Consumer 随机生成组 ID

Фёд*_*нов 7 java apache-kafka spring-boot kafka-consumer-api spring-kafka

我们有一个使用 spring kafka 来读取消息的应用程序。应用程序的每个实例都必须有一个唯一的 groupId,并重置它并在重新启动时获取一个新的 groupId。GroupId 是通过 随机生成的${random.uuid}

随机生成id的解决方案真的正确吗?

Nik*_*las 11

是的,生成通过${random.uuid}是正确的。

\n
spring.kafka.consumer.group-id=${random.uuid}\n
Run Code Online (Sandbox Code Playgroud)\n

如果您想要更多地控制组 ID 的生成方式,还有另一种选择。@KafkaListener将注释与 Spring 表达式一起使用。来自Spring Kafka 参考

\n
\n

您可以使用 #{\xe2\x80\xa6\xe2\x80\x8b} 或属性占位符 (${\xe2\x80\xa6\xe2\x80\x8b}) 使用 SpEL 配置注释上的大多数属性。有关详细信息,请参阅Javadoc 。

\n
\n
@KafkaListener(topics = "hi", groupId = "#{T(java.util.UUID).randomUUID().toString()}") \n
Run Code Online (Sandbox Code Playgroud)\n