文件名称:发布及订阅消息-android单元测试之对activity的测试示例
文件大小:2.97MB
文件格式:PDF
更新时间:2024-06-29 13:28:23
redis
4.5 发布及订阅消息 发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的 耦合,这点和设计模式中的观察者模式比较相似。pub/sub 不仅仅解决发布者和订阅者直接 代码级别耦合也解决两者在物理部署上的耦合。redis 作为一个 pub/sub 的 server,在订阅者 和发布者之间起到了消息路由的功能。订阅者可以通过 subscribe 和 psubscribe 命令向 redis server 订阅自己感兴趣的消息类型,redis 将消息类型称为通道(channel)。当发布者通过 publish 命令向 redis server 发送特定类型的消息时。订阅该消息类型的全部 client 都会收到 此消息。这里消息的传递是多对多的。一个 client可以订阅多个 channel,也可以向多个 channel 发送消息。 下面做个实验。这里使用 3 不同的 client, client1 用于订阅 tv1 这个 channel 的消息,client2 用于订阅 tv1 和 tv2 这 2 个 chanel 的消息,client3 用于发布 tv1 和 tv2 的消息。 Client 1 Client 2 Client 3 redis 127.0.0.1:6379> subscribe tv1 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "tv1" 3) (integer) 1 redis 127.0.0.1:6379> subscribe tv1 tv2 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "tv1" 3) (integer) 1 1) "subscribe" 2) "tv2" 3) (integer) 2 redis 127.0.0.1:6379> publish tv1 program1 (integer) 2 redis 127.0.0.1:6379> redis 127.0.0.1:6379> subscribe tv1 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "tv1" 3) (integer) 1 1) "message" 2) "tv1" 3) "program1" redis 127.0.0.1:6379> subscribe tv1 tv2 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "tv1" 3) (integer) 1 1) "subscribe" 2) "tv2" 3) (integer) 2 1) "message" 2) "tv1" 3) "program1" redis 127.0.0.1:6379> publish tv2 program2 (integer) 1 redis 127.0.0.1:6379> redis 127.0.0.1:6379> subscribe tv1 redis 127.0.0.1:6379> subscribe tv1 tv2