Kafka批量發送數據可以使用Kafka的Producer API中的批量發送方法。以下是一種常見的方法:
創建一個KafkaProducer對象,配置所需的屬性。
創建一個ProducerRecord對象,包含要發送的消息和目標topic。
將多個ProducerRecord對象添加到一個列表中,形成一個批次。
使用KafkaProducer的send()方法發送批次中的消息。
可選地,使用回調函數來處理發送結果。
以下是一個示例代碼:
import org.apache.kafka.clients.producer.*;
import java.util.*;
public class KafkaBatchProducerExample {
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer<String, String> producer = new KafkaProducer<>(props);
List<ProducerRecord<String, String>> records = new ArrayList<>();
records.add(new ProducerRecord<>("my_topic", "key1", "value1"));
records.add(new ProducerRecord<>("my_topic", "key2", "value2"));
records.add(new ProducerRecord<>("my_topic", "key3", "value3"));
producer.send(records, new Callback() {
@Override
public void onCompletion(RecordMetadata metadata, Exception exception) {
if (exception != null) {
System.err.println("Error sending batch of messages: " + exception.getMessage());
} else {
System.out.println("Batch of messages sent successfully. Offset: " + metadata.offset());
}
}
});
producer.close();
}
}
以上代碼創建了一個KafkaProducer對象,然后創建了一個包含三條消息的批次,最后使用send()方法發送批次中的消息。回調函數可以處理發送結果。