Java操作Kafka生产消费数据之二 - 带回调函数的Producer
1.配置Maven依赖
<dependencies>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.28</version>
</dependency>
</dependencies>
2.生产数据代码
package com.zy.producer;
import org.apache.kafka.clients.producer.*;
import org.apache.kafka.common.serialization.StringSerializer;
import java.util.Properties;
public class CallbackProducer {
public static void main(String[] args) {
Properties properties = new Properties();
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9092");
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());
KafkaProducer<String, String> producer = new KafkaProducer<String, String>(properties);
for (int i = 0; i < 10; i++) {
producer.send(new ProducerRecord<String, String>("topic_1", "HelloCallbackProducer" + i), (recordMetadata, e) -> {
if(e == null) {
System.out.println(recordMetadata.topic() + "---" + recordMetadata.partition() + "---" + recordMetadata.offset());
}
else {
e.printStackTrace();
}
});
}
producer.close();
}
}
3.运行结果
IDEA终端
topic_1---1---33
topic_1---1---34
topic_1---1---35
topic_1---1---36
topic_1---1---37
topic_1---0---34
topic_1---0---35
topic_1---0---36
topic_1---0---37
topic_1---0---38
Kafka控制台消费者
HelloCallbackProducer1
HelloCallbackProducer3
HelloCallbackProducer5
HelloCallbackProducer7
HelloCallbackProducer9
HelloCallbackProducer0
HelloCallbackProducer2
HelloCallbackProducer4
HelloCallbackProducer6
HelloCallbackProducer8