`
dearwolf
  • 浏览: 339367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

多主题多订阅者的情况怎样处理比较好?

阅读更多
在单主题多订阅者的情况,就是用Observer模式了。

但是对于多主题多订阅者,如果对于每一个主题的更新,模型都要清楚的知道哪些订阅者订阅了这个主题,这样的耦合度是不是太高了?但是如果不这样的话,那么一个主题的更新,就带来所有订阅者的更新——无论这个订阅者是否订阅了这个主题,这又是很大的浪费把?

比如在一个模型中,有主题A,B,C,订阅者有a,b,c,d,其中a,b订阅A,b,c订阅B,a,c,d订阅C,或者主题再多上一些,有几十个的话,这时候怎样设计比较好呢?
分享到:
评论
6 楼 dearwolf 2007-07-27  
晕,模型当然不需要知道具体的订阅者了,它只需要知道有人订阅而已。
5 楼 Morgan0916 2007-07-26  
建议你再看看Observer模式吧

"但是对于多主题多订阅者,如果对于每一个主题的更新,模型都要清楚的知道哪些订阅者订阅了这个主题,这样的耦合度是不是太高了?"

如果模型都不知道订阅者,还叫订阅吗? 肯定需要订阅注册的
4 楼 dearwolf 2007-07-25  
嗯,我想最好还是重新审视一下设计,看看能不能变成单对多
3 楼 dearwolf 2007-07-25  
SunMicro 写道
Observer一般可以配合singleton和Mediator,将Mediator实现为singleton,然后通过mediator注册发布则和订阅者



好的,我去看一下,谢谢!
2 楼 dearwolf 2007-07-25  
ltian 写道
楼主在讨论消息编程吗?pub/sub方式不存在以上你说的耦合情况吧,除非你要做一个JMS提供者,而非JMS客户端。


对于多对多的情况,简单的使用pub/sub当然会存在耦合了
1 楼 SunMicro 2007-07-25  
Observer一般可以配合singleton和Mediator,将Mediator实现为singleton,然后通过mediator注册发布则和订阅者

相关推荐

    java实现mqtt的发送和订阅

    java实现mqtt的发送和订阅,代码中有详细的注释,是分服务端和客户端来测试的,并有断开重连的处理!

    设计模式 观察者 发布/订阅 Observer

    l 订阅对象:当主题对象发生改变,订阅对象需要相应处理。 l 观察者对象:抽象出观察者对象,负责管理需要被通知的订阅对象并通知它们。 当主题对象发生改变时如何通知观察者对象 l 主题对象内部包含观察者对象,...

    JavaScript中发布/订阅模式的简单实例

    2.Subscribe/Publish模式使用了一个主题/事件通道,这个通道介于订阅者和发布者之间。该事件系统允许代码定义应用程序的特定事件,该事件可以传递自定义参数,自定义参数包含订阅者所需要的值。其目的是避免订阅者和...

    RxQueue:RxJava2React式队列类型,当没有订阅者可用时可缓冲项目

    在订阅处于活动状态时添加订阅者将处理第一个订阅者,并且队列中的任何现有事件都将转发给第二个订阅者。 一次只能有一个订阅者处于活动状态! 在您有一个临时观察者的情况下,当观察者回来时,您想接收它不可用时...

    http_pub_sub_demo_laravel:一个小项目,使用Laravel Framework和PHP通过HTTP REST模拟发布者-订阅者过程

    这个小型的演示项目在实时和异步处理中模拟了典型发布者-订阅者模式的核心。 发布者向注册到其实例的订阅者发送消息。 在这种情况下,发布者一收到任何新的请求或输入,便立即将它们转发给为该消息签名注册的订阅者...

    Kafka是一个分布式流处理平台,被广泛用于构建实时数据管道,允许你流式地处理数据

    Kafka是一个分布式流处理平台,被广泛用于构建实时数据管道,允许你流式地处理数据。 Kafka的主要特性包括: 1.分布式:Kafka是分布式的,可以跨多台机器同时存储和处理数据。 2.提供消息系统:Kafka可以作为消息中间件...

    Kafka面试题,面试知识

    生产者将消息发布到主题(topic),而消费者订阅这些主题来消费消息。 Kafka 的应用场景非常广泛,可用于以下几个方面: 日志收集与处理:Kafka 提供高效的分布式消息传输,可以用于实时地收集、聚合和处理大量的...

    WP主题:HotNewspro 2.72

    HotNews(热点新闻)作为一款免费的Wordpress主题,集成了五、六十项功能,丰富的主题设置面板,功能模块化,虽是一款主题,却集成了CMS、BLOG、图片、视频等多个模版,统一的风格展示不同的内容。历经多次升级,...

    Java实现Kafka数据生产者

    Kafka基于发布-订阅的消息队列模型,消息以主题(topics)的形式发布到Kafka集群中的一个或多个分区(partitions)上,并可以被一个或多个消费者应用程序订阅和处理。Kafka提供了持久性存储、数据复制和容错机制,...

    大数据处理流程.pdf

    ⽣产者向主题写⼊数据,消费者从主题中读取数据。作 为⼀个分布式的、分区的、低延迟的、冗余的⽇志提交服务。和Kafka类似消息中间件开源产品还包括RabbiMQ、ActiveMQ、ZeroMQ 等。 MapReduce是Google公司的核⼼计算...

    基于Kafka的多台远程服务器上的网页文件接入到本地的技术方案以及Flume+Kafka调研

    如果只是传输文件,不考虑加上网站、下载日期等信息的话,我知道的用Flume可能更方便,但是要加上网站、下载日期的信息(类似主题订阅的功能),flume就不太方便了? 5、可能存在的顾虑:网页数据文件对数据顺序性...

    java设计模式选择题复习题.doc

    "拉"的好处包括: 1、如果观察者众多,Subject来维护订阅者的列表,可能困难,或者臃肿,把订阅关系 解脱到Observer去完成。 2、Observer可以不理会它不关心的变更事件,只需要去获取自己感兴趣的事件即可。 3、...

    kafka-notify-system:一个基于Kafka的演示通知系统,生产者将通知发布到Kafka,消费者订阅通知并发送给用户

    处理消息发送结果的3种方法: 火与忘了等待结果(通过Future.get() ) 回调处理程序通知消费者该模块订阅通知并发送给用户。 最大并行度受分区数限制。 消息的轮询和处理应该是同步的,以确保接收通知的顺序。 ...

    ctkPluginFramework编译库和例子事件机制.rar

    事件处理程序(Event Handler 或 Subscriber):表达对一个或多个主题的兴趣,并接收属于此类主题的所有消息。 事件由两个属性组成: 主题(topic):用于定义事件性质,主题名通常被放在一个层次化的命名空间中,...

    lbm_nomq:该项目已被 https 取代

    lbm_nomq基于这样的原则,即消息在发送到订阅者/由订阅者处理之前驻留在发起者中是最安全的。 虽然引入代理进程是一种加快推送速度的好方法,但它也增加了当代理进程退出时丢失每条消息的危险。 因此,未处理消息最...

    Python操作分布式流处理系统Kafka

    Kafka是一个分布式流处理系统,流处理系统使它可以像消息队列一样publish或者subscribe消息,分布式提供了容错性,并发处理消息的机制。kafka运行在集群上,集群包含一个或多个服务器。kafka把消息存在topic中,每一...

    C#23种设计模式_示例源代码及PDF

    加入公司的 MM 情报邮件组就行了, 、 tom 负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为 订阅者(观察者)就可以及时收到情报啦 观察者模式: 让多个观察者对象同时监听某一个...

    Spark Streaming 流式处理整合Kafka.rar

    在示例代码中 `kafkaParams` 封装了 Kafka 消费者的属性,这些属性和 Spark Streaming ...Spark Streaming 提供了两种主题订阅方式,分别为 `Subscribe` 和 `SubscribePattern`。后者可以使用正则匹配订阅主题的名称

    Redis发布订阅和实现.NET客户端详解

    发布订阅在设计模式中也可以说是观察者模式,针对这个模式是处理对象间一对多的依赖关系的,当一个对象发生变化,其它依赖他的对象都要得到通知并更新。 然而它也有自己的缺点,就是当主题发生一系列的变化时,观察...

Global site tag (gtag.js) - Google Analytics