kafka生产者和消费者如何使用,简单 demo 可以看一下https://blog.csdn.net/sangewuxie/article/details/131269220
这篇文章文章主要承接上一篇文章对生产者做详细的讲解
package org.example;
import org.apache.kafka.clients.producer.*;
import org.apache.kafka.common.serialization.StringSerializer;
import java.util.Properties;
public class KafkaProducerExample {
public static void main(String[] args) {
Producer<String, String> producer = getProducer();
// Kafka 主题名称
String topic = "mytopic";
// 发送消息
String message = "Hello, Kafka!";
ProducerRecord<String, String> record = new ProducerRecord<>(topic, message);
producer.send(record, new Callback() {
@Override
public void onCompletion(RecordMetadata metadata, Exception exception) {
if (exception != null) {
System.err.println("Error sending message: " + exception.getMessage());
} else {
System.out.println("Message sent successfully! Topic: " + metadata.topic() +
", Partition: " + metadata.partition() + ", Offset: " + metadata.offset());
}
}
});
// 关闭 Kafka 生产者
producer.close();
}
private static Producer<String, String> getProducer() {
Properties properties = getProperties();
// 创建 Kafka 生产者
Producer<String, String> producer = new KafkaProducer<>(properties);
return producer;
}
private static Properties getProperties() {
// Kafka 服务器地址和端口
String bootstrapServers = "localhost:9092";
// Kafka 生产者配置
Properties properties = new Properties();
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
return properties;
}
}
为了更直观讲解下面的内容,先把生产者的代码搬运过来了
创建ProducerRecord对象
// Kafka 主题名称
String topic = "mytopic";
// 发送消息
String message = "Hello, Kafka!";
ProducerRecord<String, String> record = new ProducerRecord<>(topic, message);
在上面的 demo 中,创建消息使用到了此对象,其中 topic 和 value 属性是必传参数。
ProducerRecord 的主要作用是封装要发送的消息记录,并将其发送给 Kafka 集群。它包含了消息的目标主题、分区、键和值等信息。使用 ProducerRecord 可以灵活地指定消息的目标位置,例如指定特定的主题和分区,或者让 Kafka 根据分区策略自动