RocketMQ中中介模式:RocketMQ充当消息的中介者

在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进行间接协作。