一、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的更多相关文章

  1. 一篇学习完rabbitmq基础知识,springboot整合rabbitmq

    一   rabbitmq 介绍 MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced MessageQueue 高级消息队列协议 ...

  2. springboot学习笔记-6 springboot整合RabbitMQ

    一 RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿 ...

  3. RabbitMQ入门到进阶(Spring整合RabbitMQ&SpringBoot整合RabbitMQ)

    1.MQ简介 MQ 全称为 Message Queue,是在消息的传输过程中保存消息的容器.多用于分布式系统 之间进行通信. 2.为什么要用 MQ 1.流量消峰 没使用MQ 使用了MQ 2.应用解耦 ...

  4. 功能:SpringBoot整合rabbitmq,长篇幅超详细

    SpringBoot整合rabbitMq 一.介绍 消息队列(Message Queue)简称mq,本文将介绍SpringBoot整合rabbitmq的功能使用 队列是一种数据结构,就像排队一样,遵循 ...

  5. Rabbitmq基本使用 SpringBoot整合Rabbit SpringCloud Stream+Rabbit

    https://blog.csdn.net/m0_37867405/article/details/80793601 四.docker中使用rabbitmq 1. 搭建和启动 使用地址:rabbitm ...

  6. 【SpringBoot系列5】SpringBoot整合RabbitMQ

    前言: 因为项目需要用到RabbitMQ,前几天就看了看RabbitMQ的知识,记录下SpringBoot整合RabbitMQ的过程. 给出两个网址: RabbitMQ官方教程:http://www. ...

  7. SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合消息服务 2.具体内容 对于异步消息组件在实际的应用之中会有两类: · JMS:代表作就是 ...

  8. 【MQ中间件】RabbitMQ -- SpringBoot整合RabbitMQ(3)

    1.前言说明 前面一篇博客中提到了使用原生java代码进行测试RabbitMQ实现多种交换机类型的队列场景.但是在项目中我们一般使用SpringBoot项目,而且RabbitMQ天生对于Spring的 ...

  9. springboot整合rabbitmq实现生产者消息确认、死信交换器、未路由到队列的消息

    在上篇文章  springboot 整合 rabbitmq 中,我们实现了springboot 和rabbitmq的简单整合,这篇文章主要是对上篇文章功能的增强,主要完成如下功能. 需求: 生产者在启 ...

  10. Springboot 整合RabbitMq ,用心看完这一篇就够了

    该篇文章内容较多,包括有rabbitMq相关的一些简单理论介绍,provider消息推送实例,consumer消息消费实例,Direct.Topic.Fanout的使用,消息回调.手动确认等. (但是 ...

随机推荐

  1. 算法笔记--字符串hash

    概述: 主要用于字符串的匹配. 定义hash函数: H(c)=(c1bm-1 +c2bm-2 +...+cmb0)mod h 对于字符串c中l-r区间的hash值: H(l,r)=H(1,r)-H(1 ...

  2. 理解Spring4.0新特性@RestController注解

    参考原文 @RestController注解是它继承自@Controller注解.4.0之前的版本,spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet. 使用 ...

  3. YII之yiic创建YII应用

    yii提供了强大的命令行工具来快速的创建相关组件和应用.下面就来讲解用yiic工具快速创建yii应用我的web目录在 d:\www下 yiiframework在 D:\www\yii\framewor ...

  4. ArcGIS API for Silverlight——小滑块

    Widgets翻译过来是小玩具.如果使用过Dojo或者ExtJS等js框架肯定会了解到这个“小玩具”也有大用处,能够在很大程度上减少我们的工作量,快速完成功能需求.能减少多大工作量呢?让我们先来,点击 ...

  5. 12月3日周日,关联:has_many(dependent::delete_all和destroy的区别) 注意看log; where等查询语句的用法。 layout传递参数❌

    错误❌: 1.belongs_to :job, dependent: :destroy //尝试删除一条resumen后,job没有同步删除?? 答:建立一对多的关系,如job和resume.应该在j ...

  6. 『Collections』Counter计数

    Counter()方法 计数器,返回字典,会同时去重,文本处理常用 from collections import Counter co = Counter(list('abcdefgad')) co ...

  7. Docker+Hadoop+Hive+Presto 使用Docker部署Hadoop环境和Presto

    Background 一. 什么是Presto Presto通过使用分布式查询,可以快速高效的完成海量数据的查询.如果你需要处理TB或者PB级别的数据,那么你可能更希望借助于Hadoop和HDFS来完 ...

  8. 一篇文章,读懂Netty的高性能架构之道

    一篇文章,读懂Netty的高性能架构之道 Netty是由JBOSS提供的一个java开源框架,是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架, ...

  9. 多态性&& 虚函数 && 抽象类

    http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/11/2134673.html 多态性 指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动 ...

  10. 桥接、nat、host-only