2015-10-06 152 views
0

我有一個基本的客戶端,我用它來測試我的服務器。對於配置我使用application.jsonspray.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表示如果沒有提供,則使用此默認值,而不是無條件使用。

您可以通過將HostConnectorSetup傳遞給主機或請求級別的API來以編程方式配置requestTimeout,因爲您的spray.can.client配置中已經有此配置,儘管您不需要進行進一步的更改。