之前对kafka的概念和配置有了简单了解,现在就用java API做一个demo
这里使用的是spring boot集成,kafka的版本是1.0.0
- 首先在pom中添加依赖
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>1.0.0</version>
</dependency>
2.首先写一个producer类
import org.apache.kafka.clients.producer.Callback;
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;
public class MyProducer {
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "192.168.1.240:9092");
props.put("acks", "all"); //确保生产者可靠性设置,acks=0:不等待成功返回<br>acks=1:等Leader写成功返回<br>acks=all:等Leader和所有ISR中的Follower写成功返回,all也可以用-1代替
props.put("retries", 0); //设置自动重试为0
props.put("batch.size", 16384); //每个生产都都维护了一个缓冲区,这个是指定了缓冲区的大小
props.put("linger.ms", 1); //消息在缓冲区保留的时间,超过设置的值就会被提交到服务端
props.put("buffer.memory", 33554432); //可用于缓冲的总内存量,,否则会报申请内存不足的错误
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");//key和value序列化
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
//初始化事务,会在阻塞或者失败时抛出异常,每个生产者只能打开一个事务
// producer.initTransactions();
// pr