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)参数都使用的 "新编码": 全国城市代码列表(新) 本文接口均不是官方接口,仅供测试使用! 腾讯天气 空气质量 ...
随机推荐
- Internet History, Technology and Security (Week6)
Week6 The Internet is desinged based on four-layer model. Each layer builds on the layers below it. ...
- 结对作业——web四则运算
目录: 一.Coding.net项目地址 二.PSP 三.接口设计 四.接口实现 五.性能分析 六.单元测试 七.异常处理 八.模块设计 九.模块对接 十.结对 十一.思考 十二.PSP 网站:htt ...
- C++操作mysql方法总结(1)
C++通过mysql的c api和通过mysql的Connector C++ 1.1.3操作mysql的两种方式 使用vs2013和64位的msql 5.6.16进行操作 项目中使用的数据库名为boo ...
- [转帖] .net 2.1 是 LTS长期支持版本.
[翻译] .NET Core 2.1 发布 原文: Announcing .NET Core 2.1 我们很高兴可以发布 .NET Core 2.1.这次更新包括对性能的改进,对运行时和工具的改进 ...
- MT【135】条件线性化
已知\(x,y>0,\dfrac{1}{x}+\dfrac{2}{y}=1\),求\(\dfrac{1}{x+1}+\dfrac{2}{y+1}\)的最大值_____ 解答:令\(a=\dfra ...
- 【刷题】BZOJ 2588 Spoj 10628. Count on a tree
Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始 ...
- 【刷题】BZOJ 3524 [Poi2014]Couriers
Description 给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0 ...
- 【转】每个 Linux 新手都应该知道的 10 个命令
你可能认为你是 Linux 新手,但实际上并不是.全球互联网用户有 3.74 亿,他们都以某种方式使用 Linux,因为 Linux 服务器占据了互联网的 90%.大多数现代路由器运行 Linux 或 ...
- 20135306 2.4 ELF文件格式分析
2.4 ELF文件格式分析 20135306 黄韧 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目标 ...
- Java之NIO,BIO,AIO
Hollis知识星球的一些学习笔记,有兴趣的朋友可以微信搜一下 什么是NIO 什么是IO? 它是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键,因而所有 ...