前言

本文介绍了通过最简单方法使用 SpringBoot 2 整合 RabbitMQ,带你快速上手 RabbitMQ 的操作。

操作前需要先安装 RabbitMQ 服务。Windows 系统可以参考 Windows 环境安装 RabbitMQ

快速整合操作

  1. 首先在 pom.xml 中引入 spring-boot-starter-amqp starter 依赖。

    <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    
  2. 在配置文件中添加 RabbitMQ 的相关配置,必选配置如下:

    # RabbitMQ 主机IP
    spring.rabbitmq.host=127.0.0.1
    # RabbitMQ 端口号
    spring.rabbitmq.port=5672
    # RabbitMQ 用户名
    spring.rabbitmq.username=guest
    # RabbitMQ 密码
    spring.rabbitmq.password=guest
    
  3. 创建队列
    主要是定义队列的名称,SpringBoot 使用 Queue对象进行定义。

    @Configuration
    public class RabbitMQConfig {public static final String QUEUE = "queue";@Beanpublic Queue queue() {return new Queue(QUEUE,true);}
    }
    

    Queue 构造器第一个参数是队列的名称,第二个参数表示是否持久化该队列。如果我们声 明一个持久队列,则持久为真(该队列将在服务器重新启动后继续存在)

  4. 创建发送者
    SpringBoot 为我们提供了 AmqpTemplate 它定义很多发送消息的 api。

    @Service
    public class RabbitMQSend {private static Logger log = LoggerFactory.getLogger(RabbitMQSend.class);@Autowiredprivate AmqpTemplate amqpTemplate ;public void send(Object message) {amqpTemplate.convertAndSend(RabbitMQConfig.QUEUE, message);}
    }
    
  5. 创建接受者
    在方法上声明 @RabbitListener,在@RabbitListener中指定使用的队列名称,并在该方法中定义String 类型消息参数。

    @Service
    public class RabbitReceiver {private static Logger log = LoggerFactory.getLogger(RabbitReceiver.class);/*** Direct 模式  交换机模式* @param message*/@RabbitListener(queues=RabbitMQConfig.QUEUE)public void receive(String message) {log.info("receive message:"+message);}/*** Direct 模式  交换机模式* @param message*/@RabbitListener(queues=RabbitMQConfig.QUEUE)public void receive2(String message) {log.info("receive2 message:"+message);}
    }
    

测试

1 定义发送消息的Controller

@RestController
@RequestMapping("/rabbitMQDemo")
public class RabbitMQDemoController {@Autowiredprivate RabbitMQSend send;@RequestMapping("/helloworld")public String helloword(@RequestParam("msg") String msg) {send.send(msg);return "发送成功!";}
}

2 通过 Jmeter 进行测试

创建20个线程访问 RabbitMQDemoController。

测试结果如下:

  1. 2019-07-27 19:09:35.549 INFO 5716 — [cTaskExecutor-1]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive message:2123
  2. 2019-07-27 19:09:35.603 INFO 5716 — [TaskExecutor-10]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive message:2123
  3. 2019-07-27 19:09:35.668 INFO 5716 — [cTaskExecutor-9]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive message:2123
  4. 2019-07-27 19:09:35.717 INFO 5716 — [cTaskExecutor-3]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive message:2123
  5. 2019-07-27 19:09:35.760 INFO 5716 — [cTaskExecutor-7]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive message:2123
  6. 2019-07-27 19:09:35.834 INFO 5716 — [cTaskExecutor-6]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive message:2123
  7. 2019-07-27 19:09:35.867 INFO 5716 — [cTaskExecutor-5]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive message:2123
  8. 2019-07-27 19:09:35.916 INFO 5716 — [cTaskExecutor-4]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive message:2123
  9. 2019-07-27 19:09:35.961 INFO 5716 — [cTaskExecutor-8]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive message:2123
  10. 2019-07-27 19:09:36.010 INFO 5716 — [cTaskExecutor-2]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive message:2123
  11. 2019-07-27 19:09:36.059 INFO 5716 — [cTaskExecutor-1]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive2 message:2123
  12. 2019-07-27 19:09:36.107 INFO 5716 — [cTaskExecutor-8]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive2 message:2123
  13. 2019-07-27 19:09:36.156 INFO 5716 — [TaskExecutor-10]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive2 message:2123
  14. 2019-07-27 19:09:36.209 INFO 5716 — [cTaskExecutor-6]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive2 message:2123
  15. 2019-07-27 19:09:36.258 INFO 5716 — [cTaskExecutor-7]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive2 message:2123
  16. 2019-07-27 19:09:36.308 INFO 5716 — [cTaskExecutor-3]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive2 message:2123
  17. 2019-07-27 19:09:36.355 INFO 5716 — [cTaskExecutor-5]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive2 message:2123
  18. 2019-07-27 19:09:36.403 INFO 5716 — [cTaskExecutor-4]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive2 message:2123
  19. 2019-07-27 19:09:36.462 INFO 5716 — [cTaskExecutor-2]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive2 message:2123
  20. 2019-07-27 19:09:36.509 INFO 5716 — [cTaskExecutor-9]
    c.l.rabbitmq.helloworld.RabbitReceiver : receive2 message:2123

小结

SpringBoot 通过自带 AmqpTemplate 操作 RabbitMQ 非常的简单,我们只需要定义队列发送者(通过 AmqpTemplate 发送 api )、接受者 (在方法上 @RabbitListener)即可完成简单的操作。需要注意的是:发送者和接收者的队列名称 必须一样,否则消息会接受不到。

代码示例

具体代码示例请查看 :
博客的读者可以通过查看下面仓库的中的模块工程名: spring-boot-2.x-rabbit-mq

Github:https://github.com/zhuoqianmingyue/springbootexamples/tree/master/spring-boot-2.x-rabbit-mq
如果您对这些感兴趣,欢迎 star、或转发给予支持!转发请标明出处!

SpringBoot 2 快速整合 RabbitMQ相关推荐

  1. 玩转 SpringBoot 2 快速整合 | RESTful Api 篇

    概述 RESTful 是一种架构风格,任何符合 RESTful 风格的架构,我们都可以称之为 RESTful 架构.我们常说的 RESTful Api 是符合 RESTful 原则和约束的 HTTP ...

  2. 玩转 SpringBoot 2 快速整合 | JSP 篇

    前言 JavaServer Pages(JSP)技术使Web开发人员和设计人员能够快速开发和轻松维护利用现有业务系统的信息丰富的动态Web页面.作为Java技术系列的一部分,JSP技术可以快速开发独立 ...

  3. 玩转 SpringBoot 2 快速整合 Filter 注解版

    前言 本文主要介绍如何在SpringBoot 2 中使用 Filter 的快速搭建教程,阅读前需要你必须了解 Filter 的基础使用以及如何搭建 SpringBoot 项目. 快速演示操作 第一步: ...

  4. 玩转 SpringBoot 2 快速整合 Listener

    前言 本文主要介绍如何在SpringBoot 2 中使用 Listener 的快速搭建教程,阅读前需要你必须了解 Listener 的基础使用以及如何搭建 SpringBoot 项目. 快速演示操作 ...

  5. 玩转 SpringBoot 2 快速整合 Servlet

    前言 本文主要介绍如何在SpringBoot 2 中使用 Servlet 的快速搭建教程,阅读前需要你必须了解 Servlet 的基础使用以及如何搭建 SpringBoot 项目. 快速演示操作 第一 ...

  6. springboot实现快速整合mybatis+mysql

    springboot如今火爆的程度大有将传统的ssm比下去的势头,究其原因,还是springboot被越来越多的公司使用,其简洁的配置,优秀的封装性,便捷的全注解开发,同时由于和越来越多的其他框架进行 ...

  7. 玩转 SpringBoot 2 快速整合拦截器

    概述 首先声明一下,这里所说的拦截器是 SpringMVC 的拦截器(HandlerInterceptor).使用SpringMVC 拦截器需要做如下操作: 创建拦截器类需要实现 HandlerInt ...

  8. 玩转 SpringBoot 2 快速整合 | 丝袜哥(Swagger)

    概述 首先让我引用 Swagger 官方的介绍: Design is the foundation of your API development. Swagger makes API design ...

  9. springboot 2.1 整合 rabbitmq 踩坑 砰砰砰

    rabbitmq安装 rabbitmq安装 centos 7 简单参数说明 使用rabbitmq 需要新增交换机Exchange,队列Queue(队列中还要设置绑定路由关键字RoutingKey) B ...

最新文章

  1. 外贸网络推广浅析新建网站该如何更快速进入搜索结果首页?
  2. python turtle画彩虹-Python turtle 绘制彩色螺旋线
  3. pom.xml报错:Failure to find org.apache.maven.doxia:doxia-logging-api:jar:1.1 in http://repo.
  4. 绘制基础知识-canvas paint
  5. Redis学习总结(18)——Redis 常见面试题复习
  6. mysql int 判断_PHP通过PDO查MySQL查询int字段返回string类型,解决方案
  7. 如何避免gradle插件下载:Gradle、Android Plugin、Build Tools
  8. 史上最简单的土地利用转移矩阵分析(附练习数据下载)
  9. C语言各个符号优先级(全)
  10. Android笔记:多开/分身检测
  11. 学那么多东西有屁用,不如先建立自己的知识体系
  12. 百度搜索框的测试点:
  13. Android事件分发之ViewGroup篇 -- ViewGroup的dispatchTouchEvent、onTouchEvent、onInterceptTouchEvent之间关系
  14. Alcatel-Lucent 命令记录
  15. win10 ESP盘符问题(隐藏系统分区)
  16. 用计算机弹奏若当来世,若当来世简谱(歌词)-马里奥、冥月演唱-动画片《狐妖小红娘 第三季》片头曲...
  17. Windows文件共享服务
  18. 如何卸载计算机强行安装游戏,如何卸载和重新安装《炉石传说》
  19. 苹果x电池多少毫安_苹果x换原装电池体验
  20. Java资料总结(全)

热门文章

  1. Php二叉树对称,PHP如何实现判断二叉树是否对称
  2. python对比不同大小的图片_使用Python 制作对比图片相似度的程序怎么比较?
  3. 笨办法学python3_软件测试需要学什么(个人软件测试学习路线)
  4. c语言学习进阶-C语言程序性能优化
  5. RedHat官方OpenShift Hands-on实验环境脚本
  6. 网络机房利用()将多台计算机,2020现代教育技术章测试答案.doc
  7. python如何进行web开发_如何用Python做Web开发
  8. influxdb 插入数据_Influx Sql系列教程五:insert 添加数据
  9. 基础的c语言题目,几个c语言的基础题目
  10. python 声音合成_使用python进行声音生成/合成?