我需要使用删除方法在火中调用休息端点并忘记时尚。我不在乎结果。我正在尝试使用 AsyncRestTemplate 但未调用服务器端。如果我切换到 RestTemplate 一切正常。然后我注意到当我等待回复时
AsyncRestTemplate template = new AsyncRestTemplate();
ListenableFuture<ResponseEntity<String>> exchange = template.exchange(
url,
HttpMethod.DELETE,
new HttpEntity<Object>(headers),
String.class
);
exchange.get();
它也在工作。调用 PUT 端点没有任何问题(不必调用 get() 方法)。然后,我尝试使用超时,因为我不想等待响应并使用
try {
exchange.get(1, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
//dirty hack
}
在我的机器上,如果我设置 1 毫秒超时,那么端点被调用的可能性为 50%。在 50 毫秒时,它获得了 100% 的机会......
有什么想法有什么问题吗?
编辑:
我也试过
CompletableFuture.runAsync(() -> {
try {
exchange.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
});
这已经奏效了。
AsyncRestTemplate template = new AsyncRestTemplate(
new ConcurrentTaskExecutor(Executors.newCachedThreadPool())
);
不调用 get() 方法不起作用。