我是zeromq的新手。最近我在zeromq的pub / sub上做了一些测试,我不知道如何在ZeroMQ中使用XPUB和XSUB来实现Pub-Sub网络与代理。希望你的帮助,非常感谢你。
答案 0 :(得分:2)
通过examples了解基础知识。对于代理,只需使用它,它来自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;
}
答案 1 :(得分:-1)
代理:
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;
}
我丢失消息的原因是我应该在bind或connect之前调用setsockopt。
有关setsockopt的信息,请参阅0MQ API文档:
警告:除ZMQ_SUBSCRIBE,ZMQ_UNSUBSCRIBE和ZMQ_LINGER外,所有选项仅对后续套接字绑定/连接生效。