关于timeOut超时后是否会回滚的思考
场景: 假设有2个系统,A和B,A系统调用B系统的接口,B系统正确接收到请求,但是由于接口内部业务逻辑复杂,耗时较长。导致A系统那边请求超时,于是A系统就断开了与B系统的连接。那么当A系统开端连接时,B系统能同时感受不到连接断开吗? 如果B系统不能同时感受到,当接口内部逻辑处理完成后需要返回结果进行return时,由于连接已断开,会否出现异常? B系统由于连接断开的异常会否导致接口内部事务的回滚?
环境准备: Macos系统,openjdk11, dubbo(2.5.3版本),springboot
结论:dubbo网络部分使用的netty,当B系统的接口内部逻辑处理完成后,最后会将需要return的内容传递到 Netty的 Nio Worker类 writeFromUserCode 方法里使用 Netty 自己自定义的NioSocketChannel去发送消息到A系统 。再发送之前,会检查channel的状态,由于socket连接已经断开了,此时channel就是不是“connected”状态,netty会把异常消息向外发送,最后被dubbo捕获,但是dubbo只是打印了一个warn日志,就结束了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!