package com.ggj.encrypt.common.utils.kafka; import java.util.Properties; import org.apache.commons.lang3.StringUtils; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerConfig; import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.common.serialization.StringSerializer; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import lombok.Getter; import lombok.extern.slf4j.Slf4j; /** * @author:gaoguangjin * @date 2016/5/24 14:58 */ @Slf4j @Component public class KafkaClientUtil implements InitializingBean { @Value("${kafka.bootstrapServers}") private String servers; @Value("${kafka.topic.requestlog}") private String requestlog; private KafkaProducer kafkaProducer; /** * 构造KafkaProducer * @return */ private KafkaProducer<Integer, String> getProducer() { Properties properties = new Properties(); properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers); //key 和 value serializer的类 properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); return new KafkaProducer(properties); } @Override public void afterPropertiesSet() throws Exception { kafkaProducer=getProducer(); } /** * 构造ProducerRecord * @param topic * @param partition * @param key * @param value * @return */ private ProducerRecord<String,String> getProducerRecord(String topic,Integer partition, String key,String value) { if(StringUtils.isEmpty(topic))topic=requestlog; return new ProducerRecord<String,String>(topic,partition,key,value); } public void send(String topic,Integer partition, String key,String value){ kafkaProducer.send(getProducerRecord(topic,partition,key,value)); } /** * 默认分区发送 * @param value */ public void send(String value){ kafkaProducer.send(getProducerRecord("",0,"",value)); } }