RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitMQ进行简单整合,实现生产和消费消息。

配置

Spring Boot使用了这么久,套路差不多摸清楚了。Spring Boot与其他组件进行整合,无非就是加入pom依赖,接着配置一些基本信息,然后就可以使用相关注解进行开发了。

RabbitMQ也是相同的套路,第一步要引入依赖。要引入的依赖比较容易记,RabbitMQ实现了AMQP协议,引入依赖spring-boot-starter-amqp

           <!-- rabbitmq依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>

第二步要配置RabbitMQ连接信息,包括主机、端口号、用户名和密码。RabbitMQ配置信息:

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

如果没有安装RabbitMQ,我推荐使用Docker快速安装和启动,启动命令:

docker run -d --hostname my-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3.8.0-beta.4-management

实现生产者和消费者

第三步实现生产和消费者。

生产者

生产者用来生产消息并进行发送。需要用到RabbitTemplateRabbitTemplate是发送消息的关键类,convertAndSend方法可以指定消息发送的交换器、路由键、消息内容等。

@Component
public class Producer {@AutowiredRabbitTemplate rabbitTemplate;public void produce() {String message =  new Date() + "Beijing";System.out.println("生产者生产消息=====" + message);rabbitTemplate.convertAndSend("rabbitmq_queue",  message);}
}

消费者

消费者消费生产者发送的消息。实现消费者主要用到注解@RabbitListener@RabbitListener是一个功能强大的注解。这个注解里面可以注解配置@QueueBinding、@Queue、@Exchange直接通过这个组合注解一次性搞定多个交换机、绑定、路由、并且配置监听功能等。

  1. 在RabbitMQ控制面板创建好队列,使用@RabbitListener监听队列。
@RabbitListener(queues = "rabbitmq_queue")
  1. 使用@RabbitListener自动创建队列。
@RabbitListener(queuesToDeclare = @Queue("myQueue"))
  1. 使用@RabbitListener自动创建队列,并对Exchange和Queue进行绑定。
@RabbitListener(bindings = @QueueBinding(value =  @Queue("myQueue"), key = "mobi", exchange = @Exchange("myExchange")))

本文使用@RabbitListener自动创建一个队列。

@Component
public class Consumer {@RabbitHandler@RabbitListener(queuesToDeclare = @Queue("rabbitmq_queue"))public void process(String message) {System.out.println("消费者消费消息=====" + message);}
}

测试

第四步测试。为了方便,写一个测试类生产消息。然后启动工程,运行测试类,使生产者发送消息,不出意外消费者将会消费消息,在控制台输出信息。

@SpringBootTest(classes = RabbitMqApplication.class)
class ProducerTest {@Autowired Producer producer;@Testvoid contextLoads() throws InterruptedException {producer.produce();}
}

操作之后可以在测试控制台看到生产者消息发送成功,在该工程的控制台看到消息消费成功。

访问RabbitMQ控制面板也会看到有消息。

拥有一个连接(Connection)

两个Channel

自定创建一个 Quenues,绑定默认的(AMQP default) 主机


总结

Spring Boot极大的简化各种组件的使用,在实际应用中,当一个服务处理完成之后可以将消息放进RabbitMQ消息队列,另外一个服务从队列中取消息进行消费,这样可以降低服务之间的耦合,实现一些异步的操作。本文仅作为一个简单demo供参考。

RabbitMQ(四):RabbitMQ与Spring Boot简单整合 快速尝鲜版相关推荐

  1. RabbitMQ(六)——Spring boot中消费消息的两种方式

    前言 上一篇博客中,我们只是简单总结了Spring boot中整合RabbitMQ的操作,针对消息消费的两种方式只是简单给了一个实例,这篇博客,我们进一步总结关于Spring boot消息消费的相关功 ...

  2. Spring Boot 应用系列 5 -- Spring Boot 2 整合logback

    上一篇我们梳理了Spring Boot 2 整合log4j2的配置过程,其中讲到了Spring Boot 2原装适配logback,并且在非异步环境下logback和log4j2的性能差别不大,所以对 ...

  3. Spring boot Mybatis 整合(注解版)

    之前写过一篇关于springboot 与 mybatis整合的博文,使用了一段时间spring-data-jpa,发现那种方式真的是太爽了,mybatis的xml的映射配置总觉得有点麻烦.接口定义和映 ...

  4. Spring boot Mybatis 整合(完整版)

    Spring boot Mybatis 整合(完整版) 更多干货 SpringBoot系列目录 正题 本项目使用的环境: 开发工具:Intellij IDEA 2017.1.3 springboot: ...

  5. spring boot 学习(二)spring boot 框架整合 thymeleaf

    spring boot 框架整合 thymeleaf spring boot 的官方文档中建议开发者使用模板引擎,避免使用 JSP.因为若一定要使用 JSP 将无法使用. 注意:本文主要参考学习了大神 ...

  6. 关于Spring Boot WebSocket整合以及nginx配置详解

    这篇文章主要给大家介绍了关于Spring Boot WebSocket整合以及nginx配置的相关资料,文中通过示例代码给大家介绍的非常详细,相信对大家的学习或者工作具有一定的参考学习价值,需要的朋友 ...

  7. Spring boot Mybatis 整合

    PS: 参考博客 PS: spring boot配置mybatis和事务管理 PS: Spring boot Mybatis 整合(完整版)   这篇博客里用到了怎样 生成 mybatis 插件来写程 ...

  8. Spring Boot 2 整合Redis哨兵模式

    Spring Boot 2 整合Redis哨兵模式除了配置稍有差异,其它与整合单实例模式类似,配置示例为 1. pom  文件 <parent><groupId>org.spr ...

  9. spring boot / cloud (十七) 快速搭建注册中心和配置中心

    spring boot / cloud (十七) 快速搭建注册中心和配置中心 本文将使用spring cloud的eureka和config server来搭建. 然后搭建的模式,有很多种,本文主要聊 ...

最新文章

  1. 【JavaScript】比较 var 和 let 关键字的作用域
  2. mysql外连接插座_深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接...
  3. [SpringSecurity]web权限方案_用户认证_查询数据库完成认证
  4. java)_Java NIO系列教程(一) Java NIO 概述
  5. 云计算三大主流阵营的竞争与合作
  6. 反射--Class获得
  7. 如何使用Docker轻松设置Ruby on Rails开发环境
  8. 新修订未成年人保护法6月1日正式实施
  9. pythongui 三维_python图形GUI基本示例
  10. 内核中的Makefile和Kconfig
  11. 华为畅享max支持鸿蒙,华为手机怎么升级鸿蒙?华为鸿蒙系统支持手机型号大全...
  12. hg527-c CU.html,华为无线猫设置
  13. 【面试常问】BS 与 CS 的联系与区别
  14. Java UTC(GMT)时间和Date时间转换
  15. Duplicate showFileChooser result
  16. DIV网页排版入门指南
  17. 170402网摘题目
  18. 深度学习——李宏毅第一课2020
  19. 酒店管理系统(C#和serverSql代码开发)
  20. 2019 HZNU Winter Training Day 13 Comprehensive Training

热门文章

  1. R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵)、使用nfactors参数指定抽取的因子的个数、fa函数因子分析结果解读(Extracting common facto
  2. exit语句php,php or die() 语句,exit()
  3. 怎么点亮段码屏_手机被人偷了,支付宝里的钱被转走了,遇到这种情况该怎么办?...
  4. Linux下安装Oracle参数自动初始化脚本
  5. R语言 (温度 随时间变化)
  6. MySql修改 表名
  7. python平方和计算技巧_Python算法练习题:四平方和
  8. java ado_Java进击C#——语法之ADO.NET
  9. mysql集群session_集群/分布式环境下5种session处理策略
  10. signature=dff897e1da6b42a8e9483e18ff19fcde,Vídeo Institucional: Ingresse1