30-kafka-api自定义分区生产者:
import org.apache.kafka.clients.producer.Partitioner;
import org.apache.kafka.common.Cluster;
import java.util.Map;
public class MyPartitioner implements Partitioner {
public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) {
return 0;
}
public void close() {
}
public void configure(Map<String, ?> configs) {
}
}
import org.apache.kafka.clients.producer.*;
import java.util.Properties;
public class PartitionProducer {
public static void main(String[] args) {
//创建Kafka生产者的配置信息
Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "hadoop102:9092");
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
//添加分区器props.put(ProducerConfig.PARTITIONER_CLASS_CONFIG,"zh.kafka.partitioner.MyPartitioner");
//创建生产者对象
KafkaProducer<String, String> kafkaProducer = new KafkaProducer<String, String>(props);
//发送数据
for(int i=0;i<10;i++){
kafkaProducer.send(new ProducerRecord<String, String>("aaa", "callback_" + i),
new Callback() {
public void onCompletion(RecordMetadata metadata, Exception exception) {
if(exception==null){
System.out.println(metadata.partition()+"--"+metadata.offset());
}
}
});
}
//关闭资源
kafkaProducer.close();
}
}
学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230