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

Rabbitmq的消息转换器

Spring会把你发送的消息序列化为字节发送给MQ,接收消息的时候,还会把字节反序列化为Java对象 ,只不过,默认情况下Spring采用的序列化方式是JDK序列化。众所周知,JDK序列化存在下列问题:

  • 数据体积过大

  • 有安全漏洞

  • 可读性差

默认转换器

发送一个Map对象  

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

发送消息后查看控制台  

配置JSON转换器

显然,JDK序列化方式并不合适。我们希望消息体的体积更小、可读性更高,因此可以使用JSON方式来做序列化和反序列化。

引入依赖 

在publisher和consumer两个服务中都引入依赖

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

 配置消息转换器

在启动类中添加一个Bean即可

@Bean
public MessageConverter jsonMessageConverter(){return new Jackson2JsonMessageConverter();
}

 发送一个Map对象  

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

 rabbitmq查看消息

 消息体的体积更小、可读性更高,因此可以使用JSON方式来做序列化和反序列化。

http://www.lryc.cn/news/145760.html

相关文章:

  • nvidia-docker的使用
  • C++新经典 | C语言
  • 物联网智慧种植农业大棚系统
  • TabBar组件如何跳转页面?
  • Vue.js中,router和route
  • 【微服务】07-缓存
  • 权限校验中的“双token”方案
  • TensorFlow的基本概念
  • 【卷积神经网络】MNIST 手写体识别
  • Ansible学习笔记2
  • 80. 删除有序数组中的重复项 II
  • CVE-2023-36874 Windows错误报告服务本地权限提升漏洞分析
  • IDEA遇到 git pull 冲突的几种解决方法
  • [Unity]UI和美术出图效果不一致
  • SpringBoot整合JPA和Hibernate框架
  • Java中文件的创建(三种方式),文件常用的方法
  • Spring boot中调用C/C++(dll)
  • 【Apollo学习笔记】——规划模块TASK之PATH_DECIDER
  • Lua学习(二)
  • 制作鲜花商城小程序的详细步骤
  • Ubuntu20以上高版本如何安装低版本GCC
  • context.WithCancel()的使用
  • vue3中引入百度地图
  • 【Linux-Day8- 进程替换和信号】
  • 日志文件之间关系和介绍及应用
  • mac电脑屏幕录制Berrycast Mac屏幕录制软件
  • 机器学习笔记之最优化理论与方法(一)最优化问题概述
  • 【ES5新特性一】 严格模式语法变化、全局的JSON对象、编码和解码的方法
  • Java【手撕滑动窗口】LeetCode 3. “无重复字符的最长子串“, 图文详解思路分析 + 代码
  • 学习哈哈哈哈