RabbitMq消息队列
在消息的传输过程中保存消息的容器,多用于系统之间的异步通信
RabbitMq的优势
1、应用解耦
在电商平台中,用户下订单调用订单系统,此项订单系统还需调用库存系统,支付系统,物流系统。此时会产生两个问题:
1、如果库存系统出现了故障,会造成整个订单系统崩溃
2、如果需求修改,新增一个新的系统,此时必须修改订单系统的代码
如果在系统中引入MQ,即订单系统将消息先发送到MQ,MQ再转发到其他系统,则会解决以下问题:
1、由于订单系统只发消息给MQ,不直接对接其他系统,如果库存系统出现故障,不影响整个订单。
2、如果需求修改,新增了一个x系统,此时无需修改订单系统的代码,只需要修改MQ将消息发送给x系统即可
RabbitMq模式
RabbiMQ共有六种工作模式:简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式、远程调用模式。
1.创建普通maven项目,添加RabbitMQ依赖:
1.简单模式的特点:
1、一个生产者对应一个消费者,通过队列进行消息传递
2、该模式使用direct交换机,direct交换机是Rabbitmq默认交换机
2、工作队列模式_概念
与简单模式相比,工作队列模式多了一些消费者,该模式也使用direct交换机,应用于处理消息较多的情况。特点如下:
1.一个队列对应多个消费者
2.一条消息只会被一个消费者消费
3.消息队列默认采用轮训的方式将平均发送给消费者
3.发布订阅模式
在开发过程中,有一些消息需要不同消费者进行不同的处理,如电脑网站的同一条促销信息需要短信发送、邮件发送、站内信发送等。此时可以使用发布订阅模式
特点:
1.生产者将消息发送给交换机,交换机将消息转发到绑定此交换机的每个队列中。
2.工作队列模式的交换机只能发送给一个队列,发布订阅模式的交换机能将消息发送给多个队列。发布订阅模式使用fanout交换机。
4.路由模式
使用发布订阅模式时,所有消息都会发送到绑定的队列中,但很多时候,不是所有消息都无差别的发布到所有队列中。比如电商网站的促销活动,双十一大促可能发布到所有队列;而一些小的促销活动为了节约成本,只发布到站内信队列。此时需要使用路由模式完成这一需求。
特点:
1、每个队列绑定路由关键字RoutingKey
2、生成者将带有RountingKey的消息发送给交换机,交换机根据RountingKey转发到指定队列。路由模式使用direct交换机
5.RabbitMQ通配符模式
通配符模式是在路由模式的基础上,给队列绑定带通配符的路由关键字,只要消息的RoutingKey能实现通配符匹配,就会将消息转发到该队列。通配符模式比路由模式更灵活,使用topic交换机。
通配符规则:
1.消息设置RoutingKey时,RoutingKey由多个单词构成,中间以.分割。
2.队列设置RoutingKey时,#可以匹配任意多个单词,*可以匹配任意一个单词。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)