订阅发布者模式本质上也是一种生产者消费者模式,订阅者是消费者,发布者是生产者。如果一定要说个区别,就是抽象级别的区别吧。

订阅者肯定是个消费者,但消费者不一定是订阅者,发布者一定是个生产者,但生产者不一定是个发布者。

订阅发布者模式有时也称为观察者模式,订阅发布者(观察这和被观察者)存在着主动被动的关系,而生产者消费者比较中性吧。 订阅发布模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时,会通知所有订阅者对象,使它们能够自动更新自己的状态。而生产者消费者关系可以是1对1,1对多,多对1,多对多关系

补充:在23种设计模式中的观察者模式中,并没有中间介-队列的概念,但生产者消费者模式再多线程环境下好像天生就有队列的概念。在订阅发布者之间引入消息队列后,可以实现订阅者和发布者之间的解耦,任务可以很好的以异步方式进行处理,所以说是否有中间队列不是订阅发布者模式和生产者消费者模式的区别

如下蓝色字体部分为参考内容:

如下摘自:http://www.codeceo.com/article/javascript-observer-pattern.html

那么到底什么是观察者模式呢. 先看看生活中的观察者模式。

好莱坞有句名言. “不要给我打电话, 我会给你打电话”. 这句话就解释了一个观察者模式的来龙去脉。 其中“我”是发布者, “你”是订阅者。

再举个例子,我来公司面试的时候,完事之后每个面试官都会对我说:“请留下你的联系方式, 有消息我们会通知你”。 在这里“我”是订阅者, 面试官是发布者。所以我不用每天或者每小时都去询问面试结果, 通讯的主动权掌握在了面试官手上。而我只需要提供一个联系方式。

生产者消费者模式与订阅发布者模式的区别相关推荐

  1. RabbitMQ(五) 订阅发布者模式介绍以及代码实现

    概述: 在上一章节介绍的工作模式中,我们的消费会进行轮询发送给所有的消息消费者,每个消费者接受消息之和为全部消息.本章节介绍的订阅发布者模式则为:将消息传递给所有的消息消费者,每个消费者都能接受到全部 ...

  2. RabbitMQ下的生产消费者模式与订阅发布模式

    所谓模式,就是在某种场景下,一类问题及其解决方案的总结归纳.生产消费者模式与订阅发布模式是使用消息中间件时常用的两种模式,用于功能解耦和分布式系统间的消息通信,以下面两种场景为例: 数据接入    假 ...

  3. 用订阅/发布者模式解决异步函数结果依赖的问题

    我们都知道node是基于事件无阻塞i/o模型的,所以说大部分函数都是以异步实现的,请看下面代码: db.query(sql1, function (err, data) {//code })db.qu ...

  4. Java观察者模式以及与订阅发布者模式区别

    设计模式复习,代码是最好的说明. 定义:观察者模式定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新,属于行为类模式. 注意:观察者模式和发布订阅模式 ...

  5. js-vue中常说的subscribe/publish(订阅/发布者模式)或观察者模式

    总结起来就是: 先订阅–再发布 1.将注册的函数收集起来. (订阅) 2.在触发时,逐个触发. (发布) 3.还可以根据key来删除某个监听函数. <!DOCTYPE html> < ...

  6. RabbitMQ (五) 订阅者模式之分发模式 ( fanout )

    前面讲到了简单队列和工作队列. 这两种队列有个非常明显的缺点 : 生产者发送的消息,只能进入到一个队列. 消息只能进入到一个队列就意味着消息只能被一个消费者消费. 尽管工作队列模式中,一个队列中的消息 ...

  7. 4 交换机-fanout(订阅发布模式)

    目录 订阅发布模式 1.交换器(Exchange) 1.1.创建交换器 1.2 .推送消息到交换器 2.临时队列 3.绑定(bingdings) 5.代码例子 5.1.生产者代码示例 5.2.消费者代 ...

  8. 嵌入式消息订阅发布模式软件框架

    文章目录 一.总体框架 二.基于RT-Thread的SoftBus 2.1 SoftBus的由来 2.2 消息订阅者模式 2.3 静态订阅关系与动态订阅关系 2.4 C/S模式 2.5 消息订阅者模式 ...

  9. EventBus—思考观察者模式与发布订阅者模式

    EventBus系列文章: EventBus-使用实践 EventBus-源码解析 1. 概述 EventBus是基于发布订阅者模式的消息处理框架. EventBus is an open-sourc ...

最新文章

  1. 第四百零三节,python网站在线支付,支付宝接口集成与远程调试,
  2. Pwn-10月21-jarvis-level0
  3. 理想的人才梯队体系特征:40页人才梯队建设实施方案,果断收藏
  4. 网络协议从入门到底层原理(5)传输层(UDP、TCP - 可靠传输、流量控制、拥塞控制、建立连接、释放连接)
  5. 矩池云上使用nvidia-smi命令教程
  6. 防淘宝关闭二维码案例
  7. 2015-FCN论文解读
  8. IntelliJ IDEA Maven配置 MAC系统
  9. FPGA实现的线性反馈移位寄存器LFSR
  10. 一周信创舆情观察(11.1~11.7)
  11. CSS中的伪类选择器、颜色、度量单位、文本字体及文本样式设置
  12. 微软发布了最新的Sync Framework 2.0 CTP2
  13. Freenom申请免费域名
  14. 如何判断一个程序没有响应
  15. 2023秋招大厂经典面试题及答案整理归纳(201-220)校招必看
  16. ROSERROR : C++ filt命令
  17. 利用Python自动生成请假条,实现高效摸鱼
  18. 苹果芯片订单立功 台积电股价创新高
  19. Kd树实现knn算法(python)
  20. 2018,这些重大科技值得期待

热门文章

  1. 新型的大型bbs架构(squid+ngi
  2. 同步发电机励磁调节实验原理_发电机构造、原理、类型、安装、调试、试验、故障解析等所有知识(44个文件)...
  3. 信泰人寿与钉钉达成战略合作,共创保险数字化转型
  4. 松木ME2345A-G(替换)长电CJ3401A,P沟道30V低压MOS管方案!
  5. Portfolio Decision Analysis – Lessons from Military Applications
  6. [OpenCV实战]49 对极几何与立体视觉初探
  7. 通过脚本将手机文件复制到电脑
  8. Unity3D - 反射(Refrections)
  9. Shell自动化脚本学习
  10. 影响Zeta电位的因素