SpringAMQP - 消息传输时,如何提高性能?解决 SQL 注入问题?

这篇具有很好参考价值的文章主要介绍了SpringAMQP - 消息传输时,如何提高性能?解决 SQL 注入问题?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、问题背景

二、从消息转化器根源解决问题

1.引入依赖

2.在服务生产者和消费者中都重新定义一个 MessageConverter,注入到 Spring 容器中


一、问题背景


SpringAMQP的发送方法中,接收消息的类型是Object,也就是说我们可以发送任意对象类型的消息,接下来做个小实验

如下,注入一个队列到容器中,接着在提供一个服务生产者供测试,发送一个对象数据,观察 RabbitMQ 客户端队列数据形式

@Configuration
public class FanoutConfig {

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

}
    @Test
    public void testObjectMessage() {
        HashMap<String, Object> map = new HashMap<>();
        map.put("国家", "china");
        rabbitTemplate.convertAndSend("object.queue", map);
    }

 运行后,查看 RabbitMQ 队列数据如下:

SpringAMQP - 消息传输时,如何提高性能?解决 SQL 注入问题?,Spring Cloud,java,开发语言,rabbitmq

为什么发送的消息变成了这个样子呢?

这是因为SpringAMQP会帮我们序列化为字节后发送:Spring的对消息对象的处理是由org.springframework.amqp.support.converter.MessageConverter 来处理的。而默认实现是SimpleMessageConverter,基于JDKObjectOutputStream完成序列化。 

但是这样的数据就有可能引发以下两种问题:

  1. 转化后数据过长,影响传输效率。
  2. 容易引发 sql 注入问题。

二、从消息转化器根源解决问题


我们只需要在服务生产者和消费者的 Spring 启动类中都重新定义一个 MessageConverter 类型的Bean即可。这里推荐用JSON方式序列化~

具体步骤如下:

1.引入依赖

因为服务生产者和服务消费者都需要 JSON 来序列化和反序列化,因此直接在的父类中引入依赖即可

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>

2.在服务生产者和消费者中都重新定义一个 MessageConverter,注入到 Spring 容器中

使用 @Bean 注解注入即可

@SpringBootApplication
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }

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

}
@SpringBootApplication
public class PublisherApplication {
    public static void main(String[] args) {
        SpringApplication.run(PublisherApplication.class);
    }

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

再尝试发送数据,结果如下:

SpringAMQP - 消息传输时,如何提高性能?解决 SQL 注入问题?,Spring Cloud,java,开发语言,rabbitmq

Ps:注意发送方与接收方必须使用相同的MessageConverter

SpringAMQP - 消息传输时,如何提高性能?解决 SQL 注入问题?,Spring Cloud,java,开发语言,rabbitmq文章来源地址https://www.toymoban.com/news/detail-565401.html

到了这里,关于SpringAMQP - 消息传输时,如何提高性能?解决 SQL 注入问题?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • SpringAMQP中AmqpTemplate发送接收消息

    SpringAMQP中AmqpTemplate发送接收消息

    前言: 最近没事浏览Spring官网,简单写一些相关的笔记,这篇文章整理Spring AMQP相关内容。文章并不包含所有技术点,只是记录有收获   目录 1.AmqpTemplate 介绍 2.发送消息(Sending Message) 2.1发送Message消息 2.2发送POJO对象 2.3默认交换器与默认路由 2.5构建消息方法 3.接收消息(

    2023年04月08日
    浏览(12)
  • 【微服务】RabbitMQ&SpringAMQP消息队列

    【微服务】RabbitMQ&SpringAMQP消息队列

    🚩本文已收录至专栏:微服务探索之旅 👍希望您能有所收获 微服务间通讯有同步和异步两种方式: 同步通讯 :就像打电话,可以 立即得到响应 ,但是你却 不能跟多个人 同时通话。 异步通讯 :就像发消息,可以 同时与多个人 发送并接收消息,但是往往 响应会有延迟

    2024年02月16日
    浏览(6)
  • 【Java】微服务——RabbitMQ消息队列(SpringAMQP实现五种消息模型)

    【Java】微服务——RabbitMQ消息队列(SpringAMQP实现五种消息模型)

    微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发送邮件可以同时与多个人收发邮件,但是往往响应会有延迟。 1.

    2024年02月08日
    浏览(10)
  • 如何提高深度学习性能

    可用于 对抗过度拟合并获得更好泛化能力的20 个提示、技巧和技术 如何从深度学习模型中获得更好的性能? 这是我最常被问到的问题之一。 可能会被问为: 如何提高准确率? ……或者可以反过来说: 如果我的神经网络表现不佳该怎么办? 我经常回答说:“ 我不太清楚,

    2024年02月12日
    浏览(10)
  • 局域网中如何使用飞鸽传书提高文件数据传输速度

    大家都知道,飞鸽传书在局域网中的作用是非常巨大的,合理的配置飞鸽传书,可以让局域网内传输速度与网卡标称传输速度一致,这个功能够吸引人吧,平时想要在局域网中传一部几个G的电影,需要很时间,甚至半个小时以上,但使用飞鸽传书可能仅仅需要几分钟便传输完

    2024年02月06日
    浏览(13)
  • DevOps团队如何提高Kubernetes性能

    DevOps团队如何提高Kubernetes性能

    今天,Kubernetes仍然是开发人员最需要的容器。Kubernets最初由 Google 工程师开发,作为跨本地、公共云、私有云或混合云托管的首选解决方案享誉全球。 来自Statista的报告显示,公共云中的Kubernetes市场份额在过去一年中上升了近30%。并且在拥有超过1000名员工的大型科技企业中

    2024年02月11日
    浏览(7)
  • 什么是SQL注入攻击,解释如何防范SQL注入攻击?

    SQL注入攻击是一种常见的网络攻击方式,攻击者通过在Web应用程序的查询语句中插入恶意代码,从而获取数据库中的敏感信息或者执行其他恶意操作。 为了防范SQL注入攻击,可以采取以下措施: 使用参数化查询:使用参数化查询可以避免攻击者通过查询语句中的参数注入恶

    2024年02月10日
    浏览(13)
  • SQL注入的一些示例及解决SQL注入的方法

    SQL注入是一种常见的网络攻击手段,攻击者通过把SQL命令插入到Web表单提交或输入框后面,盗取数据库信息,甚至控制数据库服务器。解决SQL注入的方法如下: 1、使用参数化查询: 参数化查询是一种预编译查询,该查询将参数和SQL语句分开,从而允许程序将参数值与SQL语句

    2023年04月09日
    浏览(9)
  • RabbitMQ - 基于 SpringAMQP 带你实现五种消息队列模型

    RabbitMQ - 基于 SpringAMQP 带你实现五种消息队列模型

    目录 一、SpringAMQP 1.1、概念 1.2、前置知识(实现案例前必看!) 1.2.1、创建队列 1.2.2、创建交换机 1.2.3、创建绑定 1.2.4、@RabbitListener 注解 a)情况一:queue 存在 b)情况二:queue 不存在  1.2.5、为什么更建议使用 @Bean 注解创建,而不是 @RabbitListener 注解创建? 1.3、案例实现

    2024年04月12日
    浏览(12)
  • 代价敏感矩阵与机器学习:如何提高模型性能

    在现代机器学习和人工智能领域,模型性能的提高是至关重要的。代价敏感矩阵(Cost-Sensitive Matrix)是一种有效的方法,可以帮助我们提高模型的性能。在这篇文章中,我们将深入探讨代价敏感矩阵的背景、核心概念、算法原理、实例代码和未来趋势。 在实际应用中,不同的错

    2024年04月16日
    浏览(16)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包