如何将Spring Retry与AsyncRestTemplate集成

时间:2016-03-07 05:05:25

标签: java spring spring-retry spring-async

如何将Spring RetryAsyncRestTemplate的外部通话相结合?如果不可能,还有另一个支持它的框架吗?

我的用例:

public void doSomething() throws ExecutionException, InterruptedException {

    ListenableFuture<ResponseEntity<String>> future = asyncRestTemplate.getForEntity("http://localhost/foo", String.class);

    // do some tasks here

    ResponseEntity<String> stringResponseEntity = future.get(); // <-- How do you retry just this call?

}

你如何重试这个future.get()电话?如果外部服务返回404,我想避免再次调用这些任务,只是重试外部调用?我不能用future.get()包裹retryTemplate.execute(),因为它实际上不会再调用外部服务。

1 个答案:

答案 0 :(得分:0)

您必须将整个In [149]: all([any([compare_clusters(ai, bi) for ai in A]) for bi in B]) Out[149]: True (或至少模板操作并获取)包装在重试模板中。

修改

您可以在未来添加doSomething,而不是致电get()。像这样......

ListenableFutureCallback