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 @ 2025-01-13 11:27  先娶国王后取经  阅读(58)  评论(0)    收藏  举报