Как правильный способ прервать HTTP -запрос?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как правильный способ прервать HTTP -запрос?

Сообщение Anonymous »

У меня есть серверная программа, где при получении запроса я делаю вызов RPC через HTTP, на который я не могу потратить больше, чем, скажем, 10 мс. Если запрос не завершается в течение 10 мс, мне нужно прервать, отметьте вызов RPC как неудачный и продолжить с остальной обработкой запросов. Библиотека (AFAIK) не предоставляет никакого способа прервать запрос, если она не завершена в течение некоторого времени. Есть несколько тайм -аутов, например, Тайм-аут сокета, подключение к Timeout и т. Д. Но ни один из них не обеспечивает тайм-аут на общую продолжительность запроса. ScheduledExecutorService httpHardTimeoutScheduler = Executors.newScheduledThreadPool(totalTokenCount);

...
...

public static void postWithHardTimeout(String url, byte[] bytes, ContentType contentType, FutureCallback callback) {
final SimpleHttpRequest request = SimpleRequestBuilder.post(url).build();
request.setBody(bytes, contentType);

Future future = send(request, callback);

httpHardTimeoutScheduler.schedule(() -> {
if (!future.isDone() && !future.isCancelled()) {
future.cancel(true);
}
}, HARD_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
}

< /code>
Это работает, но я вижу увеличение задержек в запросах, которые добиваются успеха, и я пытаюсь отладить его. Моя гипотеза состоит в том, что, поскольку клиент просто перестает слушать, сервер продолжает ждать ответа от клиента и сохраняет и открывает соединение надолго. Должен ли клиент отправлять первое пакет на сервер, чтобы сервер останавливался в ожидании клиента?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... tp-request
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»