2020-04-28 07:31:29 +03:00
|
|
|
|
# 发布订阅模式
|
|
|
|
|
|
|
|
|
|
发布-订阅是一种消息传递模式,基本设计原则是将消息发布者和提供者分开,常常用于在不同组件之间传递消息。
|
|
|
|
|
|
2020-04-28 12:23:57 +03:00
|
|
|
|
![图示关系](../../images/pub-sub-pattern-0.png)
|
|
|
|
|
发布订阅模式往往实现为<消息代理,消息中间件,消息队列>等
|
2020-04-28 07:31:29 +03:00
|
|
|
|
|
2020-04-28 12:23:57 +03:00
|
|
|
|
该模式中的三个关键类型:消息本身、消息主题、订阅用户。
|
|
|
|
|
![图示关系](../../images/pub-sub-pattern-1.png)
|
|
|
|
|
|
|
|
|
|
图片来源:[pubsub-pattern.md](https://github.com/imsardine/dev-notes/blob/source/docs/pubsub-pattern.md)
|
2020-04-29 17:44:12 +03:00
|
|
|
|
|
2020-05-06 05:19:21 +03:00
|
|
|
|
现实生活中的各种信息平台,就是很好的发布订阅的例子,比如某八戒、某无忧等。
|
|
|
|
|
|
|
|
|
|
在发布订阅模型中,每条消息都会传送给多个订阅者。发布者通常不会知道、也不关心哪一个订阅者正在接收主题消息。订阅者和发布者可以在运行时动态添加是一种松散的耦合关系,这使得系统的复杂性可以随时间的推移而增长。在现实生活中,不同城市的象天气预报也是这个模式。
|
2020-04-30 09:50:21 +03:00
|
|
|
|
|
|
|
|
|
这里演示,一个拼车例子,车主发布拼车(Topic)消息,消息推送到订阅拼车(Topic)信息的所有用户.
|
2020-04-29 17:44:12 +03:00
|
|
|
|
|
|
|
|
|
并模拟以下情形:
|
|
|
|
|
|
2020-04-30 09:50:21 +03:00
|
|
|
|
+ 车主(Topic)发布拼车消息
|
|
|
|
|
+ 拼车用户订阅拼车消息(Topic)
|
|
|
|
|
+ 拼车用户处理收到的拼车消息
|