mina框架采用可重入锁实现消息重发

本文介绍了在mina框架下,如何使用可重入锁ReentrantLock和Condition来实现消息的同步读取及重发。通过创建包含锁和条件的实体类,在发送消息时存入并发哈希映射,并在接收到消息时设置锁的值并通知读取,从而达到消息同步及重发的目的。这种方法借鉴了消息队列中的通知等待机制。
摘要由CSDN通过智能技术生成

前段时间在用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值