`
zhouchaofei2010
  • 浏览: 1106889 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

生产者消费者模式与订阅发布者模式的区别

阅读更多

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

 

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

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

 

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

 

 

 

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

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

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

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

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3
3
分享到:
评论

相关推荐

    kafka模拟生产者消费者(集群模式)实例

    在本文中,我们将深入探讨如何在集群模式下模拟Kafka的生产者和消费者。Kafka是一种分布式流处理平台,常用于大数据实时处理和消息传递。它由Apache开发,以其高吞吐量、低延迟和可扩展性而闻名。 首先,我们要理解...

    Spring平台整合消息队列ActiveMQ实现发布订阅、生产者消费者模型(适合新手或者开发人员了解学习ActiveMQ机制)

    并比较了两种模式:生产者-消费者模式和发布-订阅模式的区别。 包含的特性如下: 1.开启activeMQ,访问http://localhost:8080/demo 2.在项目中,我们为消息的生产者和发布者分别注册了两个消费者和订阅者,当有...

    Spring boot+ActiveMQ整合消息队列实现发布订阅、生产者消费者模型(适合开发人员了解学习ActiveMQ机制)

    并比较了两种模式:生产者-消费者模式和发布-订阅模式的区别。 包含的特性如下: 1.开启activeMQ,访问http://localhost:8080/demo 2.在项目中,我们为消息的生产者和发布者分别注册了两个消费者和订阅者,当有...

    C# rabbitmq源码实战+多种场景(生产者消费者,发布订阅等)

    C# rabbitmq项目实战源码,在网上找了大量的MQ资料用C#语言开发的各种场景示例,从路由及列队的配置,到场景代码的开发,使用场景基本上都是通过生产者与消费者,发布订阅模式的示例,程序使用WindowForm开发的重要...

    两个AB PLC5000通过生产者和消费者进行通讯

    相对而言,消费者是指那些需要使用这些数据的PLC单元,它们订阅并接收由生产者发布的数据。在本例中,两个AB PLC5000将通过生产者和消费者的角色建立通讯。 生产者和消费者之间的通信一般通过工业以太网实现。为了...

    C# 使用ActivityMQ 订阅 发布模式P2P模式

    这种模式中,生产者(Publisher)发布消息到一个主题(Topic),而多个消费者(Subscriber)可以订阅该主题并接收发布的消息。这种模式的特点是广播式通信,每个订阅者都能接收到所有发布的消息。在C#中使用Activity...

    订阅发布模式

    订阅发布模式(Publish/Subscribe,简称Pub/Sub)是一种在分布式系统中进行消息传递的设计模式,它允许消息生产者(发布者)将消息发送到中间件(通常是一个消息代理),然后由多个消息消费者(订阅者)根据自己的...

    ActiveMQ-Topic订阅发布模式Demo

    在发布/订阅模式中,生产者(Publisher)发送消息到一个主题(Topic),而多个消费者(Subscriber)可以订阅这个主题,从而接收到这些消息。这种模式适用于需要广播消息或通知所有感兴趣方的情况。 在博客链接中...

    JMS IBM MQ 订阅模式

    点对点模式中,消息从一个生产者发送到一个队列,然后由一个消费者接收。发布/订阅模式下,消息由发布者发送到主题,多个订阅者可以同时接收消息。 2. **消息对象**:JMS定义了四种消息对象:Message、TextMessage...

    kafka生产者消费者实例

    4. **offset管理**:消费者负责维护自己的消费位置,Kafka 提供自动提交和手动提交两种模式。 了解并熟练掌握这些核心概念,将有助于我们构建高效、可靠的数据处理系统。在实际应用中,根据业务需求选择合适的配置...

    RabbitMQ封装为c++版本,并且使用方式为发布订阅模式

    发布订阅模式是RabbitMQ提供的一种通信模式,其中生产者发布消息到一个主题(topic),而多个消费者可以订阅这个主题,从而接收到发布的消息。 在C++中封装RabbitMQ,我们需要使用RabbitMQ的C++客户端库,通常是`...

    activeMq点对点和发布/订阅模式demo

    1. 广播消息:生产者发布消息到一个主题,所有订阅了该主题的消费者都能接收到消息。 2. 多对多交付:一个消息可以被多个消费者同时接收,实现了广播效果。 3. 动态订阅:消费者可以随时订阅或取消订阅主题,不影响...

    java IBM MQ 7.5.0 生产者和消费者实例

    生产者和消费者同样可以通过创建连接、发布和订阅主题来工作,只是API和协议细节会有所不同。 6. **异常处理与连接管理**: 在Java应用中,需要适当地处理MQ相关的异常,如`MQException`。同时,确保在不再需要时...

    zmq 发布,订阅模式 , DEOM

    发布/订阅模式是ZMQ支持的一种主要通信模式,它允许消息生产者(发布者)向多个消费者(订阅者)广播消息。在这种模式下,发布者并不关心哪些订阅者正在接收消息,订阅者也无需知道消息来自哪个发布者,这实现了解耦...

    SpringBoot-RabbitMQ生产者和消费者.7z

    2. **Publish/Subscribe模式**:在这种模式下,生产者发布消息到一个主题,而多个消费者可以订阅该主题。每个消费者都可以接收到所有发布到该主题的消息,实现一对多的消息广播。 3. **Topic模式**:这是介于Direct...

    ActiveMQ的点对点与发布/订阅模式小demo

    生产者(发布者)发布消息到一个主题,多个消费者(订阅者)可以订阅这个主题并接收到消息。相比于点对点模式,发布/订阅模式支持一对多的广播式通信。在ActiveMQ中,我们可以通过创建一个Topic,然后使用`...

    ActiveMQ订阅模式持久化实现

    在发布/订阅模式下,消息生产者(Publisher)发送消息到主题(Topic),而多个消息消费者(Subscriber)可以订阅该主题,从而接收消息。这种模式特别适用于广播式通信,让所有订阅者都能接收到相同的消息。 **持久...

    apache MQ 点对点,发布/订阅者,开发流程

    4. **创建生产者和消费者**:根据上述点对点或发布/订阅模式,编写生产者和消费者的代码。 5. **测试和调试**:发送消息并验证消费者是否能正确接收和处理。 在实践中,为了提高系统的健壮性和可扩展性,还需要考虑...

    13-基于Redis的消息队列之发布订阅模式1

    该模式下,消息的生产者将消息发布到Redis中,而消费者则可以从Redis中订阅和消费消息。该模式可以实现消息的异步处理,提高了系统的可扩展性和可靠性。 知识点一:Redis的发布订阅模式 Redis的发布订阅模式是...

    rabbitmq发布订阅

    【标题】:“rabbitmq发布订阅”是分布式消息传递中的一个重要概念,它允许生产者发送消息到RabbitMQ服务器,而多个消费者可以订阅这些消息并进行处理。RabbitMQ是一个开源的消息代理和队列服务器,使用AMQP...

Global site tag (gtag.js) - Google Analytics