java 发送kafka 工具类



import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Properties;

@Component
@Slf4j
public class KafkaUtil {
    @Autowired
    private KafkaConfigEntity kafkaConfig;
    public Producer initProducer(){
        return new KafkaProducer(getProperties(kafkaConfig.getBrokerList()));
    }
    public Properties getProperties(String brokerList){
        Properties props = new Properties();
        props.put("bootstrap.servers", kafkaConfig.getBrokerList());//xxx服务器ip
        props.put("acks", "all");//所有follower都响应了才认为消息提交成功,即"committed"

        props.put("retries", 0);//retries = MAX 无限重试,直到你意识到出现了问题:)

        props.put("batch.size", 16384);//producer将试图批处理消息记录,以减少请求次数.默认的批量处理消息字节数

        //batch.size当批量的数据大小达到设定值后,就会立即发送,不顾下面的linger.ms

        props.put("linger.ms", 1);//延迟1ms发送,这项设置将通过增加小的延迟来完成--即,不是立即发送一条记录,producer将会等待给定的延迟时间以允许其他消息记录发送,这些消息记录可以批量处理

        props.put("buffer.memory", 33554432);//producer可以用来缓存数据的内存大小。

        props.put("key.serializer",

                "org.apache.kafka.common.serialization.IntegerSerializer");

        props.put("value.serializer",

                "org.apache.kafka.common.serialization.StringSerializer");
        return props;
    }
    public void send(String topic,String msg,String brokerList) throws Exception{
        Producer<String,String> producer = new KafkaProducer(getProperties(brokerList));
        ProducerRecord<String, String> prorec = new ProducerRecord<>(topic, msg);
        try {
            RecordMetadata recordMetadata = producer.send(prorec).get();
            log.info(""+recordMetadata.topic());
        }catch (Exception e){
            log.info("",e);
            producer.close();
            e.printStackTrace();
        }
        producer.close();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值