I am a newcomer to zeromq. Recently I did some tests on pub/sub of zeromq, and I don\'t konw how to implement Pub-Sub Network with a Proxy by using XPUB and XSUB in ZeroMQ. Hope
Learn the basics by working through the examples. For the proxy, just use this, it's from msgqueue.cpp
int main (int argc, char *argv[])
{
zmq::context_t context(1);
zmq::socket_t frontend (context, ZMQ_XSUB);
frontend.bind("tcp://*:5559");
zmq::socket_t backend (context, ZMQ_XPUB);
zmq_bind (backend, "tcp://*:5560");
zmq_proxy (frontend, backend, NULL);
return 0;
}
Proxy:
int main (int argc, char *argv[])
{
zmq::context_t context(1);
zmq::socket_t frontend (context, ZMQ_XSUB);
....//set hwm
frontend.bind("tcp://*:5559");
zmq::socket_t backend (context, ZMQ_XPUB);
....//set hwm
zmq_bind (backend, "tcp://*:5560");
zmq_proxy (frontend, backend, NULL);
return 0;
}
The reason I lost message is that I should have called setsockopt before bind or connect.
Refer to 0MQ API documentation for setsockopt:
Caution: All options, with the exception of ZMQ_SUBSCRIBE, ZMQ_UNSUBSCRIBE and ZMQ_LINGER, only take effect for subsequent socket bind/connects.