gpt4 book ai didi

akka-http - 如何自定义 Akka Http Client 执行上下文

转载 作者:行者123 更新时间:2023-12-03 16:15:16 24 4
gpt4 key购买 nike

调用 singleRequest 时,如何自定义连接池使用的执行上下文?
我简要查看了代码,调用 singleRequest 会导致向 PoolMasterActor 发送一条消息,而 PoolMasterActor 又向池接口(interface) Actor 发送一条消息。

  • 每个连接是阻塞的还是非阻塞的?
  • 连接池使用哪个上下文? (我想确保我的 HTTP 请求不会阻塞所有线程)
  • 最佳答案

    如果您查看 singleRequest signature ,它需要一个隐式 Materializer (因此是 ActorSystem 及其 dispatchers )来运行基于 Akka Streams 的底层 HTTP 基础设施。更多关于物化器如何在底层生成线程的知识可以在 docs 中找到。 , 而这个 blogpost .

    回到你的问题:

  • 整个 Akka-HTTP 基础设施本质上是非阻塞的(因为它基于 Akka Streams - 它遵循 Reactive Streams 规范并基于 Akka Actors)。
  • singleRequest 使用的线程调用继承自 ActorSystem调度员下线使用。除非您执行任何特定操作,否则您最终将使用系统的默认调度程序。在您编写 Akka HTTP 客户端的许多情况下,这是一个合理的选择。

  • 如果您确实需要您的物化器来使用自定义调度程序,您可以通过自定义 ActorMaterializerSettings 来实现此目的。 ,例如
    implicit val materializer = ActorMaterializer(
    ActorMaterializerSettings(actorSystem).withDispatcher("my-custom-dispatcher")
    )

    关于akka-http - 如何自定义 Akka Http Client 执行上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42058998/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com