Я работаю над приложением java для веб-сокетов, в котором я буду ожидать ответа от службы.Я использовал ExecutorService
& FutureTask
для отправки задач.Мне нужно постоянно нажимать на сервис, пока я не получу ответ. Если я не получу ответ в течение 5 минут, мне нужно отменить сервисный вызов и перейти к следующему заданию.Я вызываю код в цикле while, я не знаю, как остановить выполнение через 5 минут.Так что из-за проблемы с памятью.
Я пытаюсь это POC на сервере JBoss.Я создаю службу executor и отправляю запрос.
Первый вызов:
ExecutorService executorService = Executors.newFixedThreadPool(50);
Future<UserData> futureResult = executorService
.submit(new WebSocketPoolingThread(request));
WebSocketPoolingThread
- это вызываемый класс, где я буду вызывать сервер, который ожидает ответ
public List<Response> call() throws Exception {
//call server till get success response
//if not stop the call in 5 mins
}
И я получаю ответ,
if (futureData.isDone()){
UserData = futureData.get();
}
На данный момент я вызываю «Первый вызов» в цикле while.Мне нужно остановить это на основе вышеуказанного условия.Пожалуйста, помогите мне или предложите мне другой подход для достижения этой цели.