Commit 96bcc9e6 authored by Pieter Hintjens's avatar Pieter Hintjens

Small improvements to zmq_device(3) page

* Clarified broker model and proxy model
* Added example of proxy model
parent 13f3481e
...@@ -31,16 +31,13 @@ Before calling _zmq_device()_ you must set any socket options, and connect or ...@@ -31,16 +31,13 @@ Before calling _zmq_device()_ you must set any socket options, and connect or
bind both frontend and backend sockets. The two conventional device models bind both frontend and backend sockets. The two conventional device models
are: are:
*proxy*:: * proxy model - accept inward connections to frontend socket (by binding it to
bind frontend socket to an endpoint, and connect backend socket to an endpoint), and make onward connections through backend socket (connecting
downstream components. A proxy device model does not require changes to to endpoints on other nodes). A proxy device model can fit well into an
the downstream topology but that topology is static (any changes require existing topology.
reconfiguring the device). * broker model - accept connections on both frontend and backend sockets (by
*broker*:: binding both to endpoints). A broker device model creates a star topology
bind frontend socket to one endpoint and bind backend socket to a second where nodes can come and go at any time.
endpoint. Downstream components must now connect into the device. A
broker device model allows a dynamic downstream topology (components can
come and go at any time).
_zmq_device()_ runs in the current thread and returns only if/when the current _zmq_device()_ runs in the current thread and returns only if/when the current
context is closed. context is closed.
...@@ -112,6 +109,21 @@ assert (zmq_bind (backend, "tcp://*:5556") == 0); ...@@ -112,6 +109,21 @@ assert (zmq_bind (backend, "tcp://*:5556") == 0);
zmq_device (ZMQ_QUEUE, frontend, backend); zmq_device (ZMQ_QUEUE, frontend, backend);
---- ----
.Creating a pubsub proxy
----
// Create frontend and backend sockets
void *frontend = zmq_socket (context, ZMQ_SUB);
assert (backend);
void *backend = zmq_socket (context, ZMQ_PUB);
assert (frontend);
// Connect frontend to publisher
assert (zmq_bind (frontend, "tcp://192.68.55.112:4444") == 0);
// Bind backend to TCP port
assert (zmq_bind (backend, "tcp://*:5556") == 0);
// Start a forwarder device
zmq_device (ZMQ_FORWARDER, frontend, backend);
----
SEE ALSO SEE ALSO
-------- --------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment