当前位置: 首页 > 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.dtcms.com/a/325341.html

相关文章:

  • OV5640 相机开发流程
  • 闸机控制系统从设计到实现全解析:第 5 篇:RabbitMQ 消息队列与闸机通信设计
  • C语言:贪吃蛇游戏
  • MiniCPM-V 4.0开源,号称是手机上的GPT-4V
  • 41.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成Swagger
  • 量子计算:叩响金融定价革命的大门——期权定价的范式转移
  • 用Python实现Excel转PDF并去除Spire.XLS水印
  • glide缓存策略和缓存命中
  • 基于 JavaWeb+MySQL设计实现博客管理系统
  • [激光原理与应用-230]:物理学主要分支、研究对象、衍生技术及职业方向解析
  • 智慧零售的本质重构与技术创新:基于定制开发开源AI智能名片S2B2C商城小程序的实践路径
  • Redis应⽤-缓存与分布式锁
  • MySQL误删数据了,如何快速恢复?
  • GraalVM !拥抱云原生的 JVM
  • AI驱动的智能编码革命:从Copilot到全流程开发自动化
  • 2024年ESWA SCI1区TOP,自适应种群分配和变异选择差分进化算法iDE-APAMS,深度解析+性能实测
  • SysTick定时器的工作原理是什么
  • 在Linux中模拟配置高性能web服务器
  • docker compose和docker-compose命令的区别
  • 【数据可视化-86】中国育儿成本深度可视化分析(基于《中国统计年鉴2023》数据):用Python和pyecharts打造炫酷可视化大屏
  • linux常见故障 实用故障系列文章-2获取挂掉的进程pid
  • Linux kernel network stack, some good article
  • AI模型服务接入WAF防火墙
  • WebSocket-java篇
  • 有序矩阵中第K小的元素+二分查找
  • 矩阵游戏(二分图最大匹配)
  • Spring Boot 菜单删除功能的实现与事务管理
  • 数据结构——树(02构造二叉树,代码练习)
  • 《解锁 C++ 进阶密码:引用补充与内联函数、nullptr 核心用法》
  • 爬虫与数据分析实战