Search code examples
spring-kafka

how to set application properties to default kafka producer template without setting from kafka producer config bean


Here is my application properties defined with properties file:

spring.kafka.producer.bootstrap-servers = localhost:9090
spring.kafka.producer.key-serializer=org.springframework.kafka.support.serializer.JsonSerializer
spring.kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer

myprojectcommon.util.kafka.producer.max-retry-attempts = 3
myprojectcommon.util.kafka.producer.retry-timeout-ms = 1000
myprojectcommon.util.kafka.producer.retry-timeout-modifier = 2

spring.kafka.producer.max-in-flight-requests-per-connection = 1
spring.kafka.producer.request-timeout-ms = 120000
spring.kafka.producer.acks = all
spring.kafka.producer.linger-ms=100
spring.kafka.producer.connections-max-idle-ms = 180000
spring.kafka.producer.max-request-size = 1000000

Here is my kafka producer config :

@Configuration
@Slf4j
public class KafkaProducerConfig {

    @Autowired
    private KafkaProperties properties;


    @Bean
    public KafkaProducerTemplate kafkaProducerSuccessTemplate() {
        Map<String, Object> producerProps  = properties.buildProducerProperties();
        producerProps.put(ProducerConfig.CLIENT_ID_CONFIG, "success_client_id");
        ProducerFactory<String, String> producerFactory = new DefaultKafkaProducerFactory<>(producerProps);
        return new KafkaProducerTemplate(producerFactory);
   }

}

here is my producer kafka configuration values from console:

2021-02-17 18:02:27.483  INFO 127848 --- [-listener-0-C-1] o.a.k.clients.producer.ProducerConfig    : ProducerConfig values: 
    acks = -1
    linger.ms = 0
    max.in.flight.requests.per.connection = 5
    client.id = success_client_id
    reconnect.backoff.ms = 50
    request.timeout.ms = 30000
    retries = 2147483647
    retry.backoff.ms = 100

Can some one help on this ?


Solution

  • ...linger-ms is not a valid property.

    Boot only supports a subset of properties directly; other properties are set like this...

    ...producer.properties.[linger.ms]=.

    See the boot documentation.

    https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-kafka-extra-props