如何在ZeroMQ(C ++)中使用XPUB和XSUB实现Pub-Sub网络与代理?

时间:2013-09-02 10:19:17

标签: c++ zeromq

我是zeromq的新手。最近我在zeromq的pub / sub上做了一些测试,我不知道如何在ZeroMQ中使用XPUB和XSUB来实现Pub-Sub网络与代理。希望你的帮助,非常感谢你。

2 个答案:

答案 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外,所有选项仅对后续套接字绑定/连接生效。