代码之家  ›  专栏  ›  技术社区  ›  kreuzerkrieg

ZMQ套接字连接超时

  •  2
  • kreuzerkrieg  · 技术社区  · 8 年前

    我正在使用c++绑定zmq(cppzmq),并尝试使用 .setsockopt() -方法如下:

    int connectTimeout = 1000;
    socket.setsockopt(ZMQ_CONNECT_TIMEOUT, &connectTimeout, sizeof(connectTimeout));
    socket.connect(clientConfiguration.uri);
    

    但是,我没有看到任何东西(抛出异常?)在代码达到实际值之前发生 .send()/.recv() 在插座上。为了确保插座有机会抛出,我在 .connect() .send() 方法。

    根据文件 .zmq_connect() 刚进入一个 READY -不与终结点建立实际连接的状态。所以问题是我应该在什么时候以及如何经历连接超时?

    1 回复  |  直到 8 年前
        1
  •  3
  •   user3666197    8 年前

    所以问题是 何时何地 我应该经历连接超时吗?

    什么时候?

    嗯,实际上 从不直接 因为这只是ZeroMQ的API公开设置 Context() -实例的内部 f 因特- S 泰特 作案手法(这里是 .setsockopt() 设置API帘幕ISO-OSI-L3详细信息后面的选定传输类)。

    怎么用? (如果有的话) ?

    嗯,还有其他的 .setsockopt() 细节,如果穿上它,可能会间接地感觉到布景的影响 ZMQ_CONNECT_TIMEOUT 连接超时。在这里,仅仅是间接地,通过修改fsm行为,即在某种程度上,如何 .Context() -引擎实例将碰巧响应这样的事件(所有这些都是纯内部的,在api的幕后——这就是为什么我们在方法上使用api方法来分离关注点,不是吗?).

    更多详情请参考:

    • 有关的API详细信息 ZMQ_IMMEDIATE ,
    • 有关的API详细信息 ZMQ_RECONNECT_IVL ,
    • 有关的API详细信息 ZMQ_RECONNECT_IVL_MAX .
      (API版本不断发展,请注意并非所有 代理共享相同的ZeroMQ API版本。所以最好记住Zero的禅宗,可以随意重复使用焦虑的设计师的指令 #ASSUME NOTHING )

    预告片奖金:

    如果您不熟悉zeromq工具,那么您可能会发现这5秒钟内阅读到[ ZeroMQ hierarchy in less than a five seconds 部分

    enter image description here

    ( courtesy Martin Sústrik, co-father of both ZeroMQ + nanomsg. 尊敬!)