在上一篇随笔中我们认识并安装了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. Java泛型 PECS(Producer Extends, Consumer Super)

    本文转载自ImportNew,原文链接 Java 泛型: 什么是PECS(Producer Extends, Consumer Super) PECS指“Producer Extends,Consum ...

  2. Swift 开发语法

    文/Tuberose(简书作者)原文链接:http://www.jianshu.com/p/5e2d4c34f18e著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 简介 Swift 语 ...

  3. Android的JNI调用(二)

    Android Studio 2.3在native下已经有了代码提示功能,按照提示下载相应组件就可以debug native代码. 一.Java调用JNI与JNI调用Java 1.1 C调用Java ...

  4. HTML5手机端拍照上传

    1.accept="image/*" capture="camera" 自动调用手机端拍照功能 accept="image/*" captu ...

  5. 客户端对象模型之Excel数据导入到列表

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...

  6. Android解析json数据

    Json数据 [{"code":"110000","sheng":"11","di":"0 ...

  7. webStorm安装以及集成git使用!

    一:安装webstorm 百度网盘地址:https://pan.baidu.com/s/1K96mg7WYHc6X3odtk7_f2g 密码:2cgd   二:破解webstorm 1:选择liste ...

  8. react-navigation的超级大坑

    本文针对react-navigation^3.0.0版本,版本不对的话,请不要看本文,直接看官方英文文档 ​ 最近一直在学习RN,没找到什么好的视频,所以一直看文档,一路上来虽然遇到一些乱七八糟的bu ...

  9. PHP目前比较常见的五大运行模式

    做 php 开发的应该都知道 php 运行模式概念吧,本文将要和大家分享的是关于php目前比较常见的五大运行模式:包括cgi .fast-cgi.cli.isapi.apache模块的DLL ,下面作 ...

  10. 用DBCC CHECK修复SQL2000的数据库一致性问题

    ) set @databasename='需要修复的数据库实体的名称' exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户 ...