[英]Polling with Akka-Http stream
我找到了一個示例 ,其中akka-http與Source.single一起使用來發出請求。 現在,我想使用Source.tick來實現每隔X秒執行一次的輪詢請求,如下所示:
import scala.concurrent.duration._
val request: _root_.akka.http.scaladsl.model.HttpRequest = RequestBuilding.Get(Uri("http://api.someSite.com"))
val source: Source[HttpRequest, Cancellable] = Source.tick(1.seconds, 1.seconds, request)
val sourceWithDest = source.via(Http().superPool())
但是,我在無法解決的最后一行中遇到了編譯錯誤(類型不匹配)。 關於我做錯事情的任何想法或其他建議?
根據文檔 :
Http()。superPool(...)返回的流與主機級客戶端API中的流非常相似,因此“使用主機連接池”部分也適用於此。
Http()。cachedHostConnectionPool(...)返回的“池客戶端流”具有以下類型:
Flow[(HttpRequest, T), (Try[HttpResponse], T), HostConnectionPool]
這是為了使客戶端代碼可以實現一些邏輯,以將原始請求與相應的響應進行匹配。 假設您在這種情況下不需要這種行為,則始終可以通過在請求添加到池流之前在請求中附加NotUsed
來繼續進行操作。 例如
val sourceWithDest: Source[Try[HttpResponse], Cancellable] =
source.map(req ⇒ (req, NotUsed)).via(Http().superPool[NotUsed]()).map(_._1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.