ZeroMQ API(六) 代理
1、zmq_proxy(3)
1.1 名称
zmq_proxy - 开始内置ZMQ代理
1.2 概要
int zmq_proxy(const void * frontend,const void * backend,const void * capture);
1.3 描述
zmq_proxy()函数在当前应用程序线程中启动内置的ZMQ代理。
代理将前端套接字连接到后端套接字。从概念上讲,数据从前端流向后端。根据套接字类型的不同,回复可能会以相反的方向流动。方向只是概念上的;代理是完全对称的,前端和后端没有技术上的区别。
在调用zmq_proxy()之前,您必须设置任何套接字选项,并连接或绑定前端和后端套接字。这两种传统的代理模式是:
zmq_proxy()在当前线程中运行,并且仅在当前上下文关闭时返回。
如果捕获套接字不是NULL,则代理应将在前端和后端收到的所有消息发送到捕获套接字。捕获套接字应该是ZMQ_PUB,ZMQ_DEALER,ZMQ_PUSH或ZMQ_PAIR套接字。
有关可用套接字类型的说明,请参阅zmq_socket(3)。
1.4 用法示例
1.4.1 共享队列
当前端是一个ZMQ_ROUTER套接字,并且后端是一个ZMQ_DEALER套接字时,代理服务器将作为一个共享队列来收集来自一组客户端的请求,并在一组服务中公平地分配这些请求。 请求应从前端连接公平排队并均匀分布在后端连接中。 回复将自动返回到发出原始请求的客户端。
1.4.2 转发
当前端是一个ZMQ_XSUB套接字,并且后端是一个ZMQ_XPUB套接字时,该代理将作为一个消息转发器来收集来自一组发布者的消息,并将这些消息转发给一组订阅者。 这可以用来桥接网络传输,例如, 阅读tcp://并在pgm://上转发。
1.4.3 流
当前端是ZMQ_PULL套接字,后端是ZMQ_PUSH套接字时,代理服务器应从一组客户端收集任务并使用管道模式将这些任务转发给一组工作人员。
1.4.4 返回值
zmq_proxy()函数始终返回-1,并将errno设置为ETERM(与任一指定套接字关联的ZMQ上下文已终止)。
2、zmq_proxy_steerable()
2.1 名称
zmq_proxy_steerable - 内置带控制流的ZMQ代理
2.2 概要
int zmq_proxy_steerable(const void * frontend,const void * backend,const void * capture,const void * control);
2.3 描述
zmq_proxy_steerable()函数在当前应用程序线程中启动内置的ZMQ代理,如zmq_proxy()所做的那样。请参阅此功能的一般说明和用法。我们在这里只描述由作为第四个参数“control”传递的套接字提供的附加控制流。
如果控制套接字不是NULL,则代理支持控制流。如果在此套接字上收到PAUSE,代理将暂停其活动。如果收到RESUME,它会继续。如果接收到TERMINATE,它将顺利终止。在开始时,代理正常运行,就像使用zmq_proxy一样。
如果控件套接字为NULL,则该函数的行为与调用zmq_proxy时的行为完全相同。
有关可用套接字类型的说明,请参阅zmq_socket(3)。有关zmq_proxy的说明,请参阅zmq_proxy(3)。
2.4 用法示例
比较zmq_proxy
2.5 返回值
如果将TERMINATE发送到其控制套接字,则zmq_proxy_steerable()函数返回0。否则,它返回-1,并将errno设置为ETERM(与任一指定套接字关联的ZMQ上下文已终止)。
ZeroMQ API(六) 代理的更多相关文章
- ZeroMQ API(一) 总序
序 zeromq是一个轻量级的消息库.它扩展了标准的套接字接口,其特性与传统的消息中间件不同,zeromq提供异步消息队列.多消息传递模式.消息过滤(订阅).无缝访问多个传输协议等的抽象. 本系列AP ...
- ZeroMQ API(三) 消息
1.初始化消息 1.1 zmq_msg_init(3) 1.1.1 名称 zmq_msg_init - 初始化空的ZMQ消息 1.1.2 概要 int zmq_msg_init(zmq_msg_t * ...
- JS 设计模式六 -- 代理模式
概念 为一个对象提供一个代用品或占位符,以便控制对它的访问. 当客户不方便直接访问一个对象的时候,需要提供一个替身对象来控制对这个对象的访问. 替身对象对请求做出一些处理之后, 再把请求转交给本体对象 ...
- Spring Boot 2.x 编写 RESTful API (六) 事务
用Spring Boot编写RESTful API 学习笔记 Transactional 判定顺序 propagation isolation 脏读 不可重复读 幻读 不可重复读是指记录不同 (upd ...
- ZeroMQ API(七) 安全
1.无安全性:zmq_null(7) 1.1 名称 zmq_null - 没有安全性或机密性 1.2 概要 NULL机制由ZMTP 3.0规范定义:http://rfc.zeromq.org/spec ...
- ZeroMQ API(五) 传输模式
1.使用TCP的单播传输:zmq_tcp(7) 1.1 名称 zmq_tcp - 使用TCP的ZMQ单播传输 1.2 概要 TCP是一种无处不在,可靠的单播传输.当通过具有ZMQ的网络连接分布式应用程 ...
- ZeroMQ API(四) 套接字
1.创建一个套接字 1.1 zmq_socket(3) 1.1.1 名称 zmq_socket - 创建ZMQ套接字 1.1.2 概要 void * zmq_socket(void * context ...
- ZeroMQ API(二) 上下文
1.创建上下文 1.1 zmq_ctx_new(3) 1.1.1 名称 zmq_ctx_new - 创建新的ZMQ上下文 1.1.2 概要 void * zmq_ctx_new(); 1.1.3 描述 ...
- 天气预报API(六):中国气象频道、腾讯天气--“新编码”接口的测试
说明 本文所有测试均以青岛为例. 本文所列接口城市代码(cityid)参数都使用的 "新编码": 全国城市代码列表(新) 本文接口均不是官方接口,仅供测试使用! 腾讯天气 空气质量 ...
随机推荐
- Alpha 冲刺报告(4/10)
Alpha 冲刺报告(4/10) 队名:洛基小队 峻雄(组长) 已完成:继续行动脚本的编写 明日计划:尽量完成角色的移动 剩余任务:物品背包交互代码 困难:具体编码进展比较缓慢 ----------- ...
- Ubuntu16.04 下虚拟环境的创建与使用
1. 虚拟环境 虚拟环境(virtual environment),顾名思义是虚拟出来的环境,通俗来讲,可以借助虚拟机,docker来理解虚拟环境,就是把一部分内容独立出来,我们把这部分独立出来的 ...
- angularJS1笔记-(7)-控制器的合理使用(显示和隐式的依赖注入)
AngularJS依赖注入 1.隐式注入:不需要开发人员干预,angularJS自动根据参数的名称识别和注入数据 app.controller("myCtrl".function( ...
- 基于windowsphone7的控制ppt播放
最近突然想起了一个学长的一个利用手机控制ppt播放的一个创意,并想将其在windows phone7上实现一下. 经过几天的努力已经可以控制ppt的播放,暂停,上一张,下一张了,并且电脑会将当前ppt ...
- vue 如何使用scss (转载)
创建一个基于 webpack 模板的新项目 全局安装 vue-cli $ npm install --global vue-cli 创建一个基于 webpack 模板的新项目 $ vue init w ...
- jQuery之_事件绑定与解绑
使用jQuery实现事件的绑定和解绑 就是所谓的事件操作. 1. 事件绑定(2种): * eventName(function(){}) 绑定对应事件名的监听, 例如:$('#div').click( ...
- node path模块
一.在nodejs中path模块时使用频率很高的模块,其中不乏有很多API写得很模糊,但仔细琢磨下来,也不是很难理解. 1.获取文件所在路径 var path = require('path'); v ...
- PHP-时间函数
1.时间格式化函数date(format,timestamp) format 时间格式 timestamp 时间戳 下面列出了一些常用于日期的字符: d - 表示月里的某天(01-31) m - 表示 ...
- delphi adoquery的post和UpdateBatch
delphi adoquery的post和UpdateBatch Post是确认当前的修改,而UpdateBatch是把已经确认但是没有存盘的数据写入数据库当ADOQuery的CursorType是c ...
- UpdateBatch到底是怎么用的?
要使用ADOQuery的UpdateBatch函数,必须将ADOQuery的LockType属性设置成ltBatchOptimistic