我可以设置特定管道请求的超时和重试次数吗?

Sco*_*ith 10 pipeline scala spray spray-client

使用spray的流水线操作来发出这样的HTTP请求时:

val urlpipeline = sendReceive ~> unmarshal[String]
urlpipeline { Get(url) }
Run Code Online (Sandbox Code Playgroud)

有没有办法为请求指定超时以及它应该为该特定请求重试的次数?

我发现的所有文档只引用了一个配置(即便如此,我似乎无法让它工作).

谢谢

Tim*_*aer 10

使用配置文件

我在Akka系统中使用Spray 1.2.0.在我的演员里面,我导入现有的Akka系统,所以我可以使用默认的Akka配置文件.

implicit val system = context.system
import context.dispatcher
val pipeline: HttpRequest => Future[HttpResponse] = sendReceive
Run Code Online (Sandbox Code Playgroud)

现在您可以更改配置application.conf.

spray.can.host-connector {
    max-connections = 10
    max-retries = 3
    max-redirects = 0
    pipelining = off
    idle-timeout = 30 s
    client = ${spray.can.client}
}
Run Code Online (Sandbox Code Playgroud)

在代码中

可以使用HostConnectorSetup更改代码中的设置,但您必须定义所有参数.(基于喷雾用法示例.)

val pipeline: Future[SendReceive] =
for (
  Http.HostConnectorInfo(connector, _) <-
  IO(Http) ? Http.HostConnectorSetup("www.spray.io", port = 80, settings = Some(new HostConnectorSettings(maxConnections = 3, maxRetries = 3, maxRedirects = 0, pipelining = false, idleTimeout = 5 seconds, connectionSettings = ClientConnectionSettings(...))))
) yield sendReceive(connector)
Run Code Online (Sandbox Code Playgroud)