初识MQ

同步异步

同步

优点: 等待结果出来才返回, 实时性强
缺点:

  • 可拓展性差 –> 耦合大
  • 性能下降 –> 延时高
  • 级联失败问题

异步调用

优点:
解除耦合, 拓展性强
无需等待,性能好
故障隔离
缓存消息/流量削峰填谷

缺点:
不能立即得到调用结果,时效性差
不确定下游业务执行是否成功
业务安全依赖于 Broker(消息队列) 的可靠性

flowchart LR
	消息发送者 ---> 消息队列 ---> 消息接收者1
	消息队列 ---> 消息接收者2

MQ

消息队列/字面来看就是存放消息的队列,
也就是异步调用中的 Broker 。

RabbitMQ

RabbitMQ 的整体架构及核心概念:

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

    subgraph Broker[RabbitMQ Server / Broker]
        subgraph VHost1[Virtual Host]
            E1[Exchange]
            E2[Exchange]

            Q1[Queue]
            Q2[Queue]
            Q3[Queue]
        end
    end

    C1[Consumer]
    C2[Consumer]

    P --> E1
    P --> E2

    E1 --> Q1

    E2 --> Q1
    E2 --> Q2
    E2 --> Q3

    Q1 --> C1
    Q2 --> C2
    Q3 --> C1

ex & queue

rabbitMQ中一定要将二者绑定, 直接给交换机发信息是没用的 -> not routed

visual host

隔离机制, 各自在自己的host跑, 相互不影响

JAVA操作MQ

SpringAMQP

1. 引入依赖

Pasted image 20260326201454

2.配置MQ地址

Pasted image 20260326201529

3.添加实例

Pasted image 20260326201700