RabbitMQ-基础

RabbitMQ

同步调用

双方交互都是实时的,可以立即返回结果

问题

  1. 拓展性差:每次有新的需求,代码经常变动,不符合开闭原则
  2. 性能下降:调用者需要等待服务提供者分别执行后才返回结果,服务提供者很多情况下会影响最终业务响应时间
  3. 级联失败:其中某一个服务提供者出现错误,回滚整个业务(用户已经扣完款之后因为短信发送失败,从而整体回滚。这样是不对的)

异步调用

双方交互不是实时的,可以同时执行多个操作

异步调用方式基于消息通知的方式,一般包含三个角色

  1. 消息发送者:投递消息的人,原调用方
  2. 消息Broker:管理,暂存,转发消息
  3. 消息接收者:接受和处理消息的人,原服务提供方

优势

  1. 耦合度高
  2. 性能更好
  3. 业务拓展性抢
  4. 故障隔离,避免级联失败

问题

  1. 完全依赖Broker的可靠性,安全性和性能
  2. 架构复杂,后期维护和调试麻烦

技术选型

安装部署

dockerfile 复制代码
docker run \
 -e RABBITMQ_DEFAULT_USER=root \
 -e RABBITMQ_DEFAULT_PASS=root \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 -d \
 rabbitmq:3.8-management

默认登录地址 https://ip:15672

基本概念

  • publisher :⽣产者,也就是发送消息的⼀⽅
  • consumer :消费者,也就是消费消息的⼀⽅
  • queue :队列,存储消息。⽣产者投递的消息会暂存在消息队列中,等待消费者处理
  • exchange :交换机,负责消息路由。⽣产者发送的消息由交换机决定投递到哪个队列。
  • virtual host :虚拟主机,起到数据隔离的作⽤。每个虚拟主机相互独⽴,有各⾃的exchange、queue
  • virtual host :虚拟主机,起到数据隔离的作⽤。每个虚拟主机相互独⽴,有各⾃的exchange、queue
相关推荐
汽车仪器仪表相关领域9 小时前
ZDT‑I伺服电机测试系统:四象限动态加载
大数据·数据库·分布式·功能测试·汽车·压力测试·可用性测试
骇客野人10 小时前
Java分布式任务调度方案(完整落地指南)
java·开发语言·分布式
每天一道题11 小时前
从 async/await 到幂等恢复:把 Python 并发和 Agent Runtime 一次讲清楚
分布式·python
Zach_菠萝侠13 小时前
【deepseek harness研究】进化方向7:分布式与远程执行 思考、设计与实现
分布式·深度学习·deepseek
Sayai14 小时前
Kafka 集群开启 SASL 认证实战(二):外置 ZooKeeper 之 kafka 与 zk 间认证
分布式·zookeeper·kafka
Sayai14 小时前
Kafka 集群开启 SASL 认证实战(一):内置 ZooKeeper 场景,JAAS 配置全流程
分布式·zookeeper·kafka
海兰15 小时前
【Kafka进阶6】顺序消费深度解析
分布式·kafka·linq
YH行业报告分析19 小时前
2026年直流配电网市场结构性增长解析:分布式能源并网与智能电网升级驱动下的技术路线博弈
分布式·能源
剑胆琴心静水深流1 天前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm
KAIWEILIUCC1 天前
Ray:高性能、易扩展的Python分布式计算框架
分布式·llm