如何通过 jcabi 对@RetryOnFailure 执行新操作
How to perform new operation on @RetryOnFailure by jcabi
我正在使用 jcabi-aspects 重试连接到我的 URL http://xxxxxx:8080/hello 直到连接成功 back.As 你知道 jcabi 的 @RetryOnFailure 有两个字段尝试和延迟。
我想在jcabi上执行attempts(12)=expiryTime(1 min=60000 millis)/delay(5 sec=5000 millis)这样的操作@RetryOnFailure.How 我要做什么 this.The 代码片段如下。
@RetryOnFailure(attempts = 12, delay = 5)
public String load(URL url) {
return url.openConnection().getContent();
}
您选择的库 (jcabi
) 没有此功能。但幸运的是,来自 Spring-Batch 的非常方便的 RetryPolicies 已被提取(因此您可以单独使用它们,而无需批处理):
您可以从那里使用的众多 类 之一是 TimeoutRetryPolicy:
RetryTemplate 模板 = new RetryTemplate();
TimeoutRetryPolicy policy = new TimeoutRetryPolicy();
policy.setTimeout(30000L);
template.setRetryPolicy(policy);
Foo result = template.execute(new RetryCallback<Foo>() {
public Foo doWithRetry(RetryContext context) {
// Do stuff that might fail, e.g. webservice operation
return result;
}
});
整个 spring-retry 项目非常易于使用且功能齐全,如 backOffPolicies、监听器等
您可以组合两个注释:
@Timeable(unit = TimeUnit.MINUTE, limit = 1)
@RetryOnFailure(attempts = Integer.MAX_VALUE, delay = 5)
public String load(URL url) {
return url.openConnection().getContent();
}
@RetryOnFailure
will retry forever, but @Timeable
马上停止
我正在使用 jcabi-aspects 重试连接到我的 URL http://xxxxxx:8080/hello 直到连接成功 back.As 你知道 jcabi 的 @RetryOnFailure 有两个字段尝试和延迟。
我想在jcabi上执行attempts(12)=expiryTime(1 min=60000 millis)/delay(5 sec=5000 millis)这样的操作@RetryOnFailure.How 我要做什么 this.The 代码片段如下。
@RetryOnFailure(attempts = 12, delay = 5)
public String load(URL url) {
return url.openConnection().getContent();
}
您选择的库 (jcabi
) 没有此功能。但幸运的是,来自 Spring-Batch 的非常方便的 RetryPolicies 已被提取(因此您可以单独使用它们,而无需批处理):
您可以从那里使用的众多 类 之一是 TimeoutRetryPolicy:
RetryTemplate 模板 = new RetryTemplate();
TimeoutRetryPolicy policy = new TimeoutRetryPolicy();
policy.setTimeout(30000L);
template.setRetryPolicy(policy);
Foo result = template.execute(new RetryCallback<Foo>() {
public Foo doWithRetry(RetryContext context) {
// Do stuff that might fail, e.g. webservice operation
return result;
}
});
整个 spring-retry 项目非常易于使用且功能齐全,如 backOffPolicies、监听器等
您可以组合两个注释:
@Timeable(unit = TimeUnit.MINUTE, limit = 1)
@RetryOnFailure(attempts = Integer.MAX_VALUE, delay = 5)
public String load(URL url) {
return url.openConnection().getContent();
}
@RetryOnFailure
will retry forever, but @Timeable
马上停止