import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class VoxProducer {
public static void main(String[] args) {
List<Vox> voxList = new ArrayList<>();
Vox vox = new Vox(1, "Alice", 25);
voxList.add(vox);
sendVoxList(voxList);
}
public static void sendVoxList(List<Vox> voxList) {
// 配置 Kafka 生产者
Properties props = new Properties();
props.put("bootstrap.servers", "ip:port,ip:port,ip:port");
props.put("acks", "all");
props.put("retries", 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");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
// 创建 Kafka 生产者
Producer<String, String> producer = new KafkaProducer<>(props);
// 发送 Vox 列表到 Kafka
for (Vox vox : voxList) {
String value = vox.getId() + "," + vox.getName() + "," + vox.getAge();
ProducerRecord<String, String> record = new ProducerRecord<>("xx_topic", "xx_groupId", value);
producer.send(record);
}
// 关闭 Kafka 生产者
producer.close();
}
}
import org.apache.kafka.clients.consumer.*;
import org.apache.kafka.common.serialization.StringDeserializer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
public class VoxConsumer {
public static void main(String[] args) {
readVoxList();
}
public static List<Vox> readVoxList() {
// 配置 Kafka 消费者
Properties props = new Properties();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "ip:port,ip:port,ip:port");
props.put(ConsumerConfig.GROUP_ID_CONFIG, "xx_groupId");
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "true");
props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "1000");
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
// 创建 Kafka 消费者
Consumer<String, String> consumer = new KafkaConsumer<>(props);
// 订阅 Kafka 主题
consumer.subscribe(Collections.singletonList("xx_topic"));
// 读取 Vox 列表
List<Vox> voxList = new ArrayList<>();
while (true) {
ConsumerRecords<String, String> records = consumer.poll(1000);
for (ConsumerRecord<String, String> record : records) {
String[] fields = record.value().split(",");
int id = Integer.parseInt(fields[0]);
String name = fields[1];
int age = Integer.parseInt(fields[2]);
Vox vox = new Vox(id, name, age);
System.out.println("vox:"+vox);
voxList.add(vox);
}
if
(voxList.size() >= records.count()) {
break;
}
}
// 关闭 Kafka 消费者
consumer.close();
return voxList;
}
}
import lombok.Builder;
import lombok.Data;
@Builder
@Data
public class Vox {
private int id;
private String name;
private int age;
public Vox(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
加入的依赖
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.7.1</version>
</dependency>