Springboot整合RabbitMQ
1、RabbitMQ概述RabbitMQ是使用ERLANG语言编写的实现了高级消息队列协议(AMQP)的开源消息代理软件亦称面向消息的中间件。常见的消息中间件KAFKA、RabbitMQ、ActiveMQ、RocketMQ(可以处理分布式事务)1.1、什么是RabbitMQ?【1、通过案例理解RabbitMQ】你想和远方的好友实现通信这个时候你给好友写封信我们将写好的信封装成一个信封将信放到邮箱中邮差就会在规定的时间将这封信送到远方好友的手中。寄件人是A系统远方好友是B系统RabbitMQ就是邮箱邮差就是信道。A系统和B系统可以通过RabbitMQ实现通信。【2、为什么要使用RabbitMQ? 】1、RabbitMQ实现了AMQP标准的消息服务器2、可靠性RabbitMQ的持久化支持保证了消息的稳定性3、RabbitMQ使用了Erlang开发语言高并发、高可用、集群部署简单等特性【3、RabbitMQ能做什么】1、业务解耦下订单、扣减库存、生成订单、发红包、发短信、异步操作、日志处理、跨平台通信等。2、流量消峰控制请求量。3、路由灵活RabbitMQ有丰富的Exchange(交换器)通过关键字Routingkey判断消息的具体队列(Queue)。1.2、RabbitMQ消息发送原理1、生产者生产消息发送给服务器端的Exchange交换器。2、Exchange收到消息根据用户发送的RoutingKey将消息转发给匹配的Queue1或Queue2。3、Queue1或Queue2收到消息后将消息发送给订阅者(消费者1或消费者2)。4、消费者收到消息发送ACK给队列确认收到消息。5、消费者收到ACK确认消息然后删除队列中缓存的对应消息。1.3、RabbitMQ在项目中的应用A系统和B系统之间如果不是使用同一架构或者语言编写的这个时候可以通过RabbitMQ进行通信。如A系统可以发送JSON类型的数据B系统获取数据的时候可以解析JSON,达到跨系统交互。2、Springboot整合RabbitMQ2.1、配置工程包信息核心包spring-cloud-starter-bus-amqp?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.7.17/version relativePath/ !-- lookup parent from repository -- /parent groupIdcom.txc/groupId artifactIdspringbootrabbitmqdemo/artifactId version0.0.1-SNAPSHOT/version namespringbootrabbitmqdemo/name descriptionspringbootrabbitmqdemo/description properties java.version1.8/java.version /properties dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-amqp/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency dependency groupIdorg.springframework.amqp/groupId artifactIdspring-rabbit-test/artifactId scopetest/scope /dependency /dependencies build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration excludes exclude groupIdorg.projectlombok/groupId artifactIdlombok/artifactId /exclude /excludes /configuration /plugin /plugins /build /project2.2、在application.yml文件中配置连接信息spring: rabbitmq: addresses: localhost #IP地址 username: guest #用户名 password: guest #密码 dynamic: true #默认创建一个AmqpAdmin的Bean 默认:true2.3、在工程中创建RabbitMQ消息接收程序RabbitListener(queuesToDeclare Queue(myQueue ))作用1、让监听关联到myQueue队列中2、queuesToDeclare能够实现当myQueue队列不存在的时候自动创建3、queuesToDeclare后面的参数需要的是数组类型使用Queue创建Configuration public class RabbitMQReceive { RabbitListener(queuesToDeclare Queue(myQueue)) public void process(String message){ System.out.println(消费消息message); } }2.4、在工程中创建RabbitMQ消息发送程序创建控制层模拟向RabbitMQ消息中间件发送消息。通过convertAndSend向RabbitMQ发送消息。Controller public class TestRabbitMQController { Resource private AmqpTemplate amqpTemplate; RequestMapping(/sendMessageToQueue) ResponseBody public void sendMessageToQueue(){ amqpTemplate.convertAndSend(myQueue,{code:200,msg:你想发的消息。}); } }2.5、测试结果访问地址http://localhost:8080/sendMessageToQueue3、创建Exchange(交换器)绑定Queue3.1、Exchange交换器的使用场景我们要实现如果是华为的订单就发送到huaweiQueue队列中如果是联想的订单就发送到lenovoQueue队列中。主要就是通过RoutingKey(huaweiKey、lenovoKey)来实现。3.2、在工程中创建RabbitMQ接收器通过RabbitListener实现创建huaweiQueue队列和computerExchange交换器并通过huaweiKey实现队列和交换器绑定。在不指定交换器类型的情况下默认的交换器类型是directRabbitListener(bindings QueueBinding( exchange Exchange(computerExchange), key huaweiKey, value Queue(huaweiQueue) )) public void process1(String message){ System.out.println(消费消息message); }3.3、在工程中创建RabbitmQ消息发送程序convertAndSend参数说明convertAndSend(“交换器名称”,”绑定key”,”需要发送的消息”);RequestMapping(/sendMessageToExchange) ResponseBody public void sendMessageToExchange(){ amqpTemplate.convertAndSend(computerExchange,huaweiKey,{code:200,msg:测试Exchange和Queue绑定}); }3.4、测试结果访问地址http://localhost:8080/sendMessageToExchange

相关新闻

Linux命令的使用

Linux命令的使用

写在前面的话在以后冲击offer时,作为后端程序员,掌握Linux常用的终端指令是必要的但是Linux发行版的命令有200多个学习小tips:1、常用命令其实只有十多个2、对于常用命令:多用多敲,自然而然记住,切忌死记硬…

2026/5/17 8:52:54 阅读更多 →
Mybatis的延迟加载

Mybatis的延迟加载

1.什么是延迟加载 当加载用户信息时,不一定就要马上加载他的订单信息或者所有的好友信息,聊天记录等等,这样就需要用到延迟加载。 当我们需要用到数据的时候才进行加载,不用数据的时候就不加载,也可以叫做懒加载。 优…

2026/7/4 19:08:49 阅读更多 →
Web前端之domToImage文档、html标签元素转成图片

Web前端之domToImage文档、html标签元素转成图片

MENUDOM to ImageWhat is itInstallationNPMBowerUsageRendering optionsfilterbgcolorheight, widthstylequalitycacheBustimagePlaceholderBrowsersDependenciesSourceTestsHow it worksThings to watch out forAuthorsLicenseDOM to Image [外链图片转存失败,源站可能有防盗…

2026/7/4 9:02:19 阅读更多 →

最新新闻

告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界

告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界

告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl 你是…

2026/7/5 14:58:26 阅读更多 →
4-20mA电流环检测与PIC单片机信号处理方案

4-20mA电流环检测与PIC单片机信号处理方案

1. 4-20mA电流环基础与行业应用工业现场最可靠的信号传输方式莫过于4-20mA电流环,这个看似简单的标准已经统治过程控制领域半个多世纪。电流信号相比电压信号具有显著优势:抗干扰能力强,可长距离传输(理论可达数公里)&…

2026/7/5 14:56:26 阅读更多 →
6. 【C语言】格式化输入输出:和程序说说话

6. 【C语言】格式化输入输出:和程序说说话

前面五篇文章,我们熟悉了变量、常量、数据类型,但程序还像个闷葫芦——要么沉默不语,要么只喊一句固定的“Hello, World”。要让程序真正和人互动,就得学会两样本事: 输出:把数据展示给用户看(…

2026/7/5 14:56:25 阅读更多 →
MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场

MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场

MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场 6 月 24 日,MWC26 上海世界移动通信大会开幕。今年最大的看点不是 5G,不是 6G,而是人工智能。 人形机器人点球大战 MWC26 上海首次举办了"人…

2026/7/5 14:52:25 阅读更多 →
2026 AI 开发者生存指南(10):AI 开发者职业发展与学习路线图——从入门到精通

2026 AI 开发者生存指南(10):AI 开发者职业发展与学习路线图——从入门到精通

AI 开发者职业发展与学习路线图 2026 版:从入门到精通怎么走? 2026 年的 AI 行业,招聘需求在变、技能要求在变、薪资结构在变。不管是刚入行还是想转型,都需要一张清晰的路线图。 这篇文章整理 AI 开发者的职业发展路径和学习方向…

2026/7/5 14:52:25 阅读更多 →
Unreal Engine 5体积渲染架构深度解析:OpenVDB与NanoVDB集成技术实现

Unreal Engine 5体积渲染架构深度解析:OpenVDB与NanoVDB集成技术实现

Unreal Engine 5体积渲染架构深度解析:OpenVDB与NanoVDB集成技术实现 【免费下载链接】unreal-vdb This repo is a non-official Unreal plugin that can read OpenVDB and NanoVDB files in Unreal. 项目地址: https://gitcode.com/gh_mirrors/un/unreal-vdb …

2026/7/5 14:52:25 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻