我正在学习与Akka流一起工作,并且非常喜欢它,但物化部分对我来说仍然有些神秘。
...通过调用触发特定池的立即关闭 shutdown()在HostConnectionPool实例上表示池客户端 流程实现了
如何获取HostConnectionPool实例?
更重要的是,我想了解一般如何访问物化值并执行某些操作或从中检索信息。
提前感谢任何文档指示或解释。
答案 0 :(得分:9)
这是通过Source.viaMat
功能完成的。从代码中提供的link扩展代码示例:
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
具体化为Unit
,Keep.right
表示保留HostConnectionPool
实现的poolClientFlow
。在.toMat
函数中,Keep.both
表示要保留流池中的左池和Future
中的右Sink
。