[英]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.