| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Springboot+Rabbitmq消费者注解详解、改序列化方式 -> 正文阅读 |
|
[Java知识库]Springboot+Rabbitmq消费者注解详解、改序列化方式 |
RabbitMQ–了解中间件、常用的中间件、分布式系统使用中间件、Docker安装rabbitmq及遇到的问题、RabbitMQ核心组成、消息模式Springboot整合RabbitMQ(Fanout、Direct、Topic模式)、设置队列信息TTL、死信队列、RabbitMQ磁盘监控,内存控制Springboot+Rabbitmq消费者注解详解、改序列化方式Docker简易部署RabbitMQ集群、分布式事务解决方案+案例(可靠生产、可靠消费)springboot+rabbitmq消费者最近在学习rabbitmq技术,在整理资料时发现整合springboot+rabbitmq的消费者方式,网上有不同的写法,为了满足我的好奇心,网上查阅资料然后整理一下,以作记录。 一般需要使用到两个注解:
@RabbitListener看一下这个注解的源码 看到:这个注解可以声明在 通常使用:
其实,@RabbitListener注解中有很多的属性,一般只使用 @RabbitHandler如果@RabbitListener是声明在方法上的,这个注解可以不使用。如下:
但是当@RabbitListener注解声明在类上面时,这个注解是和@RabbitListener配合使用的。 假设有这样的需求:需要根据队列中发送的数据格式,进行不同的处理。比如:公司内部决定,遇到byte[]这种的数据需要按照方法一处理,遇到字符串格式传输的数据需要按照方法二处理。这个时候就需要使用@RabbitHandler来配合@RabbitListener来处理。
MessageConvert&序列化涉及到网络数据传输,那么序列化是不可避免的。生产者以某种规则将消息数据转为byte[]进行发送,消费者以约定的规则将byte[]进行解析。
使用JSON序列化通常情况下我们如果不配置序列化的处理类,那么我们可以在传递参数时直接给传递一个json字符串或者字节数组,然后接收方再通过同样的方式解析即可。
配置使用Jackson2JsonMessageConverter若传递数据时不想手动将对象序列化为其他格式,那么我们可以配置序列化处理类来进行处理。 生产者需要配置RabbitTemplate
消费者需要使用相同的序列化类
生产者发送消息
看下控制台日志 接收者,直接接收相应 的数据类型
接收到的信息 注意:要传输的实体类必须要实现序列化接口,并且一定要提供一个无参构造函数!!! 建议推荐使用手动将对象序列化的方式进行数据传输,否则再去配置序列化的处理类比较麻烦。如果手动序列化方式的地方过多,那么可以考虑配置序列化类 参考SpringBoot 整合 RabbitMQ 修改序列化方式 如果要改为Json序列化格式,可以看下这篇文章RabbitMQ:@RabbitListener 与 @RabbitHandler 及 消息序列化 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:00:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |