求助:关于Java nio

xrealx 2016-11-09 05:48:42
我们这边有个java socket server,该服务可使用原生NIO 或 netty 4.1.5
它用于其他各系统的MQ网关,其它系统向其发送包 他负责校验和往MQ写入

现在有个问题是,有一个WEB应用,PHP的,向其发送数据后,因为其不需要知道该server处理结果,所以就直接发送后close了socket通讯。但由于socket server端压力问题,导致没有能在socket通道关闭前 及时从缓冲区读取数据,从而在真正读的时候发现socket已经关闭了 无法读取到数据并导致大量的ClosedChannelException。
是否有办法可以解决这种 前端无法保持连接 发送数据完成后马上要断开导致的服务器在压力巨大的情况下丢失大量数据?

首先该问题可以用nio 2.0 aio 移步非阻塞IO解决,但是目前希望在原生nio1.0或者 netty4.1.5的基础上解决呢?

目前有的思路是拦截 客户端关闭socket时 底层进行的4次握手,在其之前先进行读取,不过没有办法在nio1.0或netty4.1.5上实现。

所以来求助一下 如何解决?
...全文
146 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2016-11-12
  • 打赏
  • 举报
回复
考虑用UDP传输。UDP协议没有连接,单向传输

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧