2

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

4

2 回答 2

2

通过示例学习基础知识。对于代理,只需使用它,它来自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;
}
于 2013-09-02T14:12:35.947 回答
-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;
}

我丢失消息的原因是我应该在绑定或连接之前调用 setsockopt。

有关 setsockopt 的信息,请参阅 0MQ API 文档:

注意:除 ZMQ_SUBSCRIBE、ZMQ_UNSUBSCRIBE 和 ZMQ_LINGER 之外的所有选项仅对后续的套接字绑定/连接生效。

于 2013-09-13T07:07:07.733 回答