I need to configure retry policy for calling an API via ExecutorCompletionService.
Sample Code:
public void func() throws Exception{
ExecutorService executorService = Executors.newFixedThreadPool(5);
CompletionService<String> completionService = new ExecutorCompletionService<String>(executorService);
List<Future<String>> list = new ArrayList<Future<String>>();
for(int i=0; i<10; i++) {
AsyncTest asyncTest = new AsyncTest();
Future<String> futureString = completionService.submit(asyncTest);
list.add(futureString);
}
while (list.size() > 0) {
Future<String> futureResponse = completionService.take();
System.out.println(futureResponse.get());
list.remove(futureResponse);
}
executorService.shutdown();
}
public class AsyncTest implements Callable<String> {
public String call() throws Exception {
//returns a response from api call
//this is a network call and throws TimeoutException
}
}
What's the best way to implement retry policy for TimeoutException thrown while calling the API?