RabbitMQ7:消息转换器

devtools/2024/11/29 23:12:03/

欢迎来到“雪碧聊技术”CSDN博客!

在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。

让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!感谢您的关注与支持,期待在“雪碧聊技术”与您共同成长!

目录

一、消息转换器

1、通过一个案例,引出消息转换器

①案例介绍

②具体操作

 2、上述案例存在的问题

3、如何解决上述问题?

4、步骤

①引入jackson依赖

MessageConverter%EF%BC%88%E8%BD%AC%E6%8D%A2%E5%99%A8%EF%BC%89-toc" style="margin-left:80px;">②配置MessageConverter(转换器)

③再次发送消息到队列(代码不变)

④ 去rabbitMQ控制台,查看结果

⑤接收时,发的啥类型,就用啥类型接收

⑥查看监听到的结果


一、消息转换器

1、通过一个案例,引出消息转换器

①案例介绍

②具体操作

  • 第一步:在rabbitMQ控制台,新建一个队列object.queue

  • 第二步:直接写代码,往object.queue队列中发送一条消息,消息类型为Map

  • 第三步:在控制台查看该消息,总结问题 

 2、上述案例存在的问题

        上述采用的是默认的序列化方式,即:JDK序列化(序列化就是将对象变成字符串)。

        ①我们传入队列的Map对象,被序列化成了一串字符串,可读性太差;

        ②而且本来内容不多,序列化后,字符串内容太长了,即:消息变大了;

        ③这个JDK序列化生成的字符串,容易被修改,有安全风险。

3、如何解决上述问题?

        使用JSON序列化的方式,将Map对象序列化成一个JSON字符串。这样可读性就强了。

        具体方法就是①引入jackson-databind依赖 ②编写对应的配置类。

        然后就完事了。

4、步骤

①引入jackson依赖

<!--引入jackson依赖-->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.17.0</version>
</dependency>

MessageConverter%EF%BC%88%E8%BD%AC%E6%8D%A2%E5%99%A8%EF%BC%89" style="background-color:transparent;">②配置MessageConverter(转换器)

@Configuration //表明这是个配置类
public class MessageConverterConfig {@Beanpublic MessageConverter jacksonMessageConverter(){return new Jackson2JsonMessageConverter();}
}

 注意:要找对包,别瞎找:

③再次发送消息到队列(代码不变)

④ 去rabbitMQ控制台,查看结果

⑤接收时,发的啥类型,就用啥类型接收

@Component //交给spring管理
public class MqListener {@RabbitListener(queues = "object.queue")public void listenObjectQueue(Map<String, Object> msg){System.out.println("消费者收到了object.queue队列的消息:"+msg);}
}

⑥查看监听到的结果

消费者收到了object.queue队列的消息:{name=jack, age=21}

 可见此时监听到的也是JSON格式的字符串(对应一个Map对象)。

以上就是消息转换器的全部内容,想了解更多RabbitMQ知识,请关注本博主~~


http://www.ppmy.cn/devtools/138037.html

相关文章

什么是axios?怎么使用axios封装Ajax?

学习目标 什么是axios怎么使用axios封装Ajax该如何使用Axios 封装 XHR 请求 什么是axios Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;它可以在浏览器和 Node.js 环境中使用。Axios 提供了简单易用的 API&#xff0c;用于执行各种 HTTP 请求操作&#xff0c;如 GET、P…

Flink学习连载文章10--CheckPoint和维表Join

一、Checkpoint 1、State Vs Checkpoint State:状态,是Flink中某一个Operator在某一个时刻的状态,如maxBy/sum,注意State存的是历史数据/状态,存在内存中。 Checkpoint:快照点, 是Flink中所有有状态的Operator在某一个时刻的State快照信息/存档信息。 一句话概括: Checkpoi…

TCP/IP学习笔记

TCP\IP从实际应用的五层结构开始&#xff0c;自顶而下的去分析每一层。 TCP/IP五层架构概述 学术上面是TCP/IP四层架构&#xff0c;OSI/ISO是七层架构&#xff0c;实际中使用的是TCP/IP五层架构。 数据链路层 ICMP数据包分析 Wireshark抓包分析ICMP协议_wireshark抓ping包分析…

Linux——基础命令(2) 文件内容操作

目录 ​编辑 文件内容操作 1.Vim &#xff08;1&#xff09;移动光标 &#xff08;2&#xff09;复制 &#xff08;3&#xff09;剪切 &#xff08;4&#xff09;删除 &#xff08;5&#xff09;粘贴 &#xff08;6&#xff09;替换,撤销,查找 &#xff08;7&#xff…

数据结构--链表实现栈和队列

引入 在数据结构--数组实现栈和队列-CSDN博客这篇文章中我们已经用数组实现了栈和队列&#xff0c;那么我们再练习一下链表实现吧&#xff01;o(*&#xffe3;▽&#xffe3;*)ブ 既然是链表&#xff0c;那么前提给出一个创建节点的封装类&#xff1a; public class Node {int…

hadoop_zookeeper详解

Zookeeper秒懂 工作机制特点数据结构应用场景安装选举机制初始化启动无法和Leader保持连接 节点类型监听器原理写数据流程Paxos算法算法流程 客户端命令 Zookeeper 是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的 Apache 项目。 工作机制 Zookeeper是一个基于观察…

uniapp配置全局消息提醒

1.H5使用根标签插入dom的方式实现。 2.app端使用plus.nativeObj.View的方式绘制实现 H5端app端 H5端 创建组件orderAlert.vue <template><div class"view"><div class"content" v-if"visible"><div class"message&q…

DVWA靶场——File Inclusion

File Inclusion&#xff08;文件包含&#xff09;漏洞 指攻击者通过恶意构造输入&#xff0c;利用应用程序错误的文件包含机制&#xff0c;导致程序包含并执行未经授权的本地或远程文件。这类漏洞广泛存在于Web应用程序中&#xff0c;尤其是在那些允许用户提供文件路径或URL的地…