gpt4 book ai didi

java - Springboot @Retryable 包含多个异常

转载 作者:行者123 更新时间:2023-11-29 08:29:05 25 4
gpt4 key购买 nike

我已将 @Retryable 放在接口(interface)方法上,现在我需要包含多个异常才能重试。

代码:

 @Retryable(interceptor = "someRetryInterceptor",
include = { SomeException.class, SomeOtherException.class })

这是正确的做法吗?

注意:在someRetryInterceptor中我定义了RetryPolicy。

最佳答案

根据 javadoc 拦截器与其他属性互斥。因此,您必须决定使用拦截器还是包含。

但可以肯定的是:只需对其进行单元测试!@Retryable 制作你的方法注释抛出 SomeExceptionSomeOtherException并看到它。

测试方法之一:假设您正在重试方法

void dummy() {
someObject.someOperation();
}

模拟 someObject (使用 Mockito 或任何其他库)以便 someOperation将抛出 S omeException/SomeOtherException .在测试中验证 someObject.someOperation() 的调用次数

如果你有无限重试(这很少有用)然后测试将挂起,所以这样的测试必须有超时(@Test(timeout=1000))并且你必须在TimeoutException时使测试通过发生。

如果您的重试次数有限,那么您应该验证多少次 someObject.someOperation()在超时前被调用。

注意:该测试必须是 Spring 测试(必须使用 @EnableRetry 注释加载上下文)。否则(如果你把它写成普通单元测试)然后 @Retryable注释将被完全忽略。

关于java - Springboot @Retryable 包含多个异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49772884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com