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") == 0); assert (zmq_bind (backend, "tcp://*:5556") == 0); // 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