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
相关推荐
国科安芯4 小时前
ASL706S:让 MCU 不再“失忆跑飞“的守护芯片
分布式·单片机·嵌入式硬件·安全·fpga开发·架构
阿无,5 小时前
RabbitMQ面试题
分布式·rabbitmq
盛世宏博智慧档案8 小时前
全国100个分布式机房环境温湿度智能监测系统建设方案
分布式·机房·温湿度
六bring个六9 小时前
分布式设备连接对端失败问题分析
分布式·分布式软总线
天涯明月199315 小时前
ray深度研究报告
大数据·人工智能·分布式·ray
Rain的Java大神之路1 天前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
大菠萝爱上小西瓜2 天前
【大数据实战】Spark 2.2.2 完全分布式集群搭建
大数据·分布式·spark
肠畔码农2 天前
深度解析 RocketMQ 消费端限流与重平衡(Rebalance):分布式队列分配与流控防雪崩本质
分布式·rocketmq
海兰2 天前
【 Kafka进阶3】Apache Kafka 分布式事件流平台:架构原理与微服务解耦机制简要分析
分布式·架构·kafka
Rain的Java大神之路2 天前
如何避免订单重复提交
java·redis·后端·面试·架构·rabbitmq·rocketmq