SpringCloud之Stream-3.发布订阅模型详解

2021-09-26  本文已影响0人  那钱有着落吗

首先举个例子来说发布订阅模型:

image.png

业务模型解耦

发布订阅模型还有一个主要的用途就是子系统解耦,每个子系统可以用“松耦合”的方式与上游系统集成,我们用一个例子来解释“松耦合”的含义。
假如我们的订单系统需要做一个下单通知的内容,以往的做法是这样的:

image.png

在下单完成后,我们要在订单系统中分别集成不同的通知渠道,对于订单系统来说,下游系统的业务逻辑将传播到上游系统。比如短信通知需要对接SMS系统,这压根就不是订单业务所关心的,但是又不得不去做。如果以后又引入了一种新的渠道,比如钉钉通知,那订单接口又要去对接钉钉SDK了,这显然不符合软件设计的职责隔离和模块化设计。
这种场景最适合应用发布订阅模型了,我们再来看如何来重构业务流程,达到松耦合的目的。

image.png

在上面的模式中,订单接口只用在用户下单后发送一条“下单完成”的消息到MQ组件中就结束任务了,每个通知渠道去MQ里订阅对应的Topic,在消息送达的时候执行自己的业务逻辑就可以了。这样一来,即便以后需要添加一个新的通知渠道,也不用更改上游订单系统的业务逻辑,这就是“松耦合”的业务设计原则。

上一篇下一篇

猜你喜欢

热点阅读