【发布时间】:2022-07-15 20:15:18
【问题描述】:
我在我的项目中使用了 Resilience4j Timelimiter。
如果请求耗时超过 10 秒,时间限制器会抛出错误,但不会中断线程。
当调用来自邮递员时,我已经进行了调试和测试,在邮递员中10s后它显示一个异常,但线程仍然执行该方法,然后添加一些打印语句并且它也执行了。
resilience4j中10s后如何取消或中断线程。
class A {
TimeLimiterConfig config = TimeLimiterConfig.custom().cancelRunningFuture(true)
.timeoutDuration(Duration.ofMillis(TimeLimit)).build();
TimeLimiterRegistry timeLimiterRegistry = TimeLimiterRegistry.of(config);
TimeLimiter timeLimiter = timeLimiterRegistry.timeLimiter("APITimelimiter", config);
public Response someMethod() throws Exception {
try {
timeLimiter.executeFutureSupplier(() -> CompletableFuture.supplyAsync(() -> {
return getData();
}));
} catch (Exception e) {
logger.error("Request has crossed the execution time of " + TimeLimit
+ " seconds");
throw new Exception("Your request has crossed the execution time of "+ TimeLimit+" seconds.");
}
}
public UserData getData() {
String jsonData = "";
return jsonData;
}
}
【问题讨论】:
标签: java multithreading resilience4j time-limiting