[英]ZMQ Java - Best practice to clean when exiting
他们建议在ZMQ zguide中始终在任务结束时进行清理。 我对最佳做法有些困惑。
第一
Q1:那么在销毁上下文之前,我需要关闭所有套接字吗?
Q2:那么我需要销毁上下文吗?
查看context.destroy()
我看到它调用linger并在每个套接字上关闭。
Q3:我应该如何终止我的ZMQ资源?
如果我查看jeromq代码,请进行编辑 -我在ZContext.destroy
看到对
destroySocket
(到每个套接字)
s.setLinger( linger );
s.close();
sockets.remove( s );
然后它甚至调用sockets.clear();
和context.term();
Q4:够了吗?
A1:是的,但是...
A2:是的,但是...
A3:遵循ZeroMQ最佳实践,不仅仅依赖于语言绑定
A4:参考号 A3
首先,应该意识到,ZeroMQ具有一组内部架构原则,任何人都不得故意或无意违反。
也就是说,可能还意识到,不同的语言绑定(不是ZeroMQ,而是与内部体系结构规则外部关联的其他一些代码包装器)在编排宽限终止时可能会遇到问题(有些包装器将其隐藏在幕后)因此用户不知道在那里会发生什么)。
无休止地将.bind()
s .bind()
到localhost端口,而陷入.bind()
线程只是资源释放和终止实践不佳可能遇到的一些麻烦。
.close()
.term()
ZMQ上下文实例 广告1) 非阻塞方式, 必须像ZMQ_LINGER
那样适当注意 .setsockopt()
参数,以避免ZMQ_LINGER
,使ZMQ-socket原型在期望对方无休止地等待中可能仍有一些消息要接收,因此在此步骤上要格外谨慎和有条理。 在调用.close()
之前设置所有安全退出参数。 否则,您将失去进入阻止模式的控制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.