Java + Resilience4J - 我自己的处理程序的时间限制?

问题描述

关于 Resilience4j 的小问题。

目前,Resilience4J 提出了一个非常好的 TimeLimiter 模式。

有了它,您可以非常轻松地配置出站 http 调用的时间限制。比如我的服务A正在使用http客户端调用服务B,时间限制是等待服务B 1秒。

正确配置后,我们可以看到当服务 B 花费超过 1 秒时,返回一个回退,某种“不再需要等待服务 B”。

我想知道,是否可以为我自己的服务/处理程序配置类似的配置?

我的意思是我想在我自己的服务 A 上设置一个 TimeLimiter。因为我有一个由 5 秒合同定义的 SLA,而不是告诉我所有的客户(“不要等我,如果我需要超过 5 秒”)并让他们在他们的末端配置某种 TimeLimiter。

非常天真,我将 Resilience4J 时间限制器注释放在我自己的处理程序上,并在其中进行了很长的计算,但不起作用。我认为 Resilience4J 时间限制器更适合出站呼叫。

请问可以在我自己的服务 A 上使用相同的机制吗?

谢谢

解决方法

是的,您自己的服务 A 也可以。 但是您的服务必须返回 CompletableFutureMonoFlux,以便 TimeLimiter 可以抛出异常。