KafkaListener中组ID,客户端ID和ID之间的差异

时间:2018-03-16 15:23:22

标签: spring-boot apache-kafka spring-kafka

我开始使用Spring Boot 2和Spring Kafka,我不太明白group idClient idid inKafkaListener之间的区别是什么接口。
我知道Kafka经纪人使用组ID来管理同一组中的多个消费者,但其他人呢?设置它们有什么好处?我在哪里可以看到设置或不设置它们的效果?

基于他们的java doc:

/**
     * The unique identifier of the container managing for this endpoint.
     * <p>If none is specified an auto-generated one is provided.
     * @return the {@code id} for the container managing for this endpoint.
     * @see org.springframework.kafka.config.KafkaListenerEndpointRegistry#getListenerContainer(String)
     */
String id() default "";

/**
 * Override the {@code group.id} property for the consumer factory with this value
 * for this listener only.
 * @return the group id.
 * @since 1.3
 */
String groupId() default "";

/**
 * When provided, overrides the client id property in the consumer factory
 * configuration. A suffix ('-n') is added for each container instance to ensure
 * uniqueness when concurrency is used.
 * @return the client id prefix.
 * @since 2.1.1
 */
String clientIdPrefix() default "";

1 个答案:

答案 0 :(得分:2)

groupId的理解是正确的。

id就像Spring Framework中的bean名称。但是,这个仅用于KafkaListenerEndpointRegistry边界。因此,如果您需要对针对上述KafkaListenerContainer创建的特定@KafkaListener进行生命周期控制,则需要注入KafkaListenerEndpointRegistry并使用提及的getListenerContainer()作为相应的id }}

clientIdPrefix反映了Kafka Consumer的确切client.id属性:

  

发出请求时传递给服务器的id字符串。这样做的目的是通过允许逻辑应用程序名称包含在服务器端请求记录中来跟踪超出ip / port的请求源。