我遇到一种情况,我需要调用并行http请求来获取数据。 我已经使用CompletableFuture来获取数据,如下所示。
Generictype model = CompletableFuture.supplyAsync(() -> {
return lookupService.fetchData(token);
},taskExecutor)
问题是我正在传递访问令牌,访问令牌的期限很短,例如过期后60秒。
如果令牌过期,我需要调用另一个服务来获取刷新令牌,然后使用此新令牌重试相同的请求。
当令牌在两次并行调用之间到期时,我该如何处理。
我想做的是,当访问令牌过期时,它将引发未经授权的401异常。
我正在尝试在CompletableFuture的异常块中捕获异常,如下所示。
Generictype model = CompletableFuture.supplyAsync(() -> {
return lookupService.fetchData(token);
},taskExecutor)
.exceptionally(exception -> {
String newToken = lookupService.getNewToken(token);
model = lookupService.fetchData(newToken);
return model;
});
当我遇到异常时,它会进入异常块,但请求未正确执行。它以302 SAMEORIGIN响应进行响应。
这是处理这种情况的正确方法还是其他方法,以便在访问令牌到期时我可以重试请求