我开始使用Spring Boot 2和Spring Kafka,我不太明白group id
中Client id
,id in
和KafkaListener
之间的区别是什么接口。
我知道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 "";
答案 0 :(得分:2)
您groupId
的理解是正确的。
id
就像Spring Framework中的bean名称。但是,这个仅用于KafkaListenerEndpointRegistry
边界。因此,如果您需要对针对上述KafkaListenerContainer
创建的特定@KafkaListener
进行生命周期控制,则需要注入KafkaListenerEndpointRegistry
并使用提及的getListenerContainer()
作为相应的id
}}
clientIdPrefix
反映了Kafka Consumer的确切client.id
属性:
发出请求时传递给服务器的id字符串。这样做的目的是通过允许逻辑应用程序名称包含在服务器端请求记录中来跟踪超出ip / port的请求源。