目录
自定义分区器
1、创建一个新的包:Partitioner
创建一个分区器
topic 主题
key 消息的 key
keyBytes 消息的 key 序列化后的字节数组
value 消息的 value
valueBytes 消息的 value 序列化后的字节数组
cluster 集群元数据可以查看分区信息
package com.atguigu.kafka.producer;
import org.apache.kafka.clients.producer.Partitioner;
import org.apache.kafka.common.Cluster;
import java.util.Map;
public class MyPartitioner implements Partitioner {
@Override
public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) {
//获取数据atguigu hello
String msgValues = value.toString();
int partition=0;
if(msgValues.contains("atguigu")) {
partition=0;
}else{
partition=1;
}
return partition;
}
@Override
public void close() {
}
@Override
public void configure(Map<String, ?> map) {
}
}
关联自定义分区器
//关联自定义分区器 properties.put(ProducerConfig.PARTITIONER_CLASS_CONFIG,"com.atguigu.kafka.producer.MyPartitioner");
测试自定义分区器
测试1
将发送消息设置为atguigu;查看它的分区
测试结果如图所示: