在库中配置spray.can.client

时间:2014-05-24 22:00:10

标签: akka spray

我正在使用喷雾罐客户端编写一个http服务客户端库,它使用了akka io。

为了让客户端正常工作,我需要设置一些非默认的spray.can.config配置选项(我需要设置respone-chunk-aggregation-limit = 0来正确处理大块的响应)。

我想1)以某种方式将此设置捆绑到客户端,因此库的用户不必进行任何显式配置,2)让它仅适用于我的客户端库中使用喷雾客户端,而不是无意中如果客户端库的用户在其他地方使用喷涂客户端(我知道他们可能会这样做 - 我们的组织在SOA设置中的大多数项目中都使用了喷涂),那么配置错误。

由于spray-can-client不是已配置的类实例,并且因为它以akka.io.IO无法完全理解的方式耦合,所以我不确定配置在何处或如何发生。 (spray.can.client配置是它正在使用的actor系统配置的一部分吗?这对我来说似乎很奇怪。)

无论如何,如果有人做过这样的事情或有任何建议,我很乐意听到。

谢谢!

1 个答案:

答案 0 :(得分: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)