调用singleRequest时,如何自定义连接池使用的执行上下文? 我简要地看了一下代码,并且调用singleRequest导致一条消息被发送到PoolMasterActor,后者又向池接口actor发送消息。
答案 0 :(得分:6)
如果您查看setting-tv.json
signature,则需要隐式singleRequest
(因此Materializer
及其dispatchers)才能运行基础HTTP基础设施 - 基于Akka Streams。有关物化者如何在幕后产生线程的更多知识可以在docs和blogpost中找到。
回到你的问题:
整个Akka-HTTP基础架构本质上是非阻塞的(因为它基于Akka Streams - 它遵循Reactive Streams规范并且基于Akka Actors)。
ActorSystem
调用使用的线程继承自该行使用的singleRequest
调度程序。除非您执行任何特定操作,否则您最终将使用系统的默认调度程序。在编写Akka HTTP客户端的许多情况下,这是合理的选择。
如果您确实需要使用自定义程序来使用自定义调度程序,则可以通过自定义ActorSystem
来实现此目的,例如
ActorMaterializerSettings