前段时间在用mina的时候,一开始采用session.getConfig().setUseReadOperation(true);结合readFutrue.read()同步读取客户端的返回值;使得在发送消息的时候就等候消息返回,但是这种方法并不好,session.getConfig().setUseReadOperation(true)并不会真正的同步。
以下是之前实现的同步读取返回数据的方法
//设置为需要读取数据
session.getConfig().setUseReadOperation(true);
WriteFuture future = session.write(protocolMsgVO);
//等待数据发送完成
future.awaitUninterruptibly();
if(future.isWritten()) {
//等待读取数据
ReadFuture readFuture = session.read();
BaseProtocolMsgVO msgReceive = null;
// 等待数据读取完成 等待20s 如果没有返回 关掉连接
if(readFuture.awaitUninterruptibly(20, TimeUnit.SECONDS)) {
msgReceive = (BaseProtocolMsgVO) readFuture.getMessage();
} else {
log.info("重发次数:" + 1);
session.write(protocolMsgVO);
if(readFuture.awaitUninterruptibly(20, TimeUnit.SECONDS)) {
msgReceive = (BaseProtocolMsgVO) read