做淘宝首页初学ps视频网站免费域名查询
web/
2025/10/8 14:39:56/
文章来源:
做淘宝首页初学ps视频网站,免费域名查询,快刷网站,东莞做微网站以下源码基于rocketmq-spring-boot-start 2.1.1版本#xff0c;其它版本可能会有差异
一. 前言
当我们在Spring Boot项目中集成RocketMQ后#xff0c;只需要在配置文件(application.yml)中添加rocketmq的相关配置#xff0c;即可使用rocketMQTemplate发送对象消息。登录Ro…以下源码基于rocketmq-spring-boot-start 2.1.1版本其它版本可能会有差异
一. 前言
当我们在Spring Boot项目中集成RocketMQ后只需要在配置文件(application.yml)中添加rocketmq的相关配置即可使用rocketMQTemplate发送对象消息。登录RocketMq Dashborad查看消息会发现我们的对象消息被序列化成json串。那它是使用哪种json序列化工具的呢
二. 如何序列化
第一步Spring Boot将Object封装成Message对象但此时Object还没有被序列化。
第二步将Spring Boot封装的Message对象转换成RocketMQ的Message对象在此过程中进行序列化操作。
最终通过messageConverter将Spring Boot的Message对象转换成json串然后构建RocketMQ的Message对象。那messageConverter从哪里来的呢
三. Spring Boot加载MessageConverter
在rocketmq-spring-boot的jar包中有spring.factories和spring-autoconfigure-metadata.properties两个配置文件。spring.factories中指定了rocketmq的自动装配类RocketMQAutoConfiguration。spring-autoconfigure-metadata.properties中指定了在装配RocketMQAutoConfiguration前必需先装配MessageConverterConfiguration。
先看RocketMQAutoConfiguration配置类该配置类中装配了我们发送MQ消息的模板类RocketMQTemplate
装配RocketMQTemplate需要依赖RocketMQMessageConverter该类则是由MessageConverterConfiguration进行装配。
这里直接new了一个RocketMQMessageConverter。
在RocketMQMessageConverter的构造方法中为我们构造了一个CompositeMessageConverter, 而CompositeMessageConverter实际是多个MessageConverter的组合类。其中依次添加了ByteArrayMessageConverter、StringMessageConverter、MappingJackson2MessageConverter、MappingFastJsonMessageConverter四个消息转换类。
在使用CompositeMessageConverter进行消息序列化时依次使用以上四个消息转换类进行消息对象的序列化若序列化成功则直接返回否则继续使用下一个MessageConverter对消息进行序列化。
四. 总结
Spring Boot在装配RocketMQTemplate时为我们提供了四种消息对象转换类当发送消息时依次有序的使用四种消息转换类对消息进行序列化直到找到一个合适的消息转换类。在Spring Boot中一般都会集成JackSon所以在没有特别配置时发送的消息会使用JackSon序列化为json串。
五. 扩展
在MessageConverterConfiguration自动装配类中有ConditionalOnMissingBean注解故在实际应用中若需要自定义消息对象的序列化方式则可以自己装配RocketMQMessageConverter。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89101.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!