什么是序列化和反序列化
序列化(Serialization)和反序列化(Deserialization)是将对象转换为字节流或将字节流转换为对象的过程。
序列化是指将对象转换为字节流的过程。在序列化时,对象的状态信息(例如属性值、字段值等)被转换为一串字节,以便能够在网络上传输或者保存到磁盘上。序列化可以将对象持久化,并且使其能够在不同的环境中进行传输和恢复。序列化通常用于分布式系统、缓存、消息队列等场景。
反序列化是指将字节流恢复为对象的过程。在反序列化时,字节流被解析并还原为对应的对象,使其可以在内存中重新使用。反序列化是序列化的逆过程,通过反序列化,我们可以重新获得序列化之前的对象实例及其状态信息。
序列化和反序列化的主要目的是实现对象的持久化和跨网络传输。通过序列化和反序列化,我们可以将对象转换为字节流,然后在需要的时候重新恢复成对象,使得对象的状态可以被保存和传输。
rabbitmq中的序列化和反序列化
在 RabbitMQ 中,消息的序列化和反序列化是指将消息体转换为字节流以便发送到 RabbitMQ 服务器,并且在接收消息时将字节流还原为消息体的过程。
通常情况下,当你向 RabbitMQ 发送消息时,消息体需要被序列化成字节流。RabbitMQ 不会直接处理对象,而是处理字节流。因此,在发送消息之前,你需要将消息体序列化为字节流。同样地,当消费者从 RabbitMQ 接收消息时,需要将接收到的字节流反序列化为原始的消息体对象。
在 RabbitMQ 中,最常见的消息序列化方式是将消息体序列化为 JSON 或者其他类似的格式。在生产者端,你可以将对象转换为 JSON 字符串并将其作为消息体发送到 RabbitMQ;在消费者端,你可以从接收到的 JSON 字符串中解析出对象。
实现
RabbitMQ 提供了 Jackson2JsonMessageConverter 来支持消息内容 JSON 序列化与反序列化
消息发送者在发送消息时应设置 MessageConverter 为 Jackson2JsonMessageConverter
rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());
消费者
package com.example.user.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.annotation.RabbitListenerConfigurer;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amq

本文详细解释了序列化和反序列化的基本概念,以及在RabbitMQ中的具体应用,介绍了如何使用Jackson2JsonMessageConverter进行消息序列化和反序列化。文章还分享了在实际开发中遇到的关于类加载和反射的问题,以及解决方法——确保类的全限定名正确和公共类的正确组织。
rabbitmq不同模块序列化和反序列化&spm=1001.2101.3001.5002&articleId=136701996&d=1&t=3&u=a774824f4dcc432bb2511b51a34fcfa6)
2112

被折叠的 条评论
为什么被折叠?



