RocketMQ中观察者模式:基于事件的订阅模式

在RocketMQ中使用观察者模式来实现基于事件的发布/订阅功能。

具体来说:

发布/订阅模式

RocketMQ支持基于事件的发布/订阅模式:

  • Publisher(发布者):生产者,负责发布消息事件。
  • Subscriber(订阅者):消费者,订阅感兴趣的事件并相应。
  • Message(事件):被发布的消息。
  • Topic(主题):发布者和订阅者之间的中间人,将消息事件路由给所有相关的订阅者。

具体实现

在RocketMQ中:

// 创建生产者
 producer = new DefaultMQProducer("producer");

 // 创建主题
topic = "topic_name"; 

// 发送事件       
producer.send(topic, tag, messageBody);

订阅者:

// 创建消费者
consumer = new DefaultMQConsumer("group1");

// 订阅主题       
consumer.subscribe(topic, "*");

// 注册监听        
consumer.registerMessageListener(msg -> {
    // 处理事件
});

由RocketMQ的Topic来连接发布者和订阅者。

观察者模式

这符合观察者模式:

  • 发布者相当于主题 Subject
  • 订阅者是 Observer
  • 消息事件就是 Subject 发布的

Topic 担任 Subject 和 Observer 之间的中介者。
将 Subject 的状态改变(发布消息事件)通知给需要知道的 Observer。

作用

RocketMQ 通过观察者模式支持基于事件的发布/订阅功能:

  • 发布者和订阅者解耦
  • 订阅者不依赖具体的发布者
  • 发布者不需要知道有哪些订阅者
  • 通过 Topic 把事件路由给对应的订阅者

总的来说,RocketMQ利用观察者模式实现了基于事件的发布/订阅功能。将发布者和订阅者通过Topic作为中介者高效解耦。