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

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.lryc.cn/news/617301.html

相关文章:

  • windows上RabbitMQ 启动时报错:发生系统错误 1067。 进程意外终止。
  • 内存问题排查工具ASan初探
  • 嵌入式Linnux学习 -- 软件编程2
  • uart通信中出现乱码,可能的原因是什么 ?
  • 借助 ChatGPT 快速实现 TinyMCE 段落间距与行间距调节
  • Nmap 渗透测试弹药库:精准扫描与隐蔽渗透技术手册
  • 什么是结构化思维?什么是结构化编程?
  • 计算机网络(一)——TCP
  • Vue脚手架模式与环境变量
  • 变频器实习DAY26 CDN 测试中心使用方法
  • Android16新特性速记
  • C语言如何安全的进行字符串拷贝
  • 从 GPT-2 到 gpt-oss:架构进步分析
  • 北京JAVA基础面试30天打卡07
  • Nacos-1--什么是Nacos?
  • 5G NR 非地面网络 (NTN)
  • JVM运维
  • C#(vs2015)利用unity实现弯管机仿真
  • 5G 非地面网络(NTN)最专业的方案
  • CSS accent-color:一键定制表单元素的主题色,告别样式冗余
  • 第2节 大模型分布式推理架构设计原则
  • XX生产线MES系统具体实施方案
  • 【Node.js从 0 到 1:入门实战与项目驱动】1.4 Node.js 的发展与生态(历史版本、LTS 版本、npm 生态系统)
  • CobaltStrike的搭建与使用
  • java基础概念(二)----变量(附练习题)
  • 【代码随想录day 17】 力扣 617.合并二叉树
  • 零外围双Buck 2C和2C1A!功率分配So Easy
  • Jmeter使用第二节-接口测试(Mac版)
  • MyBatis执行器与ORM特性深度解析
  • n8n中调用playwright-mcp 项目