初探ZeroMQ(三) 发布-订阅模式中套结字总结
来源:互联网 发布:杨幂对赌协议知乎 编辑:程序博客网 时间:2024/05/21 12:40
参考资料:ØMQ - The Guide(英文)
参考资料:ØMQ - The Guide(中文)
本文主要介绍和总结在发布-订阅模式中各种套结字的行为.
套结字简介:
PUB: 多播套结字,只能发送消息给SUB/XSUB,不能接收消息
XPUB: 多播套结字,既能发送消息给SUB/XSUB,也可以接收来自XSUB的消息
SUB: 接收套结字,只能接收来自PUB/XPUB的消息,不能发送消息
XSUB: 接收套结字,既能接收来自PUB/XPUB的消息,也能发送消息给XPUB
以下是译文,原文地址:http://rfc.zeromq.org/spec:29
发布-订阅模式
该模式用于事件和数据分配,通常是从少数发布者到大量订阅者的,但是也可以从大量发布者到少量用户。对于多对多的使用场景,该模式提供原始套接字类型(XPUB,XSUB)来建设分销代理(distribution proxies),也叫经纪人(broker)。
确切的订阅和过滤机制依赖于传输协议,并在相关文件中定义。对于TCP,参考地址http://rfc.zeromq.org/spec:23/ZMTP.
PUB 套结字类型
PUB套接字类型提供了基本的向一组用户的单向广播。通过TCP,它会对传出的消息进行过滤,尽管如此,一个消息仍将被发送多次,使其到达多个订阅者。 PUB主要用于瞬态事件分布,其中该网络的稳定性比流量的可靠性更重要。
常规行为:
-可以被任意数量的SUB或XSUB订阅者连接,它只发送消息.-将会为每个建立连接的订阅者维持一个传出队列.-将在启动一个到订阅者的连接的时候创建一个传出队列,不管连接是否建立,它都包含则这个队列.-当订阅者连接到PUB的时候,PUB套结字将创建一个传出队列,如果订阅者断开连接,PUB套结字将会摧毁该订阅者的传出队列,并且丢弃掉队列中的消息-应该限制运行时传出队列的大小-将会默默的丢弃掉订阅者发给它的任何消息.
处理传出数据:
-将不会以任何方式修改传出的消息.-依赖于传输,可能发送所有消息给所有订阅者-依赖于传输,可能仅仅发送消息给匹配的订阅者-将会针对订阅消息的第一个结构进行一个二进制的比较-如果传出队列已满,将会默默的丢弃掉所有的消息.-将不会阻塞在消息发送上.
处理传入数据:
-根据使用的传输协议,PUB将会接收来自订阅者的订阅请求和取消订阅请求.-将不会传递这些订阅命令给应用程序
XPUB 套结字类型
XPUB套接字类型扩展了PUB套结字不能接收来自匿名用户信息的能力,并且将订阅命令暴露给应用程序。 XPUB通常用于在代理中,但对高级应用程序也是有用的。
常规行为:
-可以被任意数量的SUB或XSUB订阅者连接,它既能发送消息,也能接收消息.-将会为每个建立连接的订阅者维持两个队列(传入/传出队列).-将在启动一个到订阅者的连接的时候维持两个队列,不管连接是否建立,它都包含则这两个队列.-当订阅者连接到XPUB的时候,XPUB套结字将创建两个队列,如果订阅者断开连接,XPUB套结字将会摧毁为该订阅者维持的两个队列,并且丢弃掉队列中的消息-应该限制运行时传出队列的大小-将会默默的丢弃掉订阅者发给它的任何消息.
处理传出的消息:
-将不会以任何方式修改传出的消息.-依赖于传输,可能发送所有消息给所有订阅者-依赖于传输,可能仅仅发送消息给匹配的订阅者-将会针对订阅消息的第一个结构进行一个二进制的比较-如果传出队列已满,将会默默的丢弃掉所有的消息.-将不会阻塞在消息发送上.
处理传入的消息:
-将采用公平队列策略接收来自订阅者的消息-将会传递这些消息给应用程序
处理订阅:
-根据使用的传输协议,PUB将会接收来自订阅者的订阅请求和取消订阅请求.-将会传递这些命令给它的调用程序-可能会根据配置信息规范传递给调用程序的命名, 以便使多个相同的订阅仅仅使用一个命令-如果订阅者过早断开连接,XPUB将会为调用程序生成合适的退订请求。
The SUB Socket Type
SUB套接字类型提供了向一组发布者的基本单向监听。
常规行为:
-可以主动连接到任意数量的PUB,XPUB发布者,仅仅接收消息-将会为每个建立连接的发布者维持一个传入消息队列-将在启动一个到发布者的连接的时候维持一个传入队列,不管连接是否建立,它都包含则这个队列.-当订阅者连接到SUB的时候,SUB套结字将创建一个传入队列,如果发布者断开连接,SUB套结字将会摧毁该发布者的传入队列,并且丢弃掉队列中的消息-应该限制运行时传出队列的大小
处理传入的消息:
-如果为发布者维护的队列已满,将默默的丢弃后来的消息-将会才用公平队列策略接收来自发布者的消息-不会以任何方式修改传入的消息-可能根据前缀匹配算法和订阅消息,以此来过滤消息-将会传递消息给应用程序
处理传出的消息:
-根据使用的传输协议,SUB将会发送订阅请求和取消订阅请求到发布者
The XSUB Socket Type
XSUB套接字类型扩展SUB套结字不能给上游发布者发送消息和订阅命令的能力。 XSUB通常用于在代理而且对高级应用程序也是有用的。
常规行为:
-可以主动连接到任意数量的PUB或XPUB发布者,它既能发送消息,也能接收消息.-将会为每个建立连接的订阅者维持两个队列(传入/传出队列).-将在启动一个到发布者的连接的时候维持两个队列,不管连接是否建立,它都包含则这两个队列.-当发布者连接到XSUB的时候,XSUB套结字将创建两个队列,如果发布者断开连接,XSUB套结字将会摧毁为该发布者维持的两个队列,并且丢弃掉队列中的消息-应该限制运行时传出队列的大小-将会默默的丢弃掉订阅者发给它的任何消息.
处理传入的消息:
-如果为发布者维护的输入队列已满,将默默的丢弃后来的消息-将会才用公平队列策略接收来自发布者的消息-不会以任何方式修改传入的消息-可能根据前缀匹配算法和订阅消息,以此来过滤消息-将会传递消息给应用程序
处理传出的消息:
-不会以任何方式修改传出的消息-将会发送所有的消息给所有建立连接的发布者-如果为发布者维护的输出队列已满,将默默的丢弃后来的消息-将不会阻塞在消息发送上
处理订阅:
-将会接收来自应用程序的订阅命令-根据使用的传输协议,XSUB将会发送订阅请求和取消订阅请求到发布者-当关闭一个到发布者的连接的时候,应该发送取消订阅请求给所有的订阅.
- 初探ZeroMQ(三) 发布-订阅模式中套结字总结
- 初探ZeroMQ(二) 请求-应答模式中套结字总结
- 初探ZeroMQ(四) 管道模式中套结字总结
- zeromq 的发布 订阅模式
- zeroMQ初体验-33.发布/订阅模式进阶-克隆模式-中
- zeroMQ初体验-2.发布订阅模式(pub/sub)
- zeroMQ初体验-13.发布/订阅模式 进阶
- ZeroMQ:订阅-发布模式的java程序示例
- zeroMQ初体验-30.发布/订阅模式进阶-自裁的蜗牛订阅者
- zeroMQ初体验-31.发布/订阅模式进阶-黑盒的高速订阅者
- zeroMQ初体验-32.发布/订阅模式进阶-克隆模式-上
- zeroMQ初体验-34.发布/订阅模式进阶-克隆模式-下,结言
- ZeroMQ to .Net 发布订阅 dotnet体系
- angular中发布/订阅模式详解
- redis发布与订阅-初探
- 小话设计模式三:发布/订阅模式
- 设计模式(三)观察者模式Observer(发布订阅)
- ZeroMQ各模式总结
- how to choose premium grade brown film faced plywood
- Access denied for user 'root'@'localhost'(using password: NO)的解决历程
- Oracle_11g_ocp_053_003
- Ubuntu proxy网络配置
- svn server配置与TortoiseSVN、Ankhsvn+VS使用
- 初探ZeroMQ(三) 发布-订阅模式中套结字总结
- 寻路基础
- netty入门实例
- 源代码在进行加密的过程中需要注意的问题
- UVA - 11127(搜索)
- qt操作csv
- (三)错误推测法
- Linux下使用JNI
- 第三章作业3.23