您的位置:首页 > 健康 > 美食 > 极客邦_房地产销售技巧_苏州网络推广服务_西安seo顾问培训

极客邦_房地产销售技巧_苏州网络推广服务_西安seo顾问培训

2024/12/23 0:20:30 来源:https://blog.csdn.net/sdg_advance/article/details/142235899  浏览:    关键词:极客邦_房地产销售技巧_苏州网络推广服务_西安seo顾问培训
极客邦_房地产销售技巧_苏州网络推广服务_西安seo顾问培训

在当你发送的消息序列化为字节发送给MQ,接收消息的时候,还会把字节反序列化为Java对象。

只不过,默认情况下Spring采用的序列化方式是JDK序列化。众所周知,JDK序列化存在下列问题:数据体积过大,有安全漏洞,可读性差。

比如当我们发送一个复杂结构对象时:

@Test
public void testSendMap() throws InterruptedException {// 准备消息Map<String,Object> msg = new HashMap<>();msg.put("name", "张三");msg.put("age", 18);// 发送消息rabbitTemplate.convertAndSend("object.queue", msg);
}

mq接受的消息则是这样的:

 堪比三年模拟五年高考,又臭又长。

使用我们这里可以使用一个JSON转换器。可以使消息体的体积更小、可读性更高。

首先,在publisherconsumer两个服务中都引入依赖:

<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.9.10</version>
</dependency>

如果项目中引入了spring-boot-starter-web依赖,则无需再次引入Jackson依赖。

配置消息转换器,在publisherconsumer两个服务的启动类中添加一个Bean:

@Bean
public MessageConverter messageConverter(){// 1.定义消息转换器Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter();// 2.配置自动创建消息id,用于识别不同消息,也可以在业务中基于ID判断是否是重复消息jackson2JsonMessageConverter.setCreateMessageIds(true);return jackson2JsonMessageConverter;
}

再次测试:

@Test
public void testSendMap() throws InterruptedException {// 准备消息Map<String,Object> msg = new HashMap<>();msg.put("name", "柳岩");msg.put("age", 21);// 发送消息rabbitTemplate.convertAndSend("object.queue", msg);
}

结果,非常简洁。 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com