Как установить постоянное HTTP-соединение с помощью Spray-Client

Я пытаюсь запросить постоянное HTTP-соединение с использованием библиотеки Scala Spray-client, так что клиент должен установить соединение один раз, а затем он может выполнять несколько вызовов в одном и том же соединении.

Я не могу найти информацию об этом на странице документации Spray.


person emotionull    schedule 03.12.2015    source источник


Ответы (1)


Я думаю, что по умолчанию спрей-клиент будет повторно использовать соединения, где это возможно.

По умолчанию соединения, которые не используются в течение 60 секунд, будут разорваны клиентом.

Из справочной конфигурации спрея:

# The time after which an idle connection will be automatically closed.
# Set to `infinite` to completely disable idle timeouts.
spray.client.idle-timeout = infinite

Если мы отключим тайм-ауты простоя, наши соединения останутся активными навсегда, если только удаленный сервер не настроен на уничтожение простаивающих соединений после некоторого тайм-аута (вероятно, это так, но спрей-клиент должен убедиться, что мы всегда можем получить новое соединение, соблюдая ограничение ниже).

Мы можем ограничить размер пула Host Connector до 1, чтобы получить желаемое поведение (одно соединение на хост):

# The maximum number of parallel connections that an `HttpHostConnector`
# is allowed to establish to a host. Must be greater than zero.
spray.can.host-connector.max-connections = 1

Это будет означать, что если мы отправим второй запрос до того, как наш первый запрос получит ответ, второй не будет отправлен, пока первый не будет завершен. Чтобы отправлять несколько запросов по одному соединению, не дожидаясь завершения первого, мы можем включить конвейерную обработку.

# If this setting is enabled, the `HttpHostConnector` pipelines requests
# across connections, otherwise only one single request can be "open"
# on a particular HTTP connection.
spray.can.host-connector.pipelining = off
person rahilb    schedule 03.12.2015