首页 > 解决方案 > 为每个 KafkaTemplate 指定 client.id

问题描述

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

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

如果我可以定义client.idperKafkaTemplate而不是依赖 Spring 为每个生产者分配后缀,那么阅读 kafka 日志会更容易。

标签: spring-kafka

解决方案


Spring Kafka 不会将任何内容分配client.idProducer它创建的:

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_CONFIGcreateProducer()


推荐阅读