Есть ли способ настроить Spring Boot API для установки тайм-аута соединения для входящего запроса?

Я развернул свое приложение SpringBoot с высоким трафиком на Wildfly 10. Архитектура сервера для этого приложения - nginx (Angular Application) - ›(обратный прокси) -› wildfly server. Поскольку мы получаем высокий трафик в течение нескольких часов, порт 8080 (порт приложения wildfly) остается на CLOSE_WAIT, потому что nginx закрывает соединение через определенный период времени.

Я хочу настроить приложение Spring Boot для закрытия соединения, если время запроса, скажем, ›более 5 секунд.

Пример:

@GetMapping("test1")
public ResponseEntity test1(){
    return ResponseEntity.ok("TESTED!");
}

@GetMapping("test2")
public ResponseEntity test2() throws InterruptedException{
    Thread.sleep(300000);
    return ResponseEntity.ok("TESTED!");
}

Для метода test2 Get HTTP существует ли способ настроить приложение весенней загрузки / Wildfly / centos для установки тайм-аута соединения для входящего запроса?


person Sagar Saud    schedule 04.08.2020    source источник


Ответы (1)


Вы можете попробовать server.connection-timeout=300000 в своем application.properties.

Из официальной документации:

server.connection-timeout = # Время в миллисекундах, в течение которого соединители будут ожидать другого HTTP-запроса перед закрытием соединения. Если не задан, будет использоваться значение по умолчанию для конкретного контейнера. Используйте значение -1, чтобы указать отсутствие (т. Е. Бесконечное) тайм-аута.

Или вы можете попробовать использовать аннотацию @Transactional и установить для нее такой аргумент:

@Transactional(timeout = 300000)

person liviubiur    schedule 04.08.2020
comment
Это не сработало. server.connection-timeout устарел. Я использую Spring Boot 2.3. - person Sagar Saud; 05.08.2020