SpringBoot 整合 RabbitMQ demo

Rabbit Windows安装教程
本文只做Demo案例的分享,具体只是需自行百度

一、生产者

1.application.properties
配置Rabbit的基本信息

#rabbit 主机IP
spring.rabbitmq.host=127.0.0.1
#rabbit 端口
spring.rabbitmq.port=5672
#rabbit 账号 可自行创建 这里是默认的
spring.rabbitmq.username=guest
#rabbit 密码 可自行创建 这里是默认的
spring.rabbitmq.password=guest
#rabbit 虚拟机地址 可自行指定 这里是默认的
spring.rabbitmq.virtual-host=/
#主程序的端口 和 rabbit无关
server.port=8081

2.pom文件
导入两个maven依赖
第一个是SpringBoot集成的rabbit
第二个是web依赖,用来方便发消息

<!--RabbitMq-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!--Web 方便用来发消息-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

3.Rabbit配置类
这里用的是主题模式,也就是模糊匹配的模式
这里设置的是只要是rabbit.开头就会进入这个队列
更详细的方法意义 请自行百度

@Configuration
public class RabbitConfig {public static final String EXCHANGE_NAME = "rabbit_exchange";public static final String QUEUE_NAME = "rabbit_queue";/*** 创建交换机* ExchangeBuilder有四种交换机模式* Direct Exchange:直连交换机,根据Routing Key(路由键)进行投递到不同队列。* Fanout Exchange:扇形交换机,采用广播模式,根据绑定的交换机,路由到与之对应的所有队列。* Topic Exchange:主题交换机,对路由键进行模式匹配后进行投递,符号#表示一个或多个词,*表示一个词。* Header Exchange:头交换机,不处理路由键。而是根据发送的消息内容中的headers属性进行匹配。* durable 交换器是否持久化(false 不持久化,true 持久化)**/@Beanpublic Exchange rabbitExchange(){return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();}/*** 创建队列* durable 队列是否持久化 队列调用此方法就是持久化 可查看方法的源码* deliveryMode 消息是否持久化(1 不持久化,2 持久化)**/@Beanpublic Queue rabbitQueue(){return QueueBuilder.durable(QUEUE_NAME).build();}/*** 绑定交换机和队列* bing 方法参数可以是队列和交换机* to 方法参数必须是交换机* with 方法参数是路由Key 这里是以rabbit.开头* noargs 就是不要参数的意思* 这个方法的意思是把rabbit开头的消息 和 上面的队列 和 上面的交换机绑定**/@Beanpublic Binding rabbitBinding(@Qualifier("rabbitExchange") Exchange exchange, @Qualifier("rabbitQueue") Queue queue){return BindingBuilder.bind(queue).to(exchange).with("rabbit.#").noargs();}}

4.Controller
这里整一个网页调用的形式进行发送信息

@RestController
public class ProducerWebController {@AutowiredProducerService producerService;@RequestMapping("/sendMq")public String sendMq(@RequestParam("mq") String mq){return producerService.sendMq(mq);}}

5.Service
在service层注入RabbitTemplate
convertAndSend 即是消息发送的方法

public interface ProducerService {public String sendMq(String mq);
}
@Service
public class ProducerServiceImpl implements ProducerService {@AutowiredRabbitTemplate rabbitTemplate;/*** convertAndSend 参数* 第一个是交换机的名字* 第二个是队列的具体名字 因为是rabbit开头 因为RabbitConfig设置rabbit开头通配 所以会被监听到* 第三个是具体的消息**/@Overridepublic String sendMq(String mq) {rabbitTemplate.convertAndSend(RabbitConfig.EXCHANGE_NAME, "rabbit.demo", mq);return "发送成功,消息是:" + mq;}
}

6.发送消息
启动生产者程序
浏览器输入 127.0.0.1/sendMq?mq=测试
在这里插入图片描述
在这里插入图片描述

二、消费者

1.application.properties

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/
server.port=8082

2.Rabbit监听
只需要在消费者中创建一个监听即可监听到队列的消息
可以直接打印出Message消息

@Component
public class ConsumerListener {/*** 设置监听哪一个队列 这个队列是RabbitConfig里面设置好的队列名字**/@RabbitListener(queues = "rabbit_queue")public void listenQueue(Message message){System.out.println(new String(message.getBody()));}}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27440.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序算法的补充

建议先去看看我之前写的基础排序算法 补充一&#xff1a;快排中partition函数的三种实现形式 1.hoare法---与第2种方法类似 int Partition1(int*a,int left,int right) {int keyi left;while (left < right) {while (left < right && a[right] > a[keyi])…

Hadoop 之 HDFS 伪集群模式配置与使用(二)

HDFS 配置与使用 一.HDFS配置二.HDFS Shell1.默认配置说明2.shell 命令 三.Java 读写 HDFS1.Java 工程配置2.测试 一.HDFS配置 ## 基于上一篇文章进入 HADOOP_HOME 目录 cd $HADOOP_HOME/etc/hadoop ## 修改文件权限 chown -R root:root /usr/local/hadoop/hadoop-3.3.6/* ## …

C++-string类的模拟实现

本博客基于C官方文档当中给出的string类当中的主要功能实现&#xff0c;来作为参照&#xff0c;简单模拟实现 My-string 。 对于C当中的string类的介绍&#xff0c;在之前的几篇博客当中有说明&#xff0c;如有问题&#xff0c;请参照一下两个博客文章进行参考&#xff1a; (2…

ERROR: Invalid requirement: ‘==‘ 解决python报错

ERROR: Invalid requirement: 错误:无效的要求: 今天安装 selenium包时突然触发这个报错&#xff0c;这个错误通常出现在使用pip安装Python包时&#xff0c;报错的原因是需要注意的是前后没有空格&#xff0c;若是加空格就会出现上述报错。 例如&#xff1a; 安装指定版本的…

python与深度学习(一):ANN和手写数字识别

目录 1. 神经网络2. 线性回归3. 激活函数3.1 Sigmoid函数3.2 Relu函数3.3 Softmax函数 4. ANN(全连接网络)模型结构5. 误差函数5.1 均方差误差函数5.2 交叉熵误差函数 6. 手写数字识别实战6.1 工具说明6.2 导入相关库6.3 加载数据6.4 数据预处理6.5 数据处理6.6 构建网络模型6.…

nginx+lua+redis环境搭建(文末赋上脚本)

目录 需求背景 环境搭建后nginx和redis版本 系统环境 搭建步骤 配置服务器DNS 安装ntpdate同步一下系统时间 安装网络工具、编译工具及依赖库 创建软件包下载目录、nginx和redis安装目录 下载配置安装lua解释器LuaJIT 下载nginx NDK&#xff08;ngx_devel_kit&#xff09…

Vue3警告提示(Alert)

可自定义设置以下属性&#xff1a; 警告提示内容&#xff08;message&#xff09;&#xff0c;类型&#xff1a;string | slot&#xff0c;默认&#xff1a;‘’警告提示的辅助性文字介绍&#xff08;description&#xff09;&#xff0c;类型&#xff1a;string | slot&#…

libvirt 热迁移流程及参数介绍

01 热迁移基本原理 1.1 热迁移概念 热迁移也叫在线迁移&#xff0c;是指虚拟机在开机状态下&#xff0c;且不影响虚拟机内部业务正常运行的情况下&#xff0c;从一台宿主机迁移到另外一台宿主机上的过程。 1.2 虚拟机数据传输预拷贝和后拷贝 预拷贝(pre-copy)&#xff1a; …

Git及Tortoisegit使用教程,设置中文

一、到git官网下载GIT 官网 二、下载安装Tortoisegit及中文语言包,Tortoisegit及语言包 语言包下载地址 三、在电脑某个盘的文件里右键 提示未设置git.exe 路径不能继续, 于是去下载git GIT下载 安装Git时, 一直点击 Next > 不要停, 直到结束 此时再跳到TortoiseGit…

Versal ACAP在线升级之Boot Image格式

1、简介 Xilinx FPGA、SOC器件和自适应计算加速平台&#xff08;ACAPs&#xff09;通常由多个硬件和软件二进制文件组成&#xff0c;用于启动这些设备后按照预期设计进行工作。这些二进制文件可以包括FPGA比特流、固件镜像、bootloader引导程序、操作系统和用户选择的应…

KaiwuDB CTO 魏可伟:多模架构 —“化繁为简”加速器

以下为浪潮 KaiwuDB CTO 魏可伟受邀于7月4日在京举行的可信数据库发展大会发表演讲的实录&#xff0c;欢迎大家点赞、收藏、关注&#xff01; 打造多模引擎&#xff0c;AIoT数据库探索之路 01 何为“繁”&#xff1f; 工业 4.0 时代&#xff0c; 物联网产业驱动数据要素市场不…

蒙德里安的梦想

题目 求把 NM 的棋盘分割成若干个 12 的长方形&#xff0c;有多少种方案。 例如当 N2&#xff0c;M4 时&#xff0c;共有 5 种方案。当 N2&#xff0c;M3 时&#xff0c;共有 3 种方案。 如下图所示&#xff1a; 输入格式 输入包含多组测试用例。 每组测试用例占一行&…