c++ - ZMQ 套接字连接超时
问题描述
我正在为 ZMQ (cppzmq) 使用 C++ 绑定,并且我正在尝试使用.setsockopt()
如下 - 方法设置 TCP 套接字的连接超时:
int connectTimeout = 1000;
socket.setsockopt(ZMQ_CONNECT_TIMEOUT, &connectTimeout, sizeof(connectTimeout));
socket.connect(clientConfiguration.uri);
.send()/.recv()
但是,在代码到达套接字上的实际值之前,我没有看到任何事情(抛出异常?) 。只是为了确保套接字有机会抛出我在.connect()
和.send()
方法之间设置了一个睡眠。
根据文档.zmq_connect()
,只需进入READY
-state 而不与端点建立实际连接。所以问题是我应该何时以及如何体验连接超时?
解决方案
所以问题是我应该何时以及如何体验连接超时?
什么时候 ?
好吧,实际上从不直接,因为这只是 ZeroMQ-instances 的内部有限状态机操作方式的 API 公开设置(Context()
这里设置了选定的传输类背后的 API 幕 ISO - OSI- L3 详细信息)。.setsockopt()
如何(如果有的话)?
好吧,还有一些其他.setsockopt()
细节(如果戴上)可能会间接感受到设置ZMQ_CONNECT_TIMEOUT
连接超时的影响。再次,只是间接地,通过修改后的 FSM 行为,即在某种程度上,.Context()
-engine 实例将如何碰巧响应此类事件(完全在内部,在 API 的幕后 - 这就是我们在方法上使用 API 方法的原因关注点分离,不是吗?)。
有关更多详细信息,请参阅:
- 有关的API 详细信息
ZMQ_IMMEDIATE
, - 有关的API 详细信息
ZMQ_RECONNECT_IVL
, - 关于 API 的详细信息
ZMQ_RECONNECT_IVL_MAX
。
(API 版本不断发展,请注意并非所有分布式系统代理都共享相同的 ZeroMQ API 版本。所以最好记住 Zen-of-Zero 并随时重用焦虑设计者的指令#ASSUME NOTHING
。)
预告片奖励:
如果不熟悉 ZeroMQ 工具,可能会发现这 5 秒的内容对 [ ZeroMQ 层次结构在不到 5 秒的时间内] 部分的主要概念差异很有用,
推荐阅读
- python - 如何组合列表并使用条件语句将它们打印出来?Python
- ios - 插入新单元格时,iOS UITableView 删除的单元格内容重新出现
- python - 使用 Pickle 将列表写入文件
- wso2 - 在 WSO2 API Manager 的 Publisher 门户或 API Publisher 中获取用户角色
- html - Flask favicon 无法在 Google Chrome 上运行
- excel - 查找 2 列的总数,然后在 excel 中查找平均值
- apache-spark - Pyspark 错误 - 在 AWS EMR 上找不到压缩编解码器 com.hadoop.compression.lzo.LzoCodec
- ruby - `:|` 在 Ruby 中的作用是什么?
- python - 比较 Numpy 中的负指数和正指数
- powershell - 数据挖掘前景电子邮件正文