RabbitMQ7:消息转换器

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

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

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

目录

一、消息转换器

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

①案例介绍

②具体操作

2、上述案例存在的问题

3、如何解决上述问题?

4、步骤

①引入jackson依赖

②配置MessageConverter(转换器)

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

[④ 去rabbitMQ控制台,查看结果](#④ 去rabbitMQ控制台,查看结果)

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

⑥查看监听到的结果


一、消息转换器

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

①案例介绍

②具体操作

  • 第一步:在rabbitMQ控制台,新建一个队列object.queue
  • 第二步:直接写代码,往object.queue队列中发送一条消息,消息类型为Map
  • 第三步:在控制台查看该消息,总结问题

2、上述案例存在的问题

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

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

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

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

3、如何解决上述问题?

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

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

然后就完事了。

4、步骤

①引入jackson依赖

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

②配置MessageConverter(转换器)

java 复制代码
@Configuration //表明这是个配置类
public class MessageConverterConfig {

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

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

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

④ 去rabbitMQ控制台,查看结果

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

java 复制代码
@Component //交给spring管理
public class MqListener {

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

⑥查看监听到的结果

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

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

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

相关推荐
zs宝来了1 天前
RabbitMQ 可靠性投递:持久化、确认机制与死信队列
rabbitmq·死信队列·持久化·可靠性·确认机制
BPM_宏天低代码2 天前
宏天CRM系统的消息中心:基于RabbitMQ的实践
分布式·rabbitmq
少许极端3 天前
消息队列4-RabbitMQ的高级特性-TTL机制、死信队列、延迟队列
分布式·消息队列·rabbitmq
014-code3 天前
RabbitMQ 生产端可靠投递(confirm、return、重试)
分布式·消息队列·rabbitmq
014-code3 天前
RabbitMQ 消费端幂等实战(重复消息、去重、重放怎么处理)
分布式·消息队列·rabbitmq
8Qi83 天前
微服务通信:同步 vs 异步与MQ选型指南
java·分布式·微服务·云原生·中间件·架构·rabbitmq
redaijufeng3 天前
SpringBoot中整合RabbitMQ(测试+部署上线 最完整)
spring boot·rabbitmq·java-rabbitmq
糖炒栗子03263 天前
后端消息投递可靠性:基于 RabbitMQ 的“双重防线-幂等闭环”模式
java·后端·rabbitmq
jwt7939279373 天前
RabbitMQ HAProxy 负载均衡
rabbitmq·负载均衡·ruby
鬼先生_sir4 天前
RabbitMQ 全面解析(完整版)
分布式·rabbitmq