一、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. js 中的几个假值

    1. 使用场景 if分支语句   /  短路语句while循环语句for里的第二个语句 2. 6个假值 (都属于 原始类型数据的一部分内容,非原始类型即对象都是真值,如:对象.数组.正则.函数   . ...

  2. Html概述

    Html概述 主要思想,主要思想很重要 一.Html是什么 一种标记语言(用标签进行标记) 对要显示的文字进行标记 二.Html核心 标签(只认标签) 封装,所以必须有头尾,你才知道标签的范围,你才知 ...

  3. [.NET开发] C#使用doggleReport生成pdf报表的方法

    本文实例讲述了C#使用doggleReport生成pdf报表的方法.分享给大家供大家参考,具体如下: 1. 安装nuget -install package DoddleReport -install ...

  4. 库: rspec/rspec-expectations matcher匹配器常用

    https://github.com/rspec/rspec-expectations https://relishapp.com/rspec/rspec-expectations/v/3-7/doc ...

  5. 『TensotFlow』RNN/LSTM古诗生成

    往期RNN相关工程实践文章 『TensotFlow』基础RNN网络分类问题 『TensotFlow』RNN中文文本_上 『TensotFlow』基础RNN网络回归问题 『TensotFlow』RNN中 ...

  6. HDU-4856 Tunnels (BFS+状压DP)

    Problem Description Bob is travelling in Xi’an. He finds many secret tunnels beneath the city. In hi ...

  7. python 小练习 9

    还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 .............. 先 ...

  8. svn更新产生的异常

    同步svn时差生的错误如下:   同步 SVNStatusSubscriber 时报告了错误.1 中的 0 个资源已经同步. 同步 /tunnel14 时发生错误:Error getting stat ...

  9. IntelliJ IDEA 自动导入包 快捷方式 关闭重复代码提示

    idea可以自动优化导入包,但是有多个同名的类调用不同的包,必须自己手动Alt+Enter设置 设置idea导入包 勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化 ...

  10. h5请求跨域问题Access-Control-Allow-Origin解决跨域

    访问后端接口报错:No 'Access-Control-Allow-Origin' header is present on the requested resource 解决: Access-Con ...