【发布时间】:2019-01-25 05:34:48
【问题描述】:
我希望创建一个服务,它向特定 URL 发出 HTTP 请求,如果它在 1 秒内没有得到结果,则该请求将超时,然后它将重试另一个请求,最多 3重试。
如何在 scala 中实现?
我正在查看 Akka HTTP 和 Play 的 WSClient 的文档,但我找不到任何地方提到它。
注意:如果请求对服务器产生副作用,我希望不成功的请求不会产生副作用。如何实现这种行为?有可能吗?
【问题讨论】:
-
您可以将 Akka Actors 与带有 ASK 调用模式的 akka Http 一起使用,并将超时设置为 1 秒,在超时的情况下只需在监督策略中重新启动您的子 Actor 并再次发送新请求。我想这就是你要找的东西
-
@Raman Mishra 你能详细说明你的评论吗?另外,什么是监管策略?谢谢。
-
您可以使用
.toStrict来限制您的httpResponse 并传递1 sec的timeOut。在Failure 中写下您的重试逻辑。这是示例programcreek.com/scala/akka.http.scaladsl.model.HttpRequest。仅供参考doc.akka.io/docs/akka-http/current/routing-dsl/directives/…。我希望这会有所帮助。
标签: scala playframework request akka-http retry-logic