6 kafka序列化器和反序列化器(结合在Springboot中使用)

本文介绍了如何在SpringBoot应用中配置和使用Kafka的序列化器和反序列化器。详细讲解了如何定义StudentSerializer序列化器和StudentDserializer反序列化器,并在实际项目中集成,展示了发送与消费带有自定义类型消息的过程。
摘要由CSDN通过智能技术生成

​ kafka在生产消息发送到broker之前要经过序列化的过程,消费者在消费消息前,消息会经过反序列化。序列化和反序列化的配置在application.yml可以通过下面方式配置。

spring:
  kafka:
    producer:
      #生产者key的序列化器
      key-serializer: org.apache.kafka.common.serialization.IntegerSerializer
      #生产者value的序列化器
      value-serializer: org.apache.kafka.com
在 Spring Boot 使用 Kafka 消费者时,需要对消息进行反序列化,将其转换为 Java 对象。Spring Boot 使用的默认序列化是 ByteArraySerializer,如果你需要使用其他的序列化,可以通过配置来实现。以下是使用 String 序列化的示例: 1. 添加依赖 ``` <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>${kafka.version}</version> </dependency> ``` 2. 配置消费者 ``` @Configuration @EnableKafka public class KafkaConsumerConfig { @Value("${kafka.bootstrap-servers}") private String bootstrapServers; @Value("${kafka.consumer.group-id}") private String groupId; @Bean public ConsumerFactory<String, String> consumerFactory() { Map<String, Object> props = new HashMap<>(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId); props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); return new DefaultKafkaConsumerFactory<>(props); } @Bean public ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory() { ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>(); factory.setConsumerFactory(consumerFactory()); return factory; } } ``` 3. 创建消费者 ``` @Component public class KafkaConsumer { @KafkaListener(topics = "test", groupId = "${kafka.consumer.group-id}") public void listen(String message) { System.out.println("Received message: " + message); } } ``` 在上面的示例,我们使用了 StringDeserializer 作为键和值的反序列化,因此在消费者直接可以使用 String 类型的消息。你可以根据需要选择其他的序列化,如 JSON 序列化等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dream21st

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值