SocketChannelããããã³ã°ã¢ã¼ãã®ã¿ã¤ã ã¢ã¦ãè¨å®ãè¦ã¤ãããªãã¦è«¦ãã
Tokyo Tyrantæ¥ç¶æ©è½ãä½ã£ã¦ã¦ãå½åã¯memcachedã¯ã©ã¤ã¢ã³ãã使ã£ã¦ããã ãã©ããã¼ä¸è¦§åå¾ã¨ãè²ã 使ããããªã£ã¦ãã©ãããªãTokyo Tyrantç¬èªãããã³ã«ã®æ¹ãéãããã¨ãè¥å¹²æ´èµ°æ°å³ã«ã¯ã©ã¤ã¢ã³ããä½ã£ã¦ãããã¿ã¤ãã«éãã¯ã¾ã£ãã®ã§ã¾ã¨ãã¦ããã
ããã©ã¼ãã³ã¹éè¦ã®ããã°ã©ã æ¸ããªãnio使ãã ãJK
â¦ã¨ã大ãã¦æ¤è¨ããã«SocketChannel使ã£ã¦æ¸æ¥ã ããã
éä¸ã§ãã¿ã¤ã ã¢ã¦ãè¨å®ãã¦ãã¼ããã¾ã¼ãã¡ããã¨Javadoc調ã¹ããããã ããã¾ã¼å¾ã§ãããããã¨æ¾ç½®ã
大ä½åããã¨ããã§ãããæ¢ãã¦ã¿ãã¨ç¡ããããããsetTimeout()ã£ã½ãä½ããå
¨ç¶ç¡ãï¼ï¼ãã¼ãâ¦
Javadocè¦ã¦ãè¦ããããªãããããå
çã«èãã¨SocketChannelã®Connectionã¿ã¤ã ã¢ã¦ãã¯ãã³ããããã³ã°ã ã£ããã§ãããï¼ã£ã¦æ¸ãã¦ããã
ããã©ããã¼ã¨æãã¤ã¤ããã³ããããã³ã°ã§finishConnectã¡ã½ããå¼ã³ã¤ã¤Thread.sleepã§å¾
ã£ã¦å¤å®ããã ããããã°ã©ã ãæ¸ãâ¦
ã£ã¦ãã³ã¬å
¨éä¿¡ã§æ¸ãã®ï¼ï¼ï¼ãã¼ãããããå
çã§è¦ã¤ããã®ã£ã¦ãConnectionãã¿ã¤ã ã¢ã¦ãã£ã¦æ¸ãã¦ãã£ãâ¦ãã¼ã ãï¼ãã£ã¨æ®éã®èªã¿è¾¼ã¿å¾
ã¡ã¯ãã£ã¨ç°¡åãªã¤ãããããã ããã£ã¨ï¼ï¼ï¼
â¦ç¡ãã£ãorz
æ´ã«æç´ã£ã¦ããååã«SocketChannel#socket().setSoTimeout()ãæãããã試ãã¦è¦ããå¹ããã
spymemcachedã®ã½ã¼ã¹è¦ãã¨ãã«SocketChannelã£ã¦åèªããã£ãäºãæãåºããè¦ã¦ã¿ãã¨å ¨é¨ãã³ããããã³ã°ã§æ¸ãã¦ããâ¦
ã¾ã¼ãspymemcachedã®æ¹æ³ãè¦ã¦ãã¯â¦åèã«ããã°è¯ããã¨ãæã£ããã ãã©ãã§ãããã¼ã¿ã®ã¨ãã¯Streamã®ã¾ã¾ãã¼ã¿æ¸¡ãããã£ããã§ãã©ã¤ãã©ãªå
ã ããªãã¨ããããå¼ã³åºãå
ã®å¤é¨ããã°ã©ã ã«ãã³ããããã³ã°ã®ã¾ã¾æ¸¡ãã¨ãããå¾ãã¨æãæ«æã
çµå±ãå
¨é¨Socketã§æãç´ãã¾ãããâ¦
ä¸ç¬è«¦ãããã¨æªéã®èªæãé ããããããèªã¿è¾¼ã¿å¾ ã¡ã«ãªã£ããã¹ã¬ãã䏿¬ï¼ã³ãã¯ã·ã§ã³ä¸æ¬ãæ°¸é ã«çµäºã¨ãã¦ã§ãã¢ããªã§ã¯ããå¾ãªãã®ã§ããã§è©¦åçµäºãæ®å¿µã
ã¡ãªã¿ã«Socketã®å ´åã¯
- é常ã®èªã¿è¾¼ã¿å¾ ã¡ï¼Socket#setSoTimeout(int)
- æ¥ç¶æï¼Socket#connect(SocketAddress,int)
åèï¼Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle
ã§ã¿ã¤ã ã¢ã¦ããæå¹ã«ãªãã¾ããã
ããããã³ãã«ããããã³ã°ã¢ã¼ãã§ã¿ã¤ã ã¢ã¦ãè¨å®ç¡ããªãå®éç¨ã§å
¨ç¶ä½¿ããªãç¡ããï¼
大ä½ããããã³ã°åä½ãããæ§Socketã§ã§ããã®ã«nioã§ã§ããªãã¨ãããããï¼
ã¨ã¯ã¾ã æã£ã¦ãã®ã§ããããåãã®æ¹ãããæãã¦é ããã¨ãããããã§ãã