ReactiveCocoa 冷热订阅(cold subscribe, hot subscribe)

ReactiveCocoa支持两种订阅方式,一种是冷订阅,一种是热订阅。

热订阅的特点:

1、不管有没有消息订阅着,发送者总会把消息发出去。

2、不管订阅者是什么时候订阅的,发送者总是会把相同的消息发给所有订阅者

冷订阅的特点: 跟热订阅的相反。冷订阅只会给订阅者发送一次消息,冷订阅使用的流(stream)跟热订阅使用的不一样。

热订阅:主动触发。      冷订阅:被动触发

RACSubject:ken能包含很多个subscriber, 一个订阅中只有一个subscribe

热订阅:积极型的,    冷订阅:触发型的,要触发需要其他订阅者给当前订阅者传递消息才能完成订阅的任务。

时间: 2024-10-06 07:35:51

ReactiveCocoa 冷热订阅(cold subscribe, hot subscribe)的相关文章

RabbitMQ学习第三记:发布/订阅模式(Publish/Subscribe)

工作队列模式是直接在生产者与消费者里声明好一个队列,这种情况下消息只会对应同类型的消费者. 举个用户注册的列子:用户在注册完后一般都会发送消息通知用户注册成功(失败).如果在一个系统中,用户注册信息有邮箱.手机号,那么在注册完后会向邮箱和手机号都发送注册完成信息.利用MQ实现业务异步处理,如果是用工作队列的话,就会声明一个注册信息队列.注册完成之后生产者会向队列提交一条注册数据,消费者取出数据同时向邮箱以及手机号发送两条消息.但是实际上邮箱和手机号信息发送实际上是不同的业务逻辑,不应该放在一块处

RabbitMQ指南之三:发布/订阅模式(Publish/Subscribe)

在上一章中,我们创建了一个工作队列,工作队列模式的设想是每一条消息只会被转发给一个消费者.本章将会讲解完全不一样的场景: 我们会把一个消息转发给多个消费者,这种模式称之为发布-订阅模式. 为了阐述这个模式,我们将会搭建一个简单的日志系统,它包含两种程序:一种发送日志消息,另一种接收并打印日志消息.在这个日志系统里,每一个运行的消费者都可以获取到消息,在这种情况下,我们可以实现这种需求:一个消费者接收消息并写入磁盘,另一个消费者接收消息并打印在电脑屏幕上.简单来说,生产者发布的消息将会以广播的形式

Reactor系列(四)subscribe订阅

#java# #reactor# #subcribe# #订阅# 视频讲解 :https://www.bilibili.com/video/av79117693/ FluxMonoTestCase.java package com.example.reactor; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.reactivestreams.Subscriber; import or

emqtt 3 (我要subscribe 这个topic)

这一次,主要分析client subscribe 某个topic 的处理流程. 由protocol开始 是的,还是要从protocol开始,至于为什么,之前就说过了. subscribe 类型的packet的处理是: 1 %% 直接过滤掉topic 为空的情况 2 process(?SUBSCRIBE_PACKET(PacketId, []), State) -> 3 send(?SUBACK_PACKET(PacketId, []), State); 4 5 process(?SUBSCRIB

ReactiveCocoa Documents 翻译(基于版本V2.5)

1. 基本操作(Basic Operators) 描述 ReactiveCocoa 最常用的一些操作以及使用范例. 主要是如何运用 序列(sequences) 和 信号(signals) 的流操作. 用信号实现副作用(Performing side effects with signals) 订阅(Subscription) 依赖注入(Injecting effects) 流的传输(Transforming streams) 映射(Mapping) 过滤(Filtering) 流的结合(Comb

RxJava----操作符:cold&hot Observable

Observable 数据流有两种类型:hot 和 cold. cold Observables 只有当有订阅者订阅的时候, Cold Observable 才开始执行发射数据流的代码.并且每个订阅者订阅的时候都独立的执行一遍数据流代码. Observable.interval 就是一个 Cold Observable.每一个订阅者都会独立的收到他们的数据流. try { Observable<Long> cold = Observable.interval(200, TimeUnit.MIL

Pub/Sub 发布订阅

Related commands 相关命令 PSUBSCRIBE PUBLISH PUBSUB PUNSUBSCRIBE SUBSCRIBE UNSUBSCRIBE Pub/Sub SUBSCRIBE, UNSUBSCRIBE and PUBLISH implement the Publish/Subscribe messaging paradigm where (citing Wikipedia) senders (publishers) are not programmed to send

简单的订阅发布机制实现(Golang)

Redis和NSQ都有完善的订阅和发布实现,但参考它们的源码实现,做个实际例子,对两边的异同和这种机制会更有印象. 练习实现简单的 订阅/取消订阅/发布信息 功能,足够了. Server.go Server结构中的Dict用map保存了Channel的相关信息,而Channel结构中则用一个map保存了订阅这个Channel的Client. 这个与Redis中不太一样,Redis中的Dict用Channel的名字作为map的key,value则是其对应的Client列表.而Client中则保 存

《Redis设计与实现》学习笔记-发布订阅与事务

发布与订阅 Redis通过发布订阅提供一对多甚至是多对多的节点消息通信,发布订阅由PUBLISH.SUBSCRIBE.PSUBSCRIBE.PUBSUB等命令组成. SUBSCRIBE命令:订阅某频道,在redisServer结构中通过pubsub_channels字典属性保存当前服务器所有频道的订阅关系,字典键时频道名称,字典值是一个链表,记录了所有订阅这个频道的客户端. UNSUBSCRIBE命令:退订频道,调用该命令之后,会把订阅关系从pubsub_channels中删掉,如果键对应的链表