【问题标题】:How do I implement multiple sockets with ZeroMQ?如何使用 ZeroMQ 实现多个套接字?
【发布时间】:2021-03-20 19:08:08
【问题描述】:

我有这个实现来创建一个套接字:

if (gctx == nullptr)
    {
        gctx = zmq_ctx_new();
        gsock = zmq_socket(gctx, ZMQ_REQ);
    }

    snprintf(url, sizeof(url), "wsd:///tmp/hfg/%s", name);
    int rc = zmq_connect(gsock, url);
    if (rc != 0)
        printf("error connect %s: %s\n", url, zmq_strerror(zmq_errno()));

    return rc;

但我希望能够创建多个套接字,而不仅仅是一个。这是怎么做到的?我还需要多个上下文吗?我的意思是每个套接字都有一个上下文。

【问题讨论】:

标签: c sockets c++11 zeromq


【解决方案1】:

我还需要多个上下文吗?

不,你不需要。

这是怎么做到的?

gSock1 = zmq_socket( gCTX, ZMQ_REQ ); // 1st REQ-uester
gSock2 = zmq_socket( gCTX, ZMQ_REQ ); // 2nd
gSock3 = zmq_socket( gCTX, ZMQ_PUB ); // 1st PUB-lisher
gSock4 = zmq_socket( gCTX, ZMQ_PUB ); // 1st PUB-lisher

就像根据需要分配尽可能多的 Socket()-class 实例(或 zmq_socket() 调用)一样简单。默认的 Context()-instance,主要的消息传递处理引擎,可能会保持“共享”状态,或者可以根据需要增加其 IO 线程数和/或微调它的其他配置细节根据需要,甚至在需要时将处理工作负载拆分到多个 Context()-instances 中。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多