在上一篇随笔中我们认识并安装了RabbitMQ,接下来我们来看下怎么在Spring Boot 应用中整合RabbitMQ。

先给出最终目录结构:

搭建步骤如下:

  1. 新建maven工程amqp
  2. 修改pom文件,引入spring-boot-starter-amqp和spring-boot-starter-test
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.sam</groupId>
    <artifactId>amqp</artifactId>
    <version>0.0.1-SNAPSHOT</version> <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.1.RELEASE</version>
    </parent> <properties>
    <javaVersion>1.8</javaVersion>
    </properties>
    <dependencies>
    <!-- 引入amqp依赖,它能很好的支持RabbitMQ -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <!-- 引入test依赖,这次需要用到JUnit -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    </dependencies>
    </project>
  3. 新建application.properties配置文件,主要就是配置下连接RabbitMQ的信息:
    spring.application.name=rabbitmq-hello
    #config rabbitmq info
    spring.rabbitmq.host=localhost
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=guest
    spring.rabbitmq.password=guest
  4. 新建启动类,这里没什么特殊的,就是普通的spring boot启动类
    /**
    * 这里没什么特殊的地方,就是普通的spring boot 配置
    *
    */
    @SpringBootApplication
    public class RabbitMQApp { public static void main(String[] args) {
    SpringApplication.run(RabbitMQApp.class, args);
    }
    }
  5. 创建生产者类,通过AmqpTemplate实现消息的发送,AmqpTemplate接口定义了一套针对AMQP协议的基础操作。在Spring Boot中会根据配置来注入具体的实现。这里我们会产生一个字符串,并发送到名为hello的队列中。
    @Component
    public class Sender { @Autowired
    AmqpTemplate rabbitmqTemplate; /**
    * 发送消息
    */
    public void send() {
    String content = "Sender says:" + "'hello, I'm sender'";
    System.out.println(content);
    rabbitmqTemplate.convertAndSend("hello", content);
    }
    }
  6. 创建消费者类,需要用到@RabbitListener来定义对hello队列的监听,并用@RabbitHandler注解来指定对消息处理的方法。我们这里实现了对hello队列的消费。
    /**
    * 通过@RabbitListener对hello队列进行监听
    *
    */
    @Component
    @RabbitListener(queues="hello")
    public class Receiver { /**
    * 通过@RabbitHandler声明的方法,对hello队列中的消息进行处理
    */
    @RabbitHandler
    public void receiver(String str) {
    System.out.println("Receiver says:[" + str + "]");
    }
    }
  7. 编写RabbitMQ的配置类,配置类可以配置队列、交换器、路由等高级信息。我们这里为了简单,只配置队列,其他的采用默认配置。
    /**
    * rabbitmq配置类,
    * 为了简单,我们这里只配置了Queue
    * 至于exchanges、brokers等用的默认配置
    *
    */
    @Configuration
    public class RabbitConfig { @Bean
    public Queue helloQueue() {
    return new Queue("hello");
    } }
  8. 编写测试类,用来调用消息生产者
    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest(classes=RabbitMQApp.class)
    public class HelloTest { @Autowired
    private Sender sender; /**
    * 调用生产者进行消息发送
    */
    @Test
    public void hello() throws Exception{
    sender.send();
    }
    }
  9. 运行启动类,启动后控制台会有下面的提示内容:
  10. 执行测试类,在测试类的控制台会打印我们打的log内容

  

  

  切换到amqp应用的控制台,能看到打印:

  

  

  在管理页面中我们能看到Connections和Channels中包含了当前连接的条目:

在整个生产和消费的过程中,生产和消费是一个异步操作,这是分布式系统中要使用消息代理的重要原因。

RabbitMQ入门:在Spring Boot 应用中整合RabbitMQ的更多相关文章

  1. Spring Boot入门 and Spring Boot与ActiveMQ整合

    1.Spring Boot入门 1.1什么是Spring Boot Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的轻量级代替品.无 ...

  2. Kafka 入门和 Spring Boot 集成

    目录 Kafka 入门和 Spring Boot 集成 标签:博客 概述 应用场景 基本概念 基本结构 和Spring Boot 集成 集成概述 集成环境 kafka 环境搭建 Spring Boot ...

  3. spring boot / cloud (九) 使用rabbitmq消息中间件

    spring boot / cloud (九) 使用rabbitmq消息中间件 前言 rabbitmq介绍: RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.它可以用于大型软件系统 ...

  4. Spring Boot 2.x整合Redis

    最近在学习Spring Boot 2.x整合Redis,在这里和大家分享一下,希望对大家有帮助. Redis是什么 Redis 是开源免费高性能的key-value数据库.有以下的优势(源于Redis ...

  5. spring boot 2.0 整合 elasticsearch6.5.3,spring boot 2.0 整合 elasticsearch NoNodeAvailableException

    原文地址:spring boot 2.0 整合 elasticsearch NoNodeAvailableException 原文说的有点问题,下面贴出我的配置: 原码云项目地址:https://gi ...

  6. Spring Boot和Dubbo整合

    provider端 POM依赖 <dependencies> <dependency> <groupId>org.springframework.boot</ ...

  7. 转-Hive/Phoenix + Druid + JdbcTemplate 在 Spring Boot 下的整合

    Hive/Phoenix + Druid + JdbcTemplate 在 Spring Boot 下的整合 http://blog.csdn.net/balabalayi/article/detai ...

  8. spring boot入门教程——Spring Boot快速入门指南

    Spring Boot已成为当今最流行的微服务开发框架,本文是如何使用Spring Boot快速开始Web微服务开发的指南,我们将使创建一个可运行的包含内嵌Web容器(默认使用的是Tomcat)的可运 ...

  9. Spring Boot项目中使用Mockito

    本文首发于个人网站:Spring Boot项目中使用Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试 ...

随机推荐

  1. Linux 内核版本号查看

    简要:1,lsb_release -a 查看linux系统版本 2,uname -a 查看内核版本

  2. first-child伪类选择器

    原文链接地址:https://www.cnblogs.com/wangmeijian/p/4562304.html :first-child 选择器用于选取属于其父元素的首个子元素的指定选择器.——w ...

  3. [iOS]CIFilter滤镜

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  4. git 设置只输入一次用户名和密码

    https方式每次都要输入密码,非常不爽 按照如下设置可只输入一次 记住密码(默认15分钟): git config --global credential.helper cache 自己定义时间(一 ...

  5. vue组件中,iview的modal组件爬坑--modal的显示与否应该是使用v-show

    这是我第一次写博客,主要是记录下自己解决问题的过程和知识的总结,如有不对的地方欢迎指出来! 需求:点击btn,弹出modal显示图表(以折现图为例) 这应该是很基本的需求也是很容易实现的,代码和效果如 ...

  6. docker之MySQL主从复制

    MySQL主从复制 主服务器 配置文件目录 mkdir /var/lib/mysql/master/conf.d 数据存储目录 mkdir var/lib/mysql/master/data 配置my ...

  7. [笔记][SQL] 连接join

    在学习菜鸟教程里的MySQL教程时,对左右连接的结果有点不解. 其中有如下两个表: runoob_tbl: +-----------+--------------+---------------+-- ...

  8. MySQL 日常运维业务账号权限的控制

    在MySQL数据库日常运维中,对业务子账号的权限的统一控制十分必要. 业务上基本分为读账号和写账号两种账号,所以可以整理为固定的存储过程,让数据库自动生成对应的库的账号,随机密码.以及统一的读权限,写 ...

  9. react中如何获取onclick事件调用元素的dom对象

    今天终于有时间写博客了, 前几天项目有个需求,我感觉用dom操作兄弟元素实现比较方便,但是前端用的react框架不能用jquery的$(this)获取当前元素,查了好多资料和尝试后写下总结: 在HTM ...

  10. vim插件管理 - vim-plug

    vim-plug是一款轻量的vim插件管理工具. GitHub:https://github.com/junegunn/vim-plug 插件的安装 unix curl -fLo ~/.vim/aut ...