mq-active/src/main/java/com/mobai/demo/MyPartition.java

37 lines
1.1 KiB
Java

package com.mobai.demo;
import org.apache.kafka.clients.producer.Partitioner;
import org.apache.kafka.common.Cluster;
import org.apache.kafka.common.PartitionInfo;
import java.util.List;
import java.util.Map;
import java.util.Random;
/**
* 1.自定义分区策略
*/
public class MyPartition implements Partitioner {
Random random = new Random();
public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) {
//获取分区列表
List<PartitionInfo> partitionInfos = cluster.partitionsForTopic(topic);
int partitionNum = 0;
if(key == null){
partitionNum = random.nextInt(partitionInfos.size());//随机分区
} else {
partitionNum = Math.abs((key.hashCode())/partitionInfos.size());
}
System.out.println("当前Key:" + key + "-----> 当前Value:" + value + "----->" + "当前存储分区:" + partitionNum);
return partitionNum;
}
public void close() {
}
public void configure(Map<String, ?> map) {
}
}