西城 created DIRMINA-1071: --------------------------- Summary: ReadFuture.awaitUninterruptibly(20, TimeUnit.SECONDS) is no use Key: DIRMINA-1071 URL: https://issues.apache.org/jira/browse/DIRMINA-1071 Project: MINA Issue Type: Bug Affects Versions: 2.0.16 Reporter: 西城 Attachments: N8@`F_%~AEU2MYVTE]IG~IY.png
Describe my problem:i want to send message to client for three times, when the first time I send to client,but client doesn't answer ,So I try to send again,When the second time I send,I can receive the answer ,But my core is struck in ReadFuture.awaitUninterruptibly(20, TimeUnit.SECONDS) until cancel.That is my code,Thanks to answer. if (future.isWritten()) { log.debug("成功发送数据" + protocolMsgVO.toByteString()); ReadFuture readFuture = session.read(); BaseProtocolMsgVO msgReceive = null; // 等待数据读取完成 等待10s 如果没有返回 关掉连接 if (readFuture.awaitUninterruptibly(20, TimeUnit.SECONDS)) { msgReceive = (BaseProtocolMsgVO) readFuture.getMessage(); } else { session.getConfig().setUseReadOperation(false); // 设置为不需要读取数据 if(count >= 3){ log.info("重发超过三次,断开连接"); // 关掉连接 session.closeNow(); throw new BusiException("读取设备响应数据超时"); }else{ log.info("重发次数:"+count); session.getConfig().setUseReadOperation(false); // 设置为不需要读取数据 sendCmd(deviceIp, protocolMsgVO, pk_user, openid); } } //重置重发次数 session.setAttribute("count", 0); if (readFuture.getException() != null) { session.getConfig().setUseReadOperation(false); // 设置为不需要读取数据 // 关掉连接 session.closeNow(); throw new BusiException(readFuture.getException().getMessage()); } -- This message was sent by Atlassian JIRA (v6.4.14#64029)