From 597cc5edd624525563e6549dc0057eca2a51c81d Mon Sep 17 00:00:00 2001 From: Micah Anderson Date: Tue, 11 Nov 2014 13:30:46 -0500 Subject: upgrade to new version --- doc/zmq_proxy.html | 852 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 852 insertions(+) create mode 100644 doc/zmq_proxy.html (limited to 'doc/zmq_proxy.html') diff --git a/doc/zmq_proxy.html b/doc/zmq_proxy.html new file mode 100644 index 0000000..2ade206 --- /dev/null +++ b/doc/zmq_proxy.html @@ -0,0 +1,852 @@ + + + + + +zmq_proxy(3) + + + + + +
+
+

SYNOPSIS

+
+

int zmq_proxy (const void *frontend, const void *backend, const void *capture);

+
+
+
+

DESCRIPTION

+
+

The zmq_proxy() function starts the built-in ØMQ proxy in the current +application thread.

+

The proxy connects a frontend socket to a backend socket. Conceptually, data +flows from frontend to backend. Depending on the socket types, replies may flow +in the opposite direction. The direction is conceptual only; the proxy is fully +symmetric and there is no technical difference between frontend and backend.

+

Before calling zmq_proxy() you must set any socket options, and connect or +bind both frontend and backend sockets. The two conventional proxy models are:

+

zmq_proxy() runs in the current thread and returns only if/when the current +context is closed.

+

If the capture socket is not NULL, the proxy shall send all messages, received +on both frontend and backend, to the capture socket. The capture socket should +be a ZMQ_PUB, ZMQ_DEALER, ZMQ_PUSH, or ZMQ_PAIR socket.

+

Refer to zmq_socket(3) for a description of the available socket types.

+
+
+
+

EXAMPLE USAGE

+
+
+

Shared Queue

+

When the frontend is a ZMQ_ROUTER socket, and the backend is a ZMQ_DEALER +socket, the proxy shall act as a shared queue that collects requests from a +set of clients, and distributes these fairly among a set of services. +Requests shall be fair-queued from frontend connections and distributed evenly +across backend connections. Replies shall automatically return to the client +that made the original request.

+
+
+

Forwarder

+

When the frontend is a ZMQ_XSUB socket, and the backend is a ZMQ_XPUB socket, +the proxy shall act as a message forwarder that collects messages from a set +of publishers and forwards these to a set of subscribers. This may be used to +bridge networks transports, e.g. read on tcp:// and forward on pgm://.

+
+
+

Streamer

+

When the frontend is a ZMQ_PULL socket, and the backend is a ZMQ_PUSH socket, +the proxy shall collect tasks from a set of clients and forwards these to a set +of workers using the pipeline pattern.

+
+
+
+
+

RETURN VALUE

+
+

The zmq_proxy() function always returns -1 and errno set to ETERM (the +ØMQ context associated with either of the specified sockets was terminated).

+
+
+
+

EXAMPLE

+
+
+
Creating a shared queue proxy
+
+
//  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);
+
+
+
+ +
+

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.

+
+
+
+

+ + + -- cgit v1.2.3