2014-05-24 18 views
1

我正在使用使用akka io的噴霧罐客戶端編寫http服務客戶端庫。在庫中配置spray.can.client

爲了讓客戶端正常工作,我需要設置一些非默認spray.can.config配置選項(我需要設置respone-chunk-aggregation-limit = 0來正確處理大分塊響應)。

我想1)以某種方式將此設置捆綁到客戶端,以便庫的用戶不必做任何明確的配置,並且2)僅在我的客戶端庫使用噴霧客戶端時適用,而不是如果客戶端庫的用戶正在其他地方使用噴客戶端(我知道他們很可能會這樣做 - 我們的組織在SOA設置中的大多數項目中都使用了這種噴客服務),則無意中錯誤地配置了這些內容。

由於spray-can-client不是一個已配置的類實例,並且由於它的耦合方式與akka.io.IO並不完全相同,所以我不確定配置在哪裏或如何發生。 (是它使用的actor系統配置的spray.can.client配置的一部分嗎?這對我來說似乎很奇怪。)

無論如何,如果任何人做了這樣的事情或有任何建議,我很想聽聽它。

謝謝!

回答

3

這取決於您在應用程序中如何使用噴霧客戶端。無論如何,所有的配置設置也可以在運行時進行配置。請參閱ClientConnectionSettingsHostConnectorSettings

每個請求級API,連接級API和主機級API都允許您指定這些設置。

val customSettings = ClientConnectionSettings(system) 

連接級:

IO(Http) ! Http.Connect("www.spray.io", port = 8080, settings = Some(customSettings)) 

主機級:

val customHostSettings = HostConnectorSettings(system).copy(connectionSettings = customSettings) 
IO(Http) ! Http.HostConnectorSetup("www.spray.io", port = 80, settings = customHostSettings) 

請求級:

IO(Http) ? (HttpRequest(GET, Uri("http://spray.io")), customHostSettings) 
+0

'ClientConncetionSettings' /'HostConnectorSettings'正是我是lookginf。謝謝! – gmjabs