package com.moral.api.config.kafka; 
 | 
  
 | 
import org.apache.kafka.clients.producer.ProducerConfig; 
 | 
import org.apache.kafka.common.serialization.StringSerializer; 
 | 
import org.springframework.beans.factory.annotation.Value; 
 | 
import org.springframework.context.annotation.Bean; 
 | 
import org.springframework.context.annotation.Configuration; 
 | 
import org.springframework.kafka.annotation.EnableKafka; 
 | 
import org.springframework.kafka.core.DefaultKafkaProducerFactory; 
 | 
import org.springframework.kafka.core.KafkaTemplate; 
 | 
import org.springframework.kafka.core.ProducerFactory; 
 | 
  
 | 
import java.util.HashMap; 
 | 
import java.util.Map; 
 | 
  
 | 
@Configuration 
 | 
@EnableKafka 
 | 
public class KafkaProducerConfig { 
 | 
    @Value("${kafka.producer.servers}") 
 | 
    private String servers; 
 | 
    @Value("${kafka.producer.retries}") 
 | 
    private int retries; 
 | 
    @Value("${kafka.producer.batch.size}") 
 | 
    private int batchSize; 
 | 
    @Value("${kafka.producer.linger}") 
 | 
    private int linger; 
 | 
    @Value("${kafka.producer.buffer.memory}") 
 | 
    private int bufferMemory; 
 | 
  
 | 
  
 | 
    public Map<String, Object> producerConfigs() { 
 | 
        Map<String, Object> props = new HashMap<>(); 
 | 
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers); 
 | 
        props.put(ProducerConfig.RETRIES_CONFIG, retries); 
 | 
        props.put(ProducerConfig.BATCH_SIZE_CONFIG, batchSize); 
 | 
        props.put(ProducerConfig.LINGER_MS_CONFIG, linger); 
 | 
        props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, bufferMemory); 
 | 
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); 
 | 
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); 
 | 
        return props; 
 | 
    } 
 | 
  
 | 
    public ProducerFactory<String, String> producerFactory() { 
 | 
        return new DefaultKafkaProducerFactory<>(producerConfigs()); 
 | 
    } 
 | 
  
 | 
    @Bean 
 | 
    public KafkaTemplate<String, String> kafkaTemplate() { 
 | 
        return new KafkaTemplate<String, String>(producerFactory()); 
 | 
    } 
 | 
  
 | 
} 
 |