java kafka pom_3.java使用kafka

packagecom.itheima.producer;importorg.apache.kafka.clients.producer.Callback;importorg.apache.kafka.clients.producer.KafkaProducer;importorg.apache.kafka.clients.producer.ProducerRecord;importorg.apache.kafka.clients.producer.RecordMetadata;importjava.util.Properties;importjava.util.concurrent.Future;/*** kafka客户端之:生产者*/

public classMyKafkaProducer {public static void main(String[] args) throwsException{//1.配置信息

Properties props = newProperties();//定义kafka服务器地址列表,不需要指定所有的broker

props.put("bootstrap.servers", "server1:9092,server2:9092,server3:9092");//生产者需要leader确认请求完成之前接收的应答数

props.put("acks", "-1");//客户端失败重试次数

props.put("retries", 1);//生产者打包消息的批量大小,以字节为单位.此处是16k

props.put("batch.size", 16384);//生产者延迟1ms发送消息

props.put("linger.ms", 1);//生产者缓存内存的大小,以字节为单位.此处是32m

props.put("buffer.memory", 33554432);//key 序列化类

props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");//value序列化类

props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");//2.创建生产者

KafkaProducer producer = new KafkaProducer(props);//3.生产数据

/*** 发送消息的三种方式:

* 1.同步阻塞发送

* 适用场景:业务不需要高吞吐量、更关心消息发送的顺序、不允许消息发送失败

* 2.异步发送(发送并忘记)

* 适用场景:业务只关心吞吐量、不关心消息发送的顺序、可以允许消息发送失败

* 3.异步发送(回调函数)

* 适用场景:业务需要知道消息发送成功、不关心消息发送的顺序*/

//1.同步阻塞发送//创建消息

/*System.out.println("-------------------同步发送消息......start-----------------------");

ProducerRecord record = new ProducerRecord("itheima_topic",0,"key-sync","同步发送消息");

Future send = producer.send(record);

RecordMetadata recordMetadata = send.get();

System.out.println(recordMetadata);//itheima_topic-0@2

System.out.println("-------------------同步发送消息......end-----------------------");*/

//2.异步发送(发送并忘记)//创建消息

/*System.out.println("-------------------异步发送(发送并忘记)......start-----------------------");

ProducerRecord record = new ProducerRecord("itheima_topic",0,"key-async1","异步发送消息,发送并忘记");

// 发送并忘记

producer.send(record);

System.out.println("-------------------异步发送(发送并忘记)......end-----------------------");

// 刷新

producer.flush();*/

//3.异步发送(回调函数)//创建消息

System.out.println("-------------------异步发送(回调函数)......start-----------------------");

ProducerRecord record = new ProducerRecord("itheima_topic",0,"key-async2","异步发送消息,(回调函数)");//发送,回调函数处理

producer.send(record, newCallback() {//处理回调业务逻辑

public voidonCompletion(RecordMetadata recordMetadata, Exception e) {

System.out.println("异步发送消息成功:"+recordMetadata);//itheima_topic-0@4

System.out.println("异常对象:"+e);//null

}

});

System.out.println("-------------------异步发送(回调函数)......end-----------------------");//刷新

producer.flush();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值