章节索引 :

消息转换器概念讲解与基本属性介绍

1. 前言

Hello,大家好。本小节会为同学们介绍 RabbitMQ 在 Spring 生态中的消息转换器,消息转换器是 RabbitMQ 在 Spring 生态中的又一核心元素,是对消息适配器的补充,通过配合消息适配器的使用,可以实现针对不同的消息接收格式进行处理,以满足不同业务场景的需要。

本节主要内容:

  • 消息转换器基础概念概述;

  • 消息转换器基础配置介绍。

2. 消息转换器基础概念概述

基础概念:

我们在上一小节中,已经对消息适配器有了一个基础的认识,去并且在介绍消息适配器的同时,也引入了消息转换器,就是代码中的 MessageConverter 类。

在经过上节消息适配器代码的实操之后,相信大家对消息转换器的感念已经不是那么陌生了,想必在各位同学的心里,已经对消息转换器有一个初步的认知了。

同样地,在介绍什么是消息转换器时,还是和消息适配器那样,将消息和转换器两个概念拆开来介绍,但是,消息这一名词已经在消息适配器小节中做了介绍,这里不再赘述,我们直接从转换器开始。

我们先抛开计算机这一专业领域来说,在我们的日常生活中,转换器的例子随处可见,这里我们还拿在上节中提到的笔记本电脑的例子继续介绍。

我们都知道,随着笔记本电脑行业的飞速发展,笔记本的功能也是越来越强大,那么,笔记本电脑提供给我的接入端口也在发生着强大的变化,传统的 USB 端口在最新的笔记本电脑中甚至已经看不见了,越来越多的则是 Type-C 或 Light 形式的接入端口。

试想一下,如果我们需要使用移动硬盘来连接电脑,进行工作数据的处理,移动硬盘只有一个普通的 USB 端口,但是我们的笔记本电脑只有一个 Type-C 的接入端口,那么此时我们又应该如何将移动硬盘来连接电脑呢。这种情况,我们就需要一条转接线来发挥作用了。

就上述例子而言,转接线提供了一种在移动硬盘和笔记本电脑之间,由于接入端口的不同,移动硬盘和笔记本电脑可以进行接入的桥梁。转接线的一端连接电脑的 Type-C 端口,另一端则通过 USB 端口的形式连接移动硬盘,以达到不同的端口之间移动硬盘可以继续连接笔记本电脑的目的。而这一转接线在移动硬盘和笔记本电脑之间就发挥了转换器的作用。

说白了,转换器其实就是为了在两种不同的物品之间,通过一定的媒介,使这两种不同的物品可以继续进行互联互通的一种技术手段,而这种技术手段可以是技术实物(比如转换线),也可以是一种可以在空气中进行传播的介质(Wifi投屏)。

消息转换器亦是如此,在 Spring-AMQP 中,消息适配器指的就是,将我们接收的消息进行不同格式的转换,从而可以解决数据在不同业务场景下所需要的格式的不同的问题,即 RabbitMQ 中的消息转换器就是将 RabbitMQ 中的消息进行不同格式的转换。

在介绍完消息转换器的基础概念之后,下面让我们来看一下如何对消息转换器进行简单的配置吧。

3. 消息转换器基础配置介绍

还是像上节小节一样,要想在 Spring 中使用消息转换器,需要将 Spring-AMQP 和 AMQP-Stater 的依赖先引入进来,方便起见,同学们可以直接拷贝下放代码:

3.1 引入消息转换器

以 Maven 引入方式为例,引入代码如下所示:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
  <groupId>com.rabbitmq</groupId>
  <artifactId>amqp-client</artifactId>
  <version>3.6.5</version>
</dependency>

在将这两个依赖进行引入之后,我们就可以对消息转换器进行配置了。

3.2 初始化消息转换器

在 Spring-AMQP 中,存在很多不同类型的消息转换器,我们需要根据我们不同的业务需求,来选择使用哪种类型的消息转换器,当然,如果 RabbitMQ 提供的消息转换器不能够满足我们的业务需求,我们也可以自定义消息转换器。

本部分会以 Jackson2JsonMessageConverter 消息转换器来介绍,在使用消息转换器前的准备工作,并在下一小节中对常用类型的消息转换器进行代码实操。

初始化 Jackson2JsonMessageConverter 消息转换器

像 RabbitAdmin 和 RabbitTemplate 一样,要想使用消息转换器,需要先对消息转换器进行初始化,这个初始化过程非常简单,初始化 Jackson2JsonMessageConverter 消息转换器的代码如下所示:

代码实现:

// 省略连接 RabbitMQ-Server 的步骤
Jackson2JsonMessageConverter jsonConverter = new Jackson2JsonMessageConverter();

代码解释:

1-2 行,我们使用了 new Jackson2JsonMessageConverter 的方式,来对 Jackson2JsonMessageConverter 消息转换器进行实例化,在实例化的同时,我们调用了 Jackson2JsonMessageConverter 消息转换器通用的构造方法,来初始化了 Jackson2JsonMessageConverter 消息转换器。

在我们使用消息转换器时,通常来讲,我们并不需要向消息转换器中传递任何参数,我们只需要在我们的消息适配器的实现中,声明好消息转换器所需的转换格式即可。

通过上述两行代码,我们就完成了 Jackson2JsonMessageConverter Jackson2JsonMessageConverter 消息转换器中的属性或方法。

Tips: 消息转换器需要配合消息适配器来同时使用才行,消息转换器不能单独使用,但是,消息适配器可以单独使用,可以不在消息适配器中配置消息转换器。

4. 小结

本小节通过日常生活中的一个例子,为同学们详细介绍了消息转换器这一概念,包括什么是转换器,以及最后的什么是 RabbitMQ 消息转换器这一概念。在介绍完相关概念之后,又以 Jackson2JsonMessageConverter 消息转换器为例,为同学们概述了 RabbitMQ 中消息转换器的基础使用,以及初始化方法。

通过基础概念与基础使用相结合的方式,旨在希望同学们可以通过本节的学习对 RabbitMQ 中的消息转换器这一概念有一个简单清楚的认识,以及了解一些消息转换器的基础使用方法,这样我们在下节才会很好地掌握消息转换器中的使用。

RabbitMQ 简介
RabbitMQ 简介
RabbitMQ 基础
Win环境-SpringBoot集成MQ Mac OS环境下RabbitMQ的安装与集成 Linux环境下RabbitMQ安装与服务命令实操 RabbitMQ 核心基础概念详解 RabbitMQ 基础核心配置文件介绍 RabbitMQ 消息发送原理概述 RabbitMQ 消息发送模式详解 RabbitMQ 交换机详解 RabbitMQ 消息监控平台介绍
RabbitMQ 基础特性与进阶
RabbitMQ的幂等性概念 RabbitMQ中消息确认与返回机制 RabbitMQ中消费者ACK与重回队列机制 RabbitMQ中的TTL消息是什么 死信队列基础概念详解与配置
RabbitMQ 整合 Spring 生态链
RabbitAdmin基础概念详解与配置 RabbitTemplate基础概念详解与配置 消息容器介绍 消息适配器概念讲解与基本属性介绍 消息适配器应用实操 消息转换器概念讲解与基本属性介绍 消息转换器应用实操
RabbitMQ 集群基础
Warren模式与Shovel模式介绍 Mirror模式与Federation模式介绍 RabbitMQ集群配置文件概述 KeepAlived组件基础属性介绍 HaProxy组件基础属性介绍 RabbitMQ集群故障排查与恢复概述
RabbitMQ 实战
消息发送模式实战之直接模式与主题模式 消息发送模式实战之发布订阅模式 消息发送模式实战之普通队列模式与工作队列模式 使用RabbitMQ优化用户登录功能 使用RabbitMQ优化用户注册功能 RabbitMQ集成KeepAlived组件实操 RabbitMQ集群集成HaProxy组件实操 使用RabbitMQ打造扛得住的高并发环境(一) 使用RabbitMQ打造扛得住的高并发环境(二) 使用RabbitMQ打造扛得住的高并发环境(三)