2

我想知道如何处理这种特殊情况。

我有两个要提供给 Web 应用程序的 ClientService。所谓clientService,我的意思是调用一些外部休息服务的客户端API。所以我们在这里是喷雾客户端。

问题是,这两项服务中的一项可能非常密集且耗时,但调用频率低于另一项,后者会更快但调用非常频繁。

我正在考虑为两个 clientService 设置两个调度程序。假设我们有查询 API (ClientService1) 和分类 API (ClientService2)

这两个服务确实应该基于相同的参与者系统。所以换句话说,我想在我的演员系统中有两个调度程序,然后通过客户端级 api 将它们传递给喷雾,例如管道。

  1. 是否可行、可扩展且合适?
  2. 您会推荐什么来代替使用一个调度程序但具有更大的线程池?
  3. 另外,如何获得调度员?
  4. 我应该自己创建一个线程池执行器并从中获得一个调度程序吗?
  5. 如何让演员系统加载/创建多个调度程序,以及如何检索它们以便将它们传递给管道方法?

我知道如何使用特定的调度程序创建一个演员,有例子,但这是一个不同的场景。顺便说一句,我不希望低于客户端级别的 API

编辑

我发现 system.dispatchers.lookup 方法可以创建一个。所以应该这样做。

然而,不清楚的事情与 AKK.IO/SPRAY.IO 有关。

  1. 管理器 IO(HTTP):我不清楚它在哪个调度程序上运行,或者是否可以配置。

  2. 此外,假设我将不同的执行上下文传递给管道方法。怎么了?我仍然会在默认执行上下文或它自己的执行上下文上运行 IO(HTTP)(我不知道它是如何在内部完成的)?还有什么将在我通过的执行上下文上运行?(换句话说,哪些演员)

4

0 回答 0