ZeroMQ介面函式之 :zmq_proxy – 開始ZMQ內建代理
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
翻譯:風波
mail : [email protected]