RabbitMQ介绍及简单操作

文章目录

一、同步调用

例如:
支付服务 1.用户登录 2.交易服务 3.通知服务 4.积分服务

通过openfeign进行服务之间通信实现商城的支付服务,需要用户登录、交易服务、通知服务、积分服务,四个服务缺一不可。

每一个服务都不能出现问题,一旦出现问题就会影响性能,甚至报错中断。

openfeign同步调用:

  • 优势:时效性强,等待结果后返回
  • 缺点:拓展性差
  • 缺点:性能下降
  • 缺点:级联失败问题

二、异步调用

支付服务通过异步的方式调用业务关联度降低,发送消息通知到Broker。

例如:
发送消息通知 发送消息通知 支付服务 1.用户登录 2.交易服务 消息代理 通知服务 积分服务

优势:

  • 解耦,拓展性强
  • 无需等待,性能好
  • 故障隔离
  • 缓存消息,流量削峰填谷
    缺点:
  • 实时性差
  • 不确定下游业务是否执行成功
  • 业务安全依赖于Broker(消息代理)的可靠性

三、MQ介绍

MQ(消息队列),存放消息的队列,异步调用中的Broker,先进先出(FIFO)。

Kafka每秒吞吐量达百万级;

RockertMQ每秒吞吐量达十万级;

RabbitMQ每秒吞吐量达十万级左右,但是它消息延迟仅仅是微秒的,可靠性高;

考虑大部分情况下公司是达不到每秒吞吐量百万级的,所以选择RabbitMQ。
RabbitMQ官网

1.安装RabbitMQ

BASH 复制代码
docker run -d -p 15672:15672  -p  5672:5672  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name rabbitmq --hostname=rabbitmqhostone  rabbitmq

下载rabbitmq并且启动成功之后,可以直接访问http://localhost:15672,用户名密码都是admin

2.介绍RabbitMQ

RabbitMQ整体架构及核心概念:

  • publisher:消息发送者
  • exchange:交换机,负责路由消息
  • queue:队列,存储消息
  • consumer:消息的消费者
  • virtual-host:虚拟主机,起到数据隔离的作用

3.页面简单使用

  1. 登录

  2. 创建用户

  3. 创建exchange,我创建的是test

  4. 创建queue

  5. 将exchange和queue关联起来,关联可以在queues中操作,也可以在exchanges中操作

  6. 测试发送消息

  • 进入exchange搜索我们创建的exchange
  • 点击Name,可以进入详情页,查看到绑定的queue,可以发送消息
  • 发送消息之后可以看到有发送的记录数据
  • 进去queue页面可以看到通过exchange发送消息的队列中有了1条消息
  • 点击Name进入详情,可以查看消息内容
相关推荐
heimeiyingwang16 分钟前
【架构实战】日志体系设计:从ELK到可观测性的演进
分布式·缓存·架构
段一凡-华北理工大学1 小时前
工业领域的Hadoop架构学习~系列文章17:Hadoop性能调优- 调度集群每一分性能
大数据·人工智能·hadoop·分布式·学习·架构·高炉炼铁
我是一颗柠檬1 小时前
【Java项目技术亮点】Kafka异步写+写聚合:吞吐量提升10倍的消息队列优化秘籍
java·分布式·kafka·linq
闪电悠米1 小时前
黑马点评-秒杀优化-03_blocking_queue_async_order
数据库·分布式·oracle·junit·wpf·lua
zzz_23681 小时前
【RabbitMQ】面试系列 · 第二期:高级特性与可靠性保障
面试·rabbitmq·java-rabbitmq
真实的菜1 小时前
Redis 从入门到精通(六):集群模式(Cluster)—— 分布式架构、哈希槽与 Gossip 协议全解
redis·分布式·架构
我是一颗柠檬2 小时前
【Redis】Redis分布式锁Day13(2026年)
java·redis·分布式·缓存
智慧物业老杨18 小时前
电动自行车安全管理数智化解决方案:从风险防控到证据闭环
安全·rabbitmq
闪电悠米19 小时前
黑马点评-秒杀优化-01_async_seckill_idea
java·数据库·ide·redis·分布式·缓存·intellij-idea
闪电悠米20 小时前
黑马点评-秒杀优化-02_lua_precheck
开发语言·redis·分布式·缓存·junit·wpf·lua