RabbitMQ消息转换器

这篇具有很好参考价值的文章主要介绍了RabbitMQ消息转换器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RabbitMQ消息转换器

RabbitMQ消息转换器
在SpringAMQP的发送方法中,发送消息和接受消息的类型都是Object,也就是说,我们可以发送任意对象类型的消息,SpringAMQP都会帮我们把发送的消息序列化为字节后再进行发送。下面,我们可以演示一下:

假设我们现在有个User类,如下(切记一定要实现Serializable接口,才能被jdk序列化和反序列化):

@Data
public class User implements Serializable {
    private String name;
    private Integer age;
    private Date birthday;
}

然后我们在监听服务中注册一个名为 “object.queue” 的队列。

@Configuration
public class FanoutConfig {
    @Bean
    public Queue objectQueue(){
        return new Queue("object.queue");
    }
}

然后启动我们的监听服务,可以看到,在RabbitMq上已经可以看到我们刚才新建的队列了:
RabbitMQ消息转换器
为了观察我们发送到RabbitMQ的对象,我们这里先把监听服务关掉。

然后我们编写一个发送消息的测试方法如下:

    @Test
    public void testObject(){
        //接受的队列名称
        String queueName = "object.queue";
        //新建对象
        User user = new User();
        user.setName("张三");
        user.setAge(1);
        user.setBirthday(new Date());
        
        rabbitTemplate.convertAndSend(queueName, user);
    }

编写完成后,我们运行该方法。然后,我们到rabbitMq上面看一下接收到的消息:
RabbitMQ消息转换器
这里,我们可以看到,我们的content_type的值是 application/x-java-serialized-object (Java序列化对象)。

此时,我们启动我们的监听服务,可以接收到消息如下:
RabbitMQ消息转换器

上面我们虽然也可以成功发送和接收对线,但是默认的基于JDK做的序列化存在下列问题

  • 数据体积过大
  • 有安全漏洞
  • 可读性差

因此,我们正常使用的情况下,我们不会使用默认的JDK的序列化,而是会用我们的JSON转换器

这里说明一下:Spring的队列消息对象的处理是由 MessageConverter 来处理的,而默认实现是 SimpleMessageConverter,该类基于 JDK 的 ObjectOutputStream 完成序列化。
如果我们在我们的配置类中,注册一个 MessageConverter 类型的 Bean 即可。推荐使用 JSON 方式序列化,步骤如下:
发送服务接收服务 中都引入我们的依赖:

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

然后,我们在 发送服务接收服务 的启动类中添加我们的Bean如下:
这里返回的 MessageConverter 必须是amqp包下的 MessageConverter。(import org.springframework.amqp.support.converter.MessageConverter

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

为了看我们发送到rabbitMq的消息的形式,这里,我们还是把消费者服务先停掉,然后重新运行我们刚才发送User对象的测试方法。

发送成功后,我们获取我们的Message可以看到,此时的content_type是 application/json,而消息的可读性也变高了,细心的小伙伴应该也可以看到,这里需要的字节数也变少了。
RabbitMQ消息转换器
然后我们重新启动我们的消费者服务,再次观察结果如下:
RabbitMQ消息转换器文章来源地址https://www.toymoban.com/news/detail-454013.html

到了这里,关于RabbitMQ消息转换器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 最全的视频转换器工具清单,这18款免费视频格式转换器记得收藏

    审查和比较具有功能和定价的最佳视频转换器软件。从这个顶级付费和免费在线视频转换器工具列表中选择,以快速轻松地转换任何视频: 什么是视频转换器? 视频转换工具允许您将视频从一种格式转换为另一种格式。第一个商业上成功的视频格式是 Quad,它于 1956 年推出。

    2023年04月08日
    浏览(117)
  • 在线PDF格式转换器推荐,小圆象PDF转换器满足您的办公需求

    作为上班族,我们都知道在办公应用中经常使用PDF文件。PDF具有较高的内容安全性,并且可以在多种设备上打开和浏览而不会出现格式混乱的问题。然而,PDF文件的一个短板是其不易编辑。通常情况下,我们需要将PDF文件转换为Word文档,以便提取其中的文字内容或进行格式编

    2024年02月11日
    浏览(63)
  • 【图像增强器和转换器】Winxvideo AIAI 驱动的视频/图像增强器和转换器软件。

    Winxvideo AI,以前称为WinX HD Video Converter Deluxe,是一款利用尖端深度学习技术的高级软件工具包。它提供了一套全面的工具,用于放大、稳定、转换、压缩、录制和编辑 4K/8K/HDR 视频。 AI 驱动的功能通过全面的 GPU 加速确保影院级质量。 Winxvideo AI 提供了一套强大且易于使用的视

    2024年02月20日
    浏览(47)
  • 电源转换器类型

    1根据转换的形式分类,可分为: AC-AC(交流-交流)转换器:如交流电源变压器、变频器等。 AC-DC(交流-直流)转换器:整流器。 DC-DC(直流-直流)转换器。 DC-AC(直流-交流)转换器:逆变器。 2 根据转换的方法分类,可分为: 线性电源:使用工作在线性区的功率器件调整

    2024年02月08日
    浏览(54)
  • ip转换器哪个好用 ip地址切换器有哪些

    在互联网时代,IP转换器成为了实现高效工作的常见工具。而如今,市面上涌现出了众多的IP转换器软件,使得用户在选择时感到困惑。本文将介绍一种深度IP转换器软件,探讨其特点和优势,以及与其他软件相比的差异,帮助读者在众多产品中作出明智的选择。 强大的功能和

    2024年02月13日
    浏览(55)
  • 电脑视频转换成mp4格式,视频格式转换器转换

    怎么把 电脑视频转换成mp4格式 ? 使用视频转换器,可以转换来自各种设备的音视频格式,包括相机、手机、视频播放器、电视、平板电脑等。因此,音视频爱好者都可以使用它在各种设备上播放或在社交平台上分享。 主要人群及作用: 音乐爱好者:如果酷爱音乐,那么视

    2023年04月13日
    浏览(59)
  • 【wpf】转换器 Converter

    今天积攒了一个转换器的用法,分享给各位。 我们经常会有这种需求: 某些控件有时需要显示,有时需要隐藏,比如: 那,我就想通过一个bool变量和是否显示绑定。 但是我们知道,是否显示,这个属性  Visibility 它并不是一个bool类型无法直接绑定,此时我们需要一个转换

    2023年04月26日
    浏览(50)
  • WPF多值转换器

    背景:实现Slider拖动可以调整rgb 单转换器:WPF中数据绑定转换器Converter-CSDN博客 在View中:         -- Fill中绑定的资源是Window.Resources中引入进来的转换器key         -- 转换器返回的是一个SolidBrush,其实就是相当于在这个地方写个SolidBrush         -- 这里绑定的是Slider的值,

    2024年01月23日
    浏览(48)
  • WPF Converter转换器

    在 WPF 中,Converter 通常用于在数据绑定过程中执行值的转换。你可以创建自定义的 Converter 类来实现数据的转换逻辑,然后在 XAML 中使用这个转换器。 创建一个继承自 ValueConverter 接口的转换器类,实现 Convert 和 ConvertBack 方法。 在 XAML 中,声明 Converter,并将它应用到数据绑定

    2024年01月21日
    浏览(44)
  • 视频格式怎么批量转换?5 个批量视频转换器分享

    可以同时转换多个视频吗?您是否正在寻找一款有用的批量视频转换器?最好的批量视频转换器是什么? 使用批量视频转换器同时转换多个视频文件是一个好方法。这篇文章为您总结了 5 个最好的批量视频转换器。 1、奇客视频转换器 这是适用于 Windows 的最佳免费批量视频转

    2024年04月10日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包