前言
dubbo
支持对rpc方法设置超时时间,本文使用dubbo3
超时时间配置
dubbo超时时间配置文档
dubbo超时时间配置文档可以参考
arduino
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/framework/timeout/
全局配置
如果是消费者的话
yaml
dubbo:
consumer:
timeout: 5000
生产者的话
yaml
dubbo:
provider:
timeout: 5000
生产者配置
less
@Slf4j
@Component
@DubboService(timeout = 15000)
public class UserServiceImpl implements UserService {
private static Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);
@Override
public String getData(String data) {
logger.info("=============请求数据为:{{}}", data);
try {
Thread.sleep(6 * 1000L);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return data + ":success";
}
}
消费者单个方法配置
less
@DubboReference(timeout = 7000,
methods = {
@Method(name = "save", timeout = 15000)
})
private UserService userService;
超时时间顺序
超时时间设置,生效的优先级
设置在方法上的优先级最高,设置在服务上的优先级次之,全局配置的优先级最次
消费者和生产者都配置了超时时间,优先级关系
在消费者和生产者同级配置中,消费者优先级比生成者优先级高
在消费者和生成者不同级配置中,级别高的优先级高
总结
dubbo
支持对rpc方法设置超时时间