kafka 自定义序列化器

内置序列化器

Apache Kafka 为几种基本类型提供了预置的序列化器和反序列化器:

  1. StringSerializer
  2. ShortSerializer
  3. IntegerSerializer
  4. LongSerializer
  5. DoubleSerializer
  6. BytesSerializer

 

自定义序列化器

CustomSerializer

import com.fasterxml.jackson.databind.ObjectMapper;
import com.xy.async.dto.AsyncExecDto;
import org.apache.kafka.common.errors.SerializationException;
import org.apache.kafka.common.serialization.Serializer;

import java.util.Map;


public class CustomSerializer implements Serializer<AsyncExecDto> {
    private final ObjectMapper objectMapper = new ObjectMapper();

    @Override
    public void configure(Map<String, ?> configs, boolean isKey) {
    }

    @Override
    public byte[] serialize(String topic, AsyncExecDto data) {
        try {
            if (data == null){
                return null;
            }
            return objectMapper.writeValueAsBytes(data);
        } catch (Exception e) {
            throw new SerializationException("Error when serializing MessageDto to byte[]");
        }
    }

    @Override
    public void close() {
    }
}

 

CustomDeserializer
 import com.fasterxml.jackson.databind.ObjectMapper;
import com.xy.async.dto.AsyncExecDto;
import org.apache.kafka.common.errors.SerializationException;
import org.apache.kafka.common.serialization.Deserializer;

import java.util.Map;


public class CustomDeserializer implements Deserializer<AsyncExecDto> {
    private ObjectMapper objectMapper = new ObjectMapper();

    @Override
    public void configure(Map<String, ?> configs, boolean isKey) {
    }

    @Override
    public AsyncExecDto deserialize(String topic, byte[] data) {
        try {
            if (data == null){
                return null;
            }
            return objectMapper.readValue(new String(data, "UTF-8"), AsyncExecDto.class);
        } catch (Exception e) {
            throw new SerializationException("Error when deserializing byte[] to MessageDto");
        }
    }

    @Override
    public void close() {
    }
}

 

配置文件

 

参考文章

【1】https://springdoc.cn/kafka-custom-serializer/

posted @   先娶国王后取经  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示