使用CompletableFuture Java重试请求

我遇到一种情况,我需要调用并行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响应进行响应。

这是处理这种情况的正确方法还是其他方法,以便在访问令牌到期时我可以重试请求

wxy1934 回答:使用CompletableFuture Java重试请求

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3129777.html

大家都在问