消息队列:RabbitMQ

同步

优点

  • 时效性较强

缺点

  • 耦合度高
  • 性能和吞吐量低
  • 等待过程中导致cpu等资源浪费
  • 级联失败

异步

优点

  • 耦合性低:新增微服务不用去改动支付服务里的代码
  • 吞吐量大:支付服务不用刻意等待其他微服务的处理结果,全部交给Broker来代理
  • 故障隔离:其他微服务的停止不会直接影响到支付服务
  • 流量削峰:高并发请求会先缓存在Broker中,微服务可以根据自身能力从Broker中取

缺点

  • 依赖于Broker的高可靠性、高吞吐量、安全性
  • 架构复杂,业务流水线不好跟踪

 

如何选择

  业务前后关联性较强,选择同步;若对吞吐量及并发要求较高,则选择异步

 

 

RabbitMQ

基本概念

  • channel:操作MQ的工具(对象), Channel 作为轻量级的 Connection 极大的减少了操作系统建立 TCP Connection 的开销;
  • exchange: 交换机,将消息路由到队列中
  • queue:队列,存储数据
  • virtualHost:虚拟主机,多租户概念,达到数据隔离的效果

 

 

安装部署

1、注意RabbitMQ与Erlang的版本兼容性

2、docker-compose.yml 配置文件

version: '3.7'
services:
  rabbitmq:
    image: rabbitmq:3.8.3-management
    container_name: rabbitmq
    ports:
      - "4369:4369"
      - "5671:5671"
      - "5672:5672"
      - "15671:15671"
      - "15672:15672"
      - "25672:25672"
    restart: always
    volumes:
      - /data/rabbitmq/lib:/var/lib/rabbitmq
      - /data/rabbitmq/etc:/etc/rabbitmq
      - /data/rabbitmq/log:/var/log/rabbitmq
    environment:
      - RABBITMQ_DEFAULT_VHOST=rabbitmq-1
      - RABBITMQ_DEFAULT_USER=admin
      - RABBITMQ_DEFAULT_PASS=123456

 

3、docker启动rabbitmq后,默认是关闭web界面管理插件的,即无法访问1567端口

进入容器:rabbitmq-plugins enable rabbitmq_management

 

4、安装延迟队列插件

注意版本兼容问题

// 将插件文件复制到容器/plugins目录下
docker cp plugins/rabbitmq_delayed_message_exchange-3.8.9-0199d11c.ez rabbitmq:/plugins

// 查看插件是否存在
cd plugins
ls | grep delay

// 启动插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

// 重启容器
docker restart rabbitmq

注:验证是否安装成功

工作模式

 

posted @   先娶国王后取经  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
历史上的今天:
2023-01-11 hive中的表字段与预留关键字冲突
2023-01-11 MySQL中的group by字段理解
2023-01-11 hive中创建表时报错
2023-01-11 .xml文件中的&需要用&代替
2023-01-11 启动hive后,输入show databases;报错
2023-01-11 ERROR: JAVA_HOME is not set and could not be found.
点击右上角即可分享
微信分享提示