rabbitmq学习(五):springboot整合rabbitmq
一、Springboot对rabbitmq的支持
springboot提供了对rabbitmq的支持,并且大大简化了rabbitmq的相关配置。在springboot中,框架帮我们将不同的交换机划分出来,这样使我们的编程变得更加清晰易于理解。
所需要的依赖为:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
二、代码实现
1.创建springboot项目
我的项目目录如下:

2.代码实现
1.在springboot中,rabbitmq的连接信息配置在application.properties中
spring.rabbitmq.host=localhost
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.port=5672
//直连交换机的确认机制
spring.rabbitmq.listener.direct.acknowledge-mode=auto
2.先在配置类中声明队列、交换机以及交换机和队列的绑定关系。下面配置为直连交换机的配置
/**
* 基础配置类
*/
@Configuration("directRabbitConfig")
public class RabbitConfig {
/**
* 定义队列
* @return
*/
@Bean
public Queue queue(){
return new Queue("directQueue",false,false,false);
} /**
* 定义直连交换机
* @return
*/
@Bean
public DirectExchange directExchange(){
return new DirectExchange("directExchange",false,false);
} /**
* 定义交换机和队列之间的绑定关系
* @return
*/
@Bean
public Binding binding(){
return BindingBuilder.bind(queue()).to(directExchange()).with("directRoutingKey");
}
}
3.消费者代码
/**
* 消费者
*/
@Component
public class DirectConsumer {
/**
* 监听directQueue中的消息
* @param message
*/
@RabbitListener(queues = "directQueue")
public void receive(String message){
System.out.println("DirectConsumer receive message " + message);
}
}
我们可以看到在spring boot中是通过监听器注解并指明获取消息的队列的名称来接收消息的。
4.生产者代码
/**
* 生产者
*/
@Component
public class DirectProducer {
/**
* 注入amqpTempalte发送消息
*/
@Autowired
public AmqpTemplate template; public void send(String message){
template.convertAndSend("directExchange","directRoutingKey", message);
System.out.println("Producer send message " + message);
}
}
发布消息通过注入AmqpTmeplate来实现。
5.测试:编写测试类,发送消息
@RunWith(SpringRunner.class)
@SpringBootTest
public class DirectExchangeTest { @Autowired
private DirectProducer producer; @Test
public void contextLoads() {
producer.send("directExchange message test");
} }
查看日志可以看到我们的消息被路由到了队列,并成功的被接收到了

剩下的扇形交换机和主题交换机的实现方式和直连交换机的非常相似,这里就不把代码详细列出了。代码的github地址为:https://github.com/wutianqi/springboot-rabbitmq.git
参考资料:https://www.cnblogs.com/hlhdidi/p/6535677.html
rabbitmq学习(五):springboot整合rabbitmq的更多相关文章
- 一篇学习完rabbitmq基础知识,springboot整合rabbitmq
一 rabbitmq 介绍 MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced MessageQueue 高级消息队列协议 ...
- springboot学习笔记-6 springboot整合RabbitMQ
一 RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿 ...
- RabbitMQ入门到进阶(Spring整合RabbitMQ&SpringBoot整合RabbitMQ)
1.MQ简介 MQ 全称为 Message Queue,是在消息的传输过程中保存消息的容器.多用于分布式系统 之间进行通信. 2.为什么要用 MQ 1.流量消峰 没使用MQ 使用了MQ 2.应用解耦 ...
- 功能:SpringBoot整合rabbitmq,长篇幅超详细
SpringBoot整合rabbitMq 一.介绍 消息队列(Message Queue)简称mq,本文将介绍SpringBoot整合rabbitmq的功能使用 队列是一种数据结构,就像排队一样,遵循 ...
- Rabbitmq基本使用 SpringBoot整合Rabbit SpringCloud Stream+Rabbit
https://blog.csdn.net/m0_37867405/article/details/80793601 四.docker中使用rabbitmq 1. 搭建和启动 使用地址:rabbitm ...
- 【SpringBoot系列5】SpringBoot整合RabbitMQ
前言: 因为项目需要用到RabbitMQ,前几天就看了看RabbitMQ的知识,记录下SpringBoot整合RabbitMQ的过程. 给出两个网址: RabbitMQ官方教程:http://www. ...
- SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合消息服务 2.具体内容 对于异步消息组件在实际的应用之中会有两类: · JMS:代表作就是 ...
- 【MQ中间件】RabbitMQ -- SpringBoot整合RabbitMQ(3)
1.前言说明 前面一篇博客中提到了使用原生java代码进行测试RabbitMQ实现多种交换机类型的队列场景.但是在项目中我们一般使用SpringBoot项目,而且RabbitMQ天生对于Spring的 ...
- springboot整合rabbitmq实现生产者消息确认、死信交换器、未路由到队列的消息
在上篇文章 springboot 整合 rabbitmq 中,我们实现了springboot 和rabbitmq的简单整合,这篇文章主要是对上篇文章功能的增强,主要完成如下功能. 需求: 生产者在启 ...
- Springboot 整合RabbitMq ,用心看完这一篇就够了
该篇文章内容较多,包括有rabbitMq相关的一些简单理论介绍,provider消息推送实例,consumer消息消费实例,Direct.Topic.Fanout的使用,消息回调.手动确认等. (但是 ...
随机推荐
- Eclipse 打包jar
1.将项目打成jar: 1.1 要将项目打包成jar文件,方法很多,可以用Eclipse自带的打包工具Ant打包,也可以用Eclipse的Export生成jar.经过尝试后,我不推荐用Ant打包,因为 ...
- PHP消息队列之Beanstalk
Beanstalk,一个高性能.轻量级的分布式内存队列
- Selenium之Action Chains类
Action Chains类常用于模拟鼠标的行为,比如单击,双击,拖拽等行为,使用下面的方法导入Action Chains类 from selenium.webdriver.common.action ...
- OTU rank curve(Rank Abundance 曲线)【基本概念】
16S结题报告中都会有这么一张图: 这张图是OTU Rank曲线,该曲线可以展示样品的多样性.而样品的多样性常通过以下两个方面进行解释:物种的丰富程度和均匀程度.Rank曲线中,曲线在横轴上的跨度越长 ...
- 秒杀多线程第七篇 经典线程同步 互斥量Mutex
本文转载于:http://blog.csdn.net/morewindows/article/details/7470936 前面介绍了关键段CS.事件Event在经典线程同步问题中的使用.本篇介绍用 ...
- axis2的WebService无法注入Service层类
package com.vrv.paw.axiswebservices; import org.springframework.web.context.ContextLoader; import or ...
- spring--mvc添加用户及用户头像上传
spring--mvc添加用户及用户头像上传 添加用户步骤: 1.用ajax获取省份信息 2.添加用户 代码:register.jsp <meta http-equiv="Conten ...
- C++实现String容器的基本功能
本文只实现String类的构造函数.析构函数.赋值构造函数和赋值函数,其他操作不再详述,一般的笔试面试基本上也只会要求实现这四个函数的功能. #include <iostream> usi ...
- Openwrt Udev Configure(3)
1 Scope of Document This document describes how to write udev script, when enum usb device mayb ...
- 数据集永久字段的Visble 属性为何不起作用
ADOTable,永久字段,已经将visible属性设置为false,设计期,打开数据集,该字段是隐藏了,但是运行时还是显示的!! 原因是,之前持久化了 DBGRID的Coumns,FORM创建又读取 ...