SpringBoot结合RabbitMq

SpringBoot 框架部署

HelloWorld 简单模式

Topic 通配符模式

一、SpringBoot 框架部署

1.创建Maven工程(我用的IDEA)

File[文件] -> New[新建] -> Project[工程] -> Maven[选择Maven] -> Next[直接下一步] -> Name[输入项目名称] —> Finish[完成]

2.在项目里创建两个子工程

Producer 消息生产者

项目名称位置右键 -> New[新建] -> Module[组件] -> Maven[选择Maven] -> Next[下一步] -> Name[输入Producer] —> Finish[完成]

Consumer 消息消费者

项目名称位置右键 -> New[新建] -> Module[组件] -> Maven[选择Maven] -> Next[下一步] -> Name[输入Consumer] —> Finish[完成]

3.在主项目工程的pom文件里填写依赖(注意是主项目 两个子项目会继承父项目的依赖)

  1. <!--Spring Boot依赖-->
  2. <parent>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-parent</artifactId>
  5. <version>2.2.8.RELEASE</version>
  6. </parent>
  7. <dependencies>
  8. <!--spring-boot-starter-amqp依赖 [重要]-->
  9. <dependency>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-amqp</artifactId>
  12. <version>2.2.8.RELEASE</version>
  13. </dependency>
  14. <!--下面三个依赖是为了方便控制台输出Log [一般]-->
  15. <!--junit:junit 单元测试框架 用了都说好-->
  16. <dependency>
  17. <groupId>junit</groupId>
  18. <artifactId>junit</artifactId>
  19. <version>4.13</version>
  20. </dependency>
  21. <!--org.projectlombok:lombok 整合注解-->
  22. <dependency>
  23. <groupId>org.projectlombok</groupId>
  24. <artifactId>lombok</artifactId>
  25. <version>1.18.12</version>
  26. </dependency>
  27. <!--ch.qos.logback:logback-classic 日志框架-->
  28. <dependency>
  29. <groupId>ch.qos.logback</groupId>
  30. <artifactId>logback-classic</artifactId>
  31. <version>1.2.3</version>
  32. </dependency>
  33. <!--spring-boot-starter-test SpringBootTest-->
  34. <dependency>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-starter-test</artifactId>
  37. <version>2.2.8.RELEASE</version>
  38. </dependency>
  39. </dependencies>

4.分别在两个子项目中创建application.yml文件

注意.yml文件需下载 YAML 插件

resource文件夹右键 -> New[新建] -> File[文件] -> Name[输入application.yml] —> Finish[完成]

  1. spring:
  2. rabbitmq:
  3. host: localhost
  4. port: 5672
  5. virtual-host: /
  6. username: username 改成你自己的账号
  7. password: password 改成你自己的密码
  8. server:
  9. port: 服务器端口号 两个子工程不能一致

5.Producer生产者创建启动类

Java文件夹右键 -> New[新建] -> Java Class[类文件] -> Name[com.rabbit.producer.ProviderRabbitApplication.java] —> Finish[完成]

  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;
  3. /**
  4. * 生产者启动类
  5. */
  6. @SpringBootApplication
  7. public class ProviderRabbitApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(ProviderRabbitApplication.class,args);
  10. }
  11. }

6.Consumer生产者创建启动类

Java文件夹右键 -> New[新建] -> Java Class[类文件] -> Name[com.rabbit.consumer.ConsumerRabbitMqApplication.java] —> Finish[完成]

  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;
  3. /**
  4. * 消费者启动类
  5. */
  6. @SpringBootApplication
  7. public class ConsumerRabbitMqApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(ConsumerRabbitMqApplication.class,args);
  10. }
  11. }

二、HelloWorld 简单模式

1.创建RabbitMqConfig.java文件 绑定交换机和队列

Java文件夹右键 -> New[新建] -> Java Class[类文件] -> Name[com.rabbit.producer.config.RabbitMqConfig.java] —> Finish[完成]

  1. import org.springframework.amqp.core.*;
  2. import org.springframework.beans.factory.annotation.Qualifier;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. /**
  6. * RabbitMq 配置类
  7. */
  8. @Configuration
  9. public class RabbitMqConfig {
  10. public static final String SIMPLE_EXCHANGE_NAME = "simple_exchange";
  11. public static final String SIMPLE_QUEUE_NAME = "simple_queue";
  12. /**
  13. * 创建 交换机
  14. * @return
  15. */
  16. @Bean
  17. public Exchange simpleExchange(){
  18. return ExchangeBuilder.topicExchange(SIMPLE_EXCHANGE_NAME).build();
  19. }
  20. /**
  21. * 创建 队列
  22. * @return
  23. */
  24. @Bean
  25. public Queue simpleQueue(){
  26. return QueueBuilder.durable(SIMPLE_QUEUE_NAME).build();
  27. }
  28. /**
  29. * 绑定 交换机与队列
  30. * @param exchange
  31. * @param queue
  32. * @return
  33. */
  34. @Bean
  35. public Binding itemQueueExchange(@Qualifier("simpleExchange") Exchange exchange, @Qualifier("simplQueue") Queue queue){
  36. return BindingBuilder.bind(queue).to(exchange).with("").noargs();
  37. }
  38. }

2.创建ConsumerListener.java监听消息文件

Java文件夹右键 -> New[新建] -> Java Class[类文件] -> Name[com.rabbit.cosnumer.listener.ConsumerListener.java] —> Finish[完成]


  1. import org.springframework.amqp.rabbit.annotation.RabbitListener;
  2. import org.springframework.stereotype.Component;
  3. import lombok.extern.slf4j.Slf4j;
  4. @Component
  5. @Slf4j
  6. public class ConsumerListener {
  7. /**
  8. * 监听某个队列的消息
  9. * @param message 接收到的消息
  10. */
  11. @RabbitListener(queuesToDeclare = "simple_queue")
  12. public void myListener(String message){
  13. //不用在手动转UTF-8 Spring自动转好了
  14. log.debug("消费者接收到的消息为:{}", message);
  15. }
  16. }

3.创建ProducerTest.java测试文件

test->java文件夹右键 -> New[新建] -> Java Class[类文件] -> Name[com.rabbit.producer.test.ProducerTest.java] —> Finish[完成]

  1. import lombok.extern.slf4j.Slf4j;
  2. import com.itheima.rabbitmq.config.RabbitMQConfig;
  3. import org.junit.Test;
  4. import org.junit.runner.RunWith;
  5. import org.springframework.amqp.rabbit.core.RabbitTemplate;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. import org.springframework.test.context.junit4.SpringRunner;
  9. import javax.annotation.Resource;
  10. @RunWith(SpringRunner.class)
  11. @SpringBootTest
  12. @Slf4j
  13. public class RabbitMQTest {
  14. @Resource
  15. private RabbitTemplate rabbitTemplate;
  16. @Test
  17. public void sendTest(){
  18. rabbitTemplate.convertAndSend(RabbitMqConfig.TOPIC_EXCHANGE_NAME,"","测试 SpringBoot整合RabbitMq的普通模式");
  19. }
  20. }

4.测试

首先运行一次ProducerTest.java测试类 创建交换机和队列

然后在启动消费者监听器

三、Topic 通配符模式

1.创建RabbitMqConfig.java文件 绑定交换机和队列

Java文件夹右键 -> New[新建] -> Java Class[类文件] -> Name[com.rabbit.producer.config.RabbitMqConfig.java] —> Finish[完成]

  1. import org.springframework.amqp.core.*;
  2. import org.springframework.beans.factory.annotation.Qualifier;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. /**
  6. * RabbitMq 配置类
  7. */
  8. @Configuration
  9. public class RabbitMqConfig {
  10. private static final String TOPIC_EXCHANGE_NAME = "topic_exchange";
  11. private static final String TOPIC_QUEUE_NAME = "topic_queue";
  12. /**
  13. * 创建 交换机
  14. * @return
  15. */
  16. @Bean
  17. public Exchange itemTopicExchange(){
  18. return ExchangeBuilder.topicExchange(TOPIC_EXCHANGE_NAME).build();
  19. }
  20. /**
  21. * 创建 队列
  22. * @return
  23. */
  24. @Bean
  25. public Queue itemQueue(){
  26. return QueueBuilder.durable(TOPIC_QUEUE_NAME).build();
  27. }
  28. /**
  29. * 绑定 交换机与队列
  30. * @param exchange
  31. * @param queue
  32. * @return
  33. */
  34. @Bean
  35. public Binding itemQueueExchange(@Qualifier("itemTopicExchange") Exchange exchange, @Qualifier("itemQueue") Queue queue){
  36. return BindingBuilder.bind(queue).to(exchange).with("item.#").noargs();
  37. }
  38. }

2.创建ConsumerListener.java监听消息文件

Java文件夹右键 -> New[新建] -> Java Class[类文件] -> Name[com.rabbit.cosnumer.listener.ConsumerListener01.java] —> Finish[完成]


  1. import org.springframework.amqp.rabbit.annotation.RabbitListener;
  2. import org.springframework.stereotype.Component;
  3. import lombok.extern.slf4j.Slf4j;
  4. @Component
  5. @Slf4j
  6. public class ConsumerListener {
  7. /**
  8. * 监听某个队列的消息
  9. * @param message 接收到的消息
  10. */
  11. @RabbitListener(queuesToDeclare = "topic_queue")
  12. public void myListener(String message){
  13. //不用在手动转UTF-8 Spring自动转好了
  14. log.debug("消费者接收到的消息为:{}", message);
  15. }
  16. }

3.创建ProducerTest.java测试文件

test->java文件夹右键 -> New[新建] -> Java Class[类文件] -> Name[com.rabbit.producer.test.ProducerTest.java] —> Finish[完成]

  1. import lombok.extern.slf4j.Slf4j;
  2. import com.itheima.rabbitmq.config.RabbitMQConfig;
  3. import org.junit.Test;
  4. import org.junit.runner.RunWith;
  5. import org.springframework.amqp.rabbit.core.RabbitTemplate;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. import org.springframework.test.context.junit4.SpringRunner;
  9. import javax.annotation.Resource;
  10. @RunWith(SpringRunner.class)
  11. @SpringBootTest
  12. @Slf4j
  13. public class RabbitMQTest {
  14. @Resource
  15. private RabbitTemplate rabbitTemplate;
  16. @Test
  17. public void sendTest(){
  18. rabbitTemplate.convertAndSend(RabbitMqConfig.TOPIC_EXCHANGE_NAME,"item.insert","topic通配符模式,RoutingKey:item.insert");
  19. rabbitTemplate.convertAndSend(RabbitMqConfig.TOPIC_EXCHANGE_NAME,"item.delete.yes","topic通配符模式,RoutingKey:item.delete.yes");
  20. rabbitTemplate.convertAndSend(RabbitMqConfig.TOPIC_EXCHANGE_NAME,"null.null","topic通配符模式,RoutingKey:null.null");
  21. }
  22. }

4.测试

首先运行一次ProducerTest.java测试类 创建交换机和队列

然后在启动消费者监听器

SpringBoot整合RabbitMQ 通俗易懂 超详细 【内含案例】的更多相关文章

  1. 😊SpringBoot 整合 Elasticsearch (超详细).md

    SpringBoot 整合 Elasticsearch (超详细) 注意: 1.环境搭建 安装es Elasticsearch 6.4.3 下载链接 为了方便,环境使用Windows 配置 解压后配置 ...

  2. Springboot整合MybatisPlus(超详细)完整教程~

    新建springboot项目 开发工具:idea2019.2,maven3 pom.xml <dependency> <groupId>org.springframework. ...

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

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

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

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

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

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

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

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

  7. SpringBoot整合RabbitMQ实现六种工作模式

    RabbitMQ主要有六种种工作模式,本文整合SpringBoot分别介绍工作模式的实现. 前提概念 生产者 消息生产者或者发送者,使用P表示: 队列 消息从生产端发送到消费端,一定要通过队列转发,使 ...

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

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

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

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

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

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

随机推荐

  1. kafka事务流程

    流程 kafka事务使用的5个API // 1. 初始化事务 void initTransactions(); // 2. 开启事务 void beginTransaction() throws Pr ...

  2. python selenium使用无头模式执行用例

    什么是无头模式? Headless Browser模式是浏览器的无界面状态,即在不打开浏览器界面的情况下使用浏览器. 该模式的好处如下: 1)可以加快web自动化测试的执行时间,对于web自动化测试, ...

  3. Linux常用耗资源命令汇总

    在Linux中,以下命令可能在处理大量数据或复杂操作时比较消耗资源.一般来说,涉及大量数据处理.计算或者I/O操作的命令会比较耗费系统资源. ​ 注意:所有命令资源消耗都是相对的,基于文件的处理量来展 ...

  4. map(STL容器)

    map 一种基于红黑树(不需了解)的关联树容器,支持快速的插入,查找和删除操作,并保持了内部元素的有序性,其中每一个元素都有一个键和一个与之关联得值组成. 可以形象的理解为一个转换器,给它一个东西(变 ...

  5. 文件系统(八):Linux JFFS2文件系统工作原理、优势与局限

    liwen01 2024.06.23 前言 在嵌入式Linux设备中,经常使用jffs2文件系统来作为参数区的文件系统格式.至于为什么要使用jffs2来作为参数区的文件系统,我猜大部分人都没有做过多的 ...

  6. 读懂反向传播算法(bp算法)

    原文链接:这里 介绍 反向传播算法可以说是神经网络最基础也是最重要的知识点.基本上所以的优化算法都是在反向传播算出梯度之后进行改进的.同时,也因为反向传播算法是一个递归的形式,一层一层的向后传播误差即 ...

  7. Java中的栈、堆和常量池

    Java程序是运行在JVM(Java虚拟机)上的,因此Java的内存分配是在JVM中进行的,JVM是内存分配的基础和前提. Java程序的运行会涉及以下的内存区域: 寄存器:JVM内部虚拟寄存器,存取 ...

  8. mac 安装homebrew 报443

    描述 macOS安装Homebrew时总是报错(Failed to connect to raw.githubusercontent.com port 443: Connection refused) ...

  9. 开源免费的专注于建立大型个人知识库推荐-Trilium Notes

    Trilium Notes是一个分层的笔记应用程序,专注于建立大型个人知识库. 支持相当丰富的 markdown,包括 mermaid 和 latex,而且即时渲染,和 typora 一样.支持代码类 ...

  10. 在github开源市场如何高效寻找优秀开源项目

    作为程序员,不论是开发还是学习,肯定会用到开源项目,那么怎么快速在开源网站找到这些项目呢? 常用的开源网站有:github 和 gitee github是全球最大的开源社区,今天就以github为例, ...