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
相关推荐
kyle~2 小时前
DDS分布式实时系统---自省机制
开发语言·分布式·机器人·c#·接口·ros2
q21030633722 小时前
kafka启动几秒后挂了,重启多次无果
分布式·kafka
凯源智能3 小时前
工商业分布式光伏箱变智能监控落地实战
分布式·箱变测控·光伏箱变测控装置·箱变监控系统·箱式变测控装置
沂水弦音3 小时前
软控 EI 系列模块优势与竞品对比分析:面向 EtherCAT 分布式 I/O 的工程选型视角
分布式·制造·工业自动化·ethercat·io模块
木心术14 小时前
在NVIDIA DGX Spark上部署NemoClaw的实际操作方案以及实际应用便利性。
大数据·分布式·spark
kuokay4 小时前
MLOps 与 AIOps 的核心概
人工智能·分布式·大模型·agent·llama
cheems95275 小时前
[RabbitMQ]应用知识点总结
java·spring·rabbitmq
openFuyao5 小时前
openFuyao InferNex:云原生分布式 LLM 推理加速套件——从生产痛点到算力的极致释放
分布式·云原生·ai原生·openfuyao·多样化算力
咖啡星人k1 天前
MonkeyCode 开源协作指南:如何让分布式团队高效使用AI编程
分布式·开源·ai编程·monkeycode
阿坤带你走近大数据1 天前
如何保证kafka中的数据一致性
分布式·kafka