网站建设青岛公司,南山建站公司,老牌网站建设,汽车网站建设网Spring会把你发送的消息序列化为字节发送给MQ#xff0c;接收消息的时候#xff0c;还会把字节反序列化为Java对象 ,只不过#xff0c;默认情况下Spring采用的序列化方式是JDK序列化。众所周知#xff0c;JDK序列化存在下列问题#xff1a; 数据体积过大 有安全漏洞 可读… Spring会把你发送的消息序列化为字节发送给MQ接收消息的时候还会把字节反序列化为Java对象 ,只不过默认情况下Spring采用的序列化方式是JDK序列化。众所周知JDK序列化存在下列问题 数据体积过大 有安全漏洞 可读性差 默认转换器
发送一个Map对象
Test
public void testSendMap() throws InterruptedException {// 准备消息MapString,Object msg new HashMap();msg.put(name, Jack);msg.put(age, 21);// 发送消息rabbitTemplate.convertAndSend(simple.queue,, msg);
}
发送消息后查看控制台
配置JSON转换器
显然JDK序列化方式并不合适。我们希望消息体的体积更小、可读性更高因此可以使用JSON方式来做序列化和反序列化。
引入依赖
在publisher和consumer两个服务中都引入依赖
dependencygroupIdcom.fasterxml.jackson.dataformat/groupIdartifactIdjackson-dataformat-xml/artifactIdversion2.9.10/version
/dependency 配置消息转换器
在启动类中添加一个Bean即可
Bean
public MessageConverter jsonMessageConverter(){return new Jackson2JsonMessageConverter();
} 发送一个Map对象
Test
public void testSendMap() throws InterruptedException {// 准备消息MapString,Object msg new HashMap();msg.put(name, Jack);msg.put(age, 21);// 发送消息rabbitTemplate.convertAndSend(simple.queue,, msg);
} rabbitmq查看消息 消息体的体积更小、可读性更高因此可以使用JSON方式来做序列化和反序列化。