我正在使用Spring的重试库来重试webservice调用,以防在服务中断或网络超时时发生任何错误。但是,我的代码中始终出现以下错误 - Incorrect number of arguments for type RetryCallback<T,E>; it cannot be parameterized with arguments <Object>
。我实现逻辑的方法返回void,所以我基本上不能让retry调用返回任何东西。请告知我在这里犯了什么错误 -
RetryTemplate retryTemplate = createRetryTemplate(3, 1000);
return retryTemplate.execute(new RetryCallback<Object>() {
@Override
public Object doWithRetry(RetryContext context) throws Exception {
userUpdateService.updateUser(userName, userID);
}
});
答案 0 :(得分:2)
RetryCallback请求两个类型参数,一个返回类型和一个异常类型。
RetryTemplate retryTemplate = createRetryTemplate(3, 1000);
return retryTemplate.execute(new RetryCallback<Object,Exception>() {
@Override
public Object doWithRetry(RetryContext context) throws Exception {
userUpdateService.updateUser(userName, userID);
}
});
答案 1 :(得分:1)
RetryCallback
的{{3}}指定了两种类型,您只指定了一种类型。
第二种类型是您将(可能)抛出的Throwable
衍生物,例如Exception
,您还需要指定:
RetryTemplate retryTemplate = createRetryTemplate(3, 1000);
return retryTemplate.execute(new RetryCallback<Object, Exception>() {
@Override
public Object doWithRetry(RetryContext context) throws Exception {
userUpdateService.updateUser(userName, userID);
}
});
答案 2 :(得分:1)
类型RetryCallback
接受两个泛型参数(返回类型和抛出的异常类型),但是只传递一个。
public interface RetryCallback<T, E extends Throwable> {
T doWithRetry(RetryContext context) throws E;
}
所以你想要像这样实例化它:
new RetryCallback<Object, Throwable>() { //...