ZeroMQ接口函数之 :zmq_proxy – 开始ZMQ内置代理
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-proxy
zmq_proxy(3) ØMQ Manual - ØMQ/4.1.0
Name
zmq_proxy – 开始ZMQ内置代理
Synopsis
int zmq_proxy (const void *frontend, const void *backend, const void *capture);
Description
zmq_proxy()函数在当前线程内开始ZMQ内置代理。
代理将一个前端socket连接到一个后端。一般来说,数据会从前端流向后端。根据socket的类型,数据可能向相反的方向流动。方向指示概念上的;代理是完全对称的,在技术上前端和后端没有什么区别。
在调用zmq_proxy()函数之前,你最好把该设置的socket属性都设置了,并且前端和后端都要进行连接或绑定。这两个传统的代理模式是:
zmq_proxy()函数在当前的线程空间中运行,并且只有在当前使用的context被关闭之后才会返回。
如果捕捉到的socket不是NULL,代理会发送从前端和后端接收到的所有消息给捕捉到的socket。获取的socket的类型应该是ZMQ_PUB、ZMQ_DEALER、ZMQ_PUSH、ZMQ_PAIR。
参见zmq_socket(3)函数获取socket类型更详细的说明。
Example usage
共享队列
当前端是一个ZMQ_ROUTER类型的socket,并且后端是一个ZMQ_DEALER类型的scoket的时候,代理会扮演一个共享队列的角色,从许多的客户端接收消息,并且把这些消息公平的分发到服务端。这些请求会被前端公平的放置在队列里进行接收,并通过后端进行均衡的分发。回复会自动的返回给原始的请求者。
Forwarder
当前端是一个ZMQ_XSUB类型的socket,并且后端是ZMQ_XPUB类型的socket的时候,代理会扮演一个运送者的角色。从大量的分发者中手机消息,并把这消息发送给一批订阅者。这可以被用于桥接传输模式。更多信息请参见tcp://和pgm://。
Streamer
当前端是ZMQ_PULL类型的socket,后端是ZMQ_PUSH类型的消息时,代理会从一批客户端手机消息并发送给一批使用管道传输模式的工作端。
Return value
zmq_proxy()函数只会返回 -1,并且设置errno的值为ETERM(ZMQ context被关闭了或者任何一个给定的socket被关闭了)。
Example
创建一个共享队列代理
// Create frontend and backend sockets
void *frontend = zmq_socket (context, ZMQ_ROUTER);
assert (backend);
void *backend = zmq_socket (context, ZMQ_DEALER);
assert (frontend);
// Bind both sockets to TCP ports
assert (zmq_bind (frontend, "tcp://*:5555") == );
assert (zmq_bind (backend, "tcp://*:5556") == );
// Start the queue proxy, which runs until ETERM
zmq_proxy (frontend, backend, NULL);
See also
zmq_bind(3) zmq_connect(3) zmq_socket(3) zmq(7)
Authors
This page was written by the ØMQ community. To make a change please read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.
Web site design and content is copyright (c) 2007-2012 iMatix Corporation. Contact us for professional support. Site content licensed under the Creative Commons Attribution-Share Alike 3.0 License. ØMQ is copyright (c) Copyright (c) 2007-2012 iMatix Corporation and Contributors. ØMQ is free software licensed under the LGPL. ØMQ, ZeroMQ, and 0MQ are trademarks of iMatix Corporation. Terms of Use — Privacy
Policy
更多 ZeroMQ API :http://www.cnblogs.com/fengbohello/p/4230135.html
翻译:风波
mail : fengbohello@qq.com
ZeroMQ接口函数之 :zmq_proxy – 开始ZMQ内置代理的更多相关文章
- ZeroMQ接口函数之 :zmq_ipc – ZMQ本地进程间通信传输协议
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...
- ZeroMQ接口函数之 :zmq_proxy_steerable – 以STOP/RESUME/TERMINATE控制方式开启内置的ZMQ代理
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...
- Day5 函数递归,匿名、内置行数,模块和包,开发规范
一.递归与二分法 一.递归 1.递归调用的定义 递归调用:在调用一个函数的过程中,直接或间接地调用了函数本身 2.递归分为两类:直接与间接 #直接 def func(): print('from fu ...
- 学习Python函数笔记之二(内置函数)
---恢复内容开始--- 1.内置函数:取绝对值函数abs() 2.内置函数:取最大值max(),取最小值min() 3.内置函数:len()是获取序列的长度 4.内置函数:divmod(x,y),返 ...
- Python函数04/生成器/推导式/内置函数
Python函数04/生成器/推导式/内置函数 目录 Python函数04/生成器/推导式/内置函数 内容大纲 1.生成器 2.推导式 3.内置函数(一) 4.今日总结 5.今日练习 内容大纲 1.生 ...
- ZeroMQ接口函数之 :zmq_ctx_term - 终结一个ZMQ环境上下文
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_ctx_term zmq_ctx_term(3) ØMQ Manual - ØMQ/4.1.0 Name zmq_ ...
- ZeroMQ接口函数之 :zmq_term - 终结ZMQ环境上下文(context)
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_term zmq_term(3) ØMQ Manual - ØMQ/4.1.0 Name zmq_term - 终 ...
- ZeroMQ接口函数之 :zmq_null - 无安全和加密
ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_null zmq_null(7) ØMQ Manual - ØMQ/4.1.0 Name zmq_null - 无 ...
- 第三天 函数 三元运算 lambda表达式 内置函数 文件操作
面向过程: 直接一行一行写代码,遇到重复的内容复制黏贴. 不利于代码阅读 代码没有复用 面向对象 将代码块定义为函数,以后直接调用函数 增强了复用性 函数的定义方法 def 函数名(传递参数): 函数 ...
随机推荐
- marquee标签,好神奇啊...
<html><body><div style="height:190; margin-top:10; margin-bottom:10; width:96%; ...
- C语言基础(5)-有符号数、无符号数、printf、大小端对齐
1.有符号数和无符号数 有符号数就是最高位为符号位,0代表正数,1代表负数 无符号数最高位不是符号位,而就是数的一部分而已. 1011 1111 0000 1111 1111 0000 1011 10 ...
- [译]merge vs rebase
git rebase和git merge设计的初衷是解决相同的一件事, 即把一个分支合并到另外一个分支--只是他们两个处理的方式非常不一样. 当你在一个特定的分支开发新功能, 团队的其它成员在mast ...
- Linux进程间通信(八):流套接字 socket()、bind()、listen()、accept()、connect()、read()、write()、close()
前面说到的进程间的通信,所通信的进程都是在同一台计算机上的,而使用socket进行通信的进程可以是同一台计算机的进程,也是可以是通过网络连接起来的不同计算机上的进程.通常我们使用socket进行网络编 ...
- MySQL Cluster 数据分布(分区、分组)
数据分布 1.MySQL Cluster自动分区数据表(也可能使用用户自定义分区),将数据分布到分区中: 2.一个数据表被划分到多个Data Node分区中,数据在分区中被”striped”: 3.主 ...
- jquery 扩展插件方法
分析插件jquery.countdown.js (function($) { $.fn.countdown = function(options) { // default options var d ...
- mrjob 使用 mongoldb 数据源【转】
最近做的事情是用mrjob写mapreduce程序,从mongo读取数据.我的做法很容易也很好懂,因为mrjob可以支持sys.stdin的读取,所以我考虑用一个python程序读mongo中的数据, ...
- sqlserver中分区函数 partition by的用法
partition by关键字是分析性函数的一部分,它和聚合函数(如group by)不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录, partition by ...
- python之sys模块详解
python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...
- 【Java EE 学习 45】【Hibernate学习第二天】【对象的三种状态】【一对多关系的操作】
一.对象的三种状态. 1.对象有三种状态:持久化状态.临时状态.脱管状态(游离状态) 2.Session的特定方法能使得一个对象从一个状态转换到另外一个状态. 3.三种状态的说明 (1)临时状态:临时 ...