在RocketMQ中使用了中介模式,RocketMQ充当了消息的中介者。
具体来说:
RocketMQ的角色
RocketMQ有三个主要角色:
- Producer(生产者):发送消息的客户端。
- NameServer: 保存集群信息。
- Consumer(消费者):接收和消费消息的客户端。
中介模式
如果看做中介模式:
- Producer和Consumer相互不了解。
- 但它们之间有依赖关系,通过交换消息进行交互。
- NameServer作为中介者,将生产者与消费者相连起来。
- Producer只向 NameServer 注册信息,不知道有哪些 Consumer。
- Consumer只向 NameServer 注册信息,不清楚有哪些 Producer。
- NameServer 根据路由规则将消息转发给对应的 Consumer。
符合中介模式的定义:
- 定义中介者对象Mediator
- Producer 和 Consumer 作为抽象的 colleagues 继承于 Mediator
- 它们不直接访问、依赖于彼此
- 而是通过Mediator来间接协作
作用
NameServer作为中介者有以下优点:
- 生产者和消费者完全解耦
- 增加/删除生产者和消费者时,不影响对方
- 可以隔离系统之间的变化
- 中介者根据规则路由消息
- 高度复用生产者和消费者
总的来说,RocketMQ通过让 NameServer充当消息的中介者,实现了生产者和消费者之间的高度解耦。
生产者和消费者不直接交互,而是通过 NameServer进行间接协作。