Kafka自定义分区器/提高生产吞吐量/数据可靠性

本文介绍了如何在Kafka中实现自定义分区器,以根据消息内容决定其归属的分区,并探讨了生产者提高吞吐量的参数调整,包括批次大小、等待时间、压缩类型等。此外,还讨论了生产者数据可靠性的关键因素,如ACK应答级别和重试机制,以及可能的数据重复情况。
摘要由CSDN通过智能技术生成

目录

自定义分区器

生产经验--- 生产者如何提高吞吐量

 生产经验--数据可靠性


自定义分区器

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;查看它的分区

测试结果如图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值