Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js ZMQ防止发送";timedout“;信息_Node.js_Zeromq - Fatal编程技术网

Node.js ZMQ防止发送";timedout“;信息

Node.js ZMQ防止发送";timedout“;信息,node.js,zeromq,Node.js,Zeromq,我想知道在一段时间没有发送消息后,如何“中止”该消息 情况很简单: 1) 客户端连接到服务器 2) 服务器坏了 3) 客户端发送消息,这里没有问题,因为Zmq在本地将消息排队(因此“发送”操作成功) 4) 假设我已经设置了RCVTIMEO,我得到了超时 5) 在我得到超时后,我不再希望发送消息,但一旦服务器再次启动,Zmq将传输消息。我怎样才能预防它 我想阻止这一点的原因是,一旦我得到超时,我就用失败消息回复我的客户(例如“由于超时,请求无法处理”),如果最终他的请求会被传输和处理,这将是一个真

我想知道在一段时间没有发送消息后,如何“中止”该消息

情况很简单: 1) 客户端连接到服务器 2) 服务器坏了 3) 客户端发送消息,这里没有问题,因为Zmq在本地将消息排队(因此“发送”操作成功) 4) 假设我已经设置了RCVTIMEO,我得到了超时 5) 在我得到超时后,我不再希望发送消息,但一旦服务器再次启动,Zmq将传输消息。我怎样才能预防它

我想阻止这一点的原因是,一旦我得到超时,我就用失败消息回复我的客户(例如“由于超时,请求无法处理”),如果最终他的请求会被传输和处理,这将是一个真正的问题

希望我的问题是清楚的。。。谢谢

步骤1)设置
aClientSOCKET
实例
ZMQ\u LINGER
参数,以便在即将进行的套接字拆卸操作期间不花费任何时间重新发送任何排队的消息(这与现代高性能/低延迟分布式消息传递系统的设计相当一致——事情会出错,经常会出错,因此,事实上,要处理好这一点,而不是浪费时间与无法避免的问题作斗争……)

步骤2)强制
.close()
放弃套接字


步骤3)如果需要,重新安装另一个套接字/通信手段或使用另一个事先准备好的手段(类似于双星故障恢复阴影)解决{“主要”|“观察到”情况后的预期应用程序处理-连接对等握手超时。

我知道取消/中止消息的唯一方法是关闭整个套接字。这样做的主要问题是,如果套接字的发送队列中有其他消息您确实想发送出去,它们也会被取消/中止。是的,我读过关于关闭套接字的选项,希望有更好的解决方案。。。