原创:Java派(微信公众号:Java派),欢迎分享,转载请保留出处。
前言
Dubbo
是阿里开源的RPC框架,因为他基于接口开发支持负载均衡、集群容错、版本控制等特性,因此现在有很多互联网公司都在使用Dubbo。
本文主要解决使用超时设置以及处理进行分析,Dubbo有三个级别的超时设置分别为:
- 针对方法设置超时时间
- 在服务方设置超时时间
- 在调用方设置超时时间
具体设置方法可参考Dubbo的官方文档。Dubbo调用超时后会发生啥情况呢?目前了解的会有两种情况:
- 客户端会收到一个
TimeoutException
异常 - 服务端会收到一个警告
The timeout response finally returned at xxx
看起来还蛮正常的,但是实际上会有这样问题:调用超时后服务端还是会继续执行,该如何处理呢?
为了演示超时的情况,先做了个服务:
@Service(version = "1.0")
@Slf4j
public class DubboDemoServiceImpl implements DubboDemoService {
public String sayHello(String name) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
String result = "hello: " + name;
log.info("Result: {}" , result);