簡體   English   中英

Akka-streams - 如何訪問流的物化值

[英]Akka-streams - how to access the materialized value of the stream

我正在學習與Akka流一起工作,並且非常喜歡它,但物化部分對我來說仍然有些神秘。

引自http://doc.akka.io/docs/akka-stream-and-http-experimental/snapshot/scala/http/client-side/host-level.html#host-level-api

...通過調用池客戶端流實現的HostConnectionPool實例上的shutdown()來觸發特定池的立即關閉

如何獲取HostConnectionPool實例?

更重要的是,我想了解一般如何訪問物化值並執行某些操作或從中檢索信息。

提前感謝任何文檔指針或解釋。

這是通過Source.viaMat函數完成的。 從您的問題中提供的鏈接擴展代碼示例:

import akka.http.scaladsl.Http.HostConnectionPool
import akka.stream.scaladsl.Keep
import akka.stream.scaladsl.RunnableGraph

val poolClientFlow = Http().cachedHostConnectionPool[Int]("akka.io")

val graph: RunnableGraph[(HostConnectionPool, Future[(Try[HttpResponse], Int)])]  =
  Source.single(HttpRequest(uri = "/") -> 42)
        .viaMat(poolClientFlow)(Keep.right)
        .toMat(Sink.head)(Keep.both)

val (pool, fut) = graph.run()

pool.shutdown()

由於Source.single實現了UnitKeep.right表示要保留poolClientFlow實現的HostConnectionPool .toMat函數中, Keep.both表示要保留流池中的左池和來自Sink的正確的Future

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM