ZMQ_PROXY(3) 0MQ Manual ZMQ_PROXY(3) NAME zmq_proxy - start built-in 0MQ proxy SYNOPSIS int zmq_proxy (void *frontend, void *backend, void *capture); DESCRIPTION The zmq_proxy() function starts the built-in 0MQ proxy in the current ap- plication 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 fron- tend 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, re- ceived 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. Re- quests 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 or EINTR (the 0MQ context associated with either of the specified sockets was termi- nated) or EFAULT (the provided frontend or backend was invalid). EXAMPLE Creating a shared queue proxy. // Create frontend and backend sockets void *frontend = zmq_socket (context, ZMQ_ROUTER); assert (frontend); void *backend = zmq_socket (context, ZMQ_DEALER); assert (backend); // 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 0MQ community. To make a change please read the 0MQ Contribution Policy at http://www.zeromq.org/docs:contributing. 0MQ 4.3.5 10/09/2023 ZMQ_PROXY(3)
NAME | SYNOPSIS | DESCRIPTION | EXAMPLE USAGE | RETURN VALUE | EXAMPLE | SEE ALSO | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zmq_proxy&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>
