我正试图找出一种方法,使用 Hazelcast IExecutorService实现异步重试机制,而无需递归调用:
递归解决方案如下:
Callable task = ...
private sendToExecutor(){
Future future = submitToExecutorService(task);
((ICompletableFuture<ActionReply>) future).andThen(callback);
}
回调是ExecutionCallback:
@Override
public void onResponse(ActionReply response) {
// normal stuff
}
@Override
public void onFailure(Throwable t) {
// re-send if possible
if(numRetries < max_retries){
sendToExecutor();
}
}
我很难找到一个不涉及递归的好解决方案。任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
创建一个实现Future
的包装器类,并实现应该捕获get
的{{1}}方法。请注意,您需要限制重试次数。如果超过该限制意味着您的群集存在一些主要问题。
RetryableHazelcastException