나는 에 삭제 방법으로 나머지 끝점을 호출해야하며 패션을 잊어 버린다. 나는 결과에 관심이 없다. AsyncRestTemplate을 사용하려고하는데 서버 측이 호출되지 않습니다. RestTemplate으로 전환하면 모든 것이 작동합니다. 은 그럼 내가 응답AsyncRestTemplate가 끝점을 DELETE하지 않는다.
AsyncRestTemplate template = new AsyncRestTemplate();
ListenableFuture<ResponseEntity<String>> exchange = template.exchange(
url,
HttpMethod.DELETE,
new HttpEntity<Object>(headers),
String.class
);
exchange.get();
을 기다릴 때 그것은 또한 작동하고 있음을 발견했습니다. PUT 끝점 호출은 아무 문제없이 작동합니다 (get() 메서드를 호출 할 필요가 없음). 그런 다음, 나는 응답을 기다리고 싶지 않기 때문에 시간 제한을 사용하려고 내가 엔드 포인트가 호출되는 것을 50 %의 확률이 1 밀리 초 시간 제한을 설정하면 내 컴퓨터에
try {
exchange.get(1, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
//dirty hack
}
을 사용했다. 50 millis에서 너무 100 % 기회를 얻습니다 ...
어떤 아이디어가 문제입니까?
편집 :
는 또한
일했다CompletableFuture.runAsync(() -> {
try {
exchange.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
});
을 시도했다.
AsyncRestTemplate template = new AsyncRestTemplate(
new ConcurrentTaskExecutor(Executors.newCachedThreadPool())
);
get() 메서드를 호출하지 않아도 작동하지 않았습니다.
질문을 편집했습니다. 이것이 무슨 뜻인지 아시나요? 내 주요 목표는 PUT 메서드 끝점을 호출 할 때 작동하는 결과를 신경 쓰지 않는 것입니다. 작동하는 get()을 호출하지 않고 간단한 AsyncRestTemplate. 하지만 삭제 방법이 아닙니다. – kqr