我正在使用喷雾罐客户端编写一个http服务客户端库,它使用了akka io。
为了让客户端正常工作,我需要设置一些非默认的spray.can.config
配置选项(我需要设置respone-chunk-aggregation-limit = 0
来正确处理大块的响应)。
我想1)以某种方式将此设置捆绑到客户端,因此库的用户不必进行任何显式配置,2)让它仅适用于我的客户端库中使用喷雾客户端,而不是无意中如果客户端库的用户在其他地方使用喷涂客户端(我知道他们可能会这样做 - 我们的组织在SOA设置中的大多数项目中都使用了喷涂),那么配置错误。
由于spray-can-client不是已配置的类实例,并且因为它以akka.io.IO
无法完全理解的方式耦合,所以我不确定配置在何处或如何发生。 (spray.can.client配置是它正在使用的actor系统配置的一部分吗?这对我来说似乎很奇怪。)
无论如何,如果有人做过这样的事情或有任何建议,我很乐意听到。
谢谢!
答案 0 :(得分:3)
这取决于您在应用程序中实际使用喷雾客户端的方式。在任何情况下,也可以在运行时配置所有配置设置。请参阅ClientConnectionSettings
和HostConnectorSettings
。
每个请求级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)