自定义分区设置
class Partition implements Partitioner{
//设置
public void configure(Map<String, ?> configs) {
}
//分区逻辑
public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes){
return 1;
}
//释放资源
public void close(){
}
}
{
//配置生产者属性(指定多个参数)
Properties prop = new Properties();
//省略不写
-----
//消息在发送前必须序列化
prop.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
prop.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer");
//分区指定
prop.put("partitioner.class","com.terry.kafka.Partition");
//2、实例化producer
KafkaProducer<String, String> producer = new KafkaProducer<String, String>(prop);
//3、发送消息
for(int i = 0; i < 99; i++) {
producer.send(new ProducerRecord<String, String>("test", i),new CallBack(){
p
kafka自定义partition
最新推荐文章于 2024-07-18 11:08:52 发布
本文详细探讨了Apache Kafka中的分区概念,并重点介绍了如何根据业务需求实现自定义分区策略。通过自定义分区,可以更好地控制消息的分布和消费,确保数据的有序性和一致性。同时,文章还讨论了自定义分区策略在实际应用中的优缺点及其适用场景。
摘要由CSDN通过智能技术生成