2015-10-06 4 views
0

У меня есть базовый клиент, который я использую для проверки своего сервера. Для конфигурации я использую application.jsonКонфигурация клиента spray.io

"spray": { 
    "can": { 
    "client": { 
     "idle-timeout": "120 s", 
     "request-timeout": "180 s" 
    }, 
    "host-connector": { 
     "max-retries": "1", 
     "max-connections": "64" 
    } 
    } 
} 

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

def sendReceive(implicit refFactory: ActorRefFactory, executionContext: ExecutionContext, 
       futureTimeout: Timeout = 60.seconds): SendReceive = 
sendReceive(IO(Http)(actorSystem)) 

Нужно ли явно загружать конфигурацию?

ответ

1

Это заблуждение аспект различных значений тайм-аута Spary, за подробное объяснение см: Understanding Spray Client Timeout Settings

Пару точек относительно определения метода выше, тайм-аут используется только для удовлетворения таймаут требуемого аск сделал транспортному субъекту, это не относится к таймауту запроса для этого соединения. futureTimeout: Timeout = 60.seconds означает, что это значение по умолчанию используется, если оно не указано, а не то, что оно безоговорочно используется.

Вы можете программно настроить requestTimeout, передав HostConnectorSetup либо на уровне хоста, либо на уровне API уровня запроса, поскольку у вас уже есть это в конфигурации spray.can.client, хотя вам не нужно будет вносить дополнительные изменения.