Мой асинхронный режим работает наполовину.Вызов выполняется асинхронно, но когда возвращается результат, он не попадает в код, который у меня есть.
Класс загрузочного приложения Spring содержит @EnableAsync
.
@Service
public class MyService() {
private MyClient client;
@Autowired
public MyService(MyClient client) {
this.client = client;
}
public String callHttpService() {
Future<String> asyncResponse = client.submitOrder("test");
String response = null;
if(asyncResponse.isDone()) {
// client call made and result comes back but never comes in here
response = asyncResponse.get();
}
return response;
}
}
@Component
public class MyClient() extends RestClient {
@Async
public Future<String> submitOrder(String request) {
String response;
try {
response = super.invoke(request, HttpMethod.POST);
} catch(RestInvocationException e) {
.....
}
return new AsycResult<>(response);
}
}
I 'мы даже попробовали другой вариант ответа моего клиента, где я делаю: response = new AsyncResult<>(super.invoke(request, HttpMethod.POST)); return response;
Я не понимаю, почему, когда я выполняю вызов и получаю ответ, он не попадает в мой блок .isDone()
.