根据KafkaTemplate指定client.id

时间:2018-07-16 11:46:08

标签: spring-kafka

我知道可以为每个client.id定义@KafkaListener

是否可以为每个client.id定义KafkaTemplate

如果我可以为每个client.id定义KafkaTemplate,而不是依靠Spring为每个生产者分配后缀,则更容易阅读kafka日志。

1 个答案:

答案 0 :(得分:1)

Spring Kafka不会将任何client.id分配给它创建的Producer

protected Producer<K, V> createKafkaProducer() {
    return new KafkaProducer<K, V>(this.configs, this.keySerializer, this.valueSerializer);
}

除非您通过ProducerConfig.CLIENT_ID_CONFIG向提到的configs中提供一个。

因此,对于您的每个KafkaTemplate,您需要声明一个单独的DefaultKafkaProducerFactory,并通过Map<String, Object> configs共享公共属性,但是对于每个实例都使用唯一的ProducerConfig.CLIENT_ID_CONFIG

或者,您可以实现自己的ProducerFactory,以在每次调用ProducerConfig.CLIENT_ID_CONFIG时填充唯一的createProducer()