当前位置: 首页 > ds >正文

RabbitMQ 消息转换器详解

RabbitMQ 消息转换器详解

一、为什么需要消息转换器?

RabbitMQ 的消息传输协议只识别字节流

  • 发送对象时,需要序列化成字节数组
  • 接收消息时,需要将字节数组反序列化成对象

如果不使用消息转换器

  • 需要手动序列化和反序列化,代码冗余且容易出错

使用消息转换器:

  • AMQP模板(RabbitTemplate)自动完成消息编码/解码
  • 减少样板代码,提高可维护性

二、Spring AMQP 常用消息转换器

转换器类作用
SimpleMessageConverter默认转换器,支持 Stringbyte[]Serializable
Jackson2JsonMessageConverter使用 Jackson 将对象序列化为 JSON
SerializationMessageConverter使用 Java 原生序列化机制
ContentTypeDelegatingMessageConverter根据 contentType 动态选择转换器

三、默认消息转换器

Spring AMQP 默认使用 SimpleMessageConverter

  • 发送 String → UTF-8 编码为 byte[]
  • 发送 byte[] → 直接传输
  • 发送 Serializable 对象 → Java 原生序列化

缺点

  • 原生序列化体积大、性能一般
  • 可读性差(调试和跨语言支持差)

四、JSON 消息转换器

4.1 引入依赖

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency>

4.2 配置消息转换器

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

相关文章:

  • 心理咨询|学生心理咨询评估系统|基于Springboot的学生心理咨询评估系统设计与实现(源码+数据库+文档)
  • 使用TextureView和MediaPlayer播放视频黑屏问题
  • AI模型服务接入WAF防火墙
  • 【C++】哈希表的实现(unordered_map和unordered_set的底层)
  • DDIA第五章:分布式数据复制中的一致性与冲突处理
  • 触想定制化工业一体机化身渔业预警终端,守望渔船安全
  • Spring Boot 菜单删除功能的实现与事务管理
  • 【前端基础】16、结构伪类(注:粗略说明)
  • 数据上云有什么好处?企业数据如何上云?
  • 基于FPGA的热电偶测温数据采集系统,替代NI的产品(一)FPGA 测温研究现状
  • 自由学习记录(81)
  • 【JAVA】使用系统音频设置播放音频
  • 零 shot 语义+在线闭环:深度学习让机器人学会“主动”
  • MySQL 数据操作全流程:创建、读取、更新与删除实战
  • 对比FRI 与 Ligero 证明大小
  • 怎么实现表征工程并强化模型的“事实性”“诚信性”
  • 深入解析大模型落地的四大核心技术:微调、提示词工程、多模态应用 及 企业级解决方案,结合代码示例、流程图、Prompt案例及技术图表,提供可落地的实践指南。
  • FreeRTOS学习:资源管理:互斥操作的本质
  • 腾讯云EdgeOne Pages深度使用指南
  • GPU指令集入门教程
  • 《 C Primer Plus》
  • 常用hook钩子函数
  • 快速了解DBSCAN算法
  • Vue.js设计于实现 - 响应式(三)
  • 音视频学习(五十二):ADTS
  • Graham 算法求二维凸包
  • Python 2025:最新技术趋势与展望
  • 每日五个pyecharts可视化图表-line:从入门到精通 (2)
  • lesson34:深入理解Python线程:从基础到实战优化
  • jupyter notebook如何打开其他盘目录