在上一篇随笔中我们认识并安装了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. 【luogu P1850 换教室】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1850 难的不在状态上,难在转移方程. (话说方程写错居然还有84分= =) #include <cst ...

  2. [LuoguP2158][SDOI2008]仪仗队

    [LuoguP2158][SDOI2008]仪仗队(Link) 现在你有一个\(N \times N\)的矩阵,求你站在\((1,1)\)点能看到的点的总数. 很简洁的题面. 这道题看起来很难,但是稍 ...

  3. Android攻城狮学习笔记—入门篇二

    第七章  跑马灯 activity_main.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/an ...

  4. Linux Shell常用技巧(八)

    十八.  和系统运行状况相关的Shell命令:    1.  Linux的实时监测命令(watch):    watch 是一个非常实用的命令,可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动 ...

  5. 通过代码退出IOS程序

    -(void) tapClick:(UITapGestureRecognizer *)tap{ [UIViewbeginAnimations:@"exitApplication"c ...

  6. CoreAnimation|动画

    IOS开发UI篇--IOS动画(Core Animation)总结 - CSDN博客 iOS动画,绝对够分量! - 简书 iOS动画篇:UIView动画 - 简书 iOS动画开发之五--炫酷的粒子效果 ...

  7. thinkphp5.1 学习笔记 【多态关联】

    $result = Draft::update($input, ['id' => $input['id']], true); if (!empty(array_get($input, 'hous ...

  8. laravel5.5源码笔记(六、中间件)

    laravel中的中间件作为一个请求与响应的过滤器,主要分为两个功能. 1.在请求到达控制器层之前进行拦截与过滤,只有通过验证的请求才能到达controller层 2.或者是在controller中运 ...

  9. 读书笔记《PHP高级程序设计、模式、框架与测试》

    序言 闲来无事,下载了一些电子书,然后看书名不错<PHP高级程序设计_模式.框架与测试>,翻了一下虽然书有点老了但是讲的内容经常会碰到!给大家推荐一下,然后这里放上我的读书笔记,每日更新. ...

  10. 【python3】——centos7下安装

    centos7下安装python3总步骤分三步: 一.依赖解决: 1.安装依赖包: yum install zlib-devel bzip2-devel openssl-devel ncurses-d ...