是否可以优先考虑(优先考虑)特定的 Akka 的 Actor?

Is it possible to prioritize (give a priority) to specific Akka's Actor?

我研究了 Akka 框架, 我想知道; 是否可以优先考虑特定的参与者? 我的意思是 - 演员正在工作,同时从队列中获取“让”消息, 有没有办法让一个演员在还没有轮到他工作的时候工作?

有效,是的。

A​​ctor 配置的一部分是 Dispatcher 这些 Actor 将使用的部分。调度程序将参与者连接到将执行工作的实际线程。 (调度程序默认为 ForkJoinPools,但也可以是专用线程池,甚至是专用于特定参与者的线程。)

所以给 Actor“优先级”的典型方式是给它一个专用的调度器,从而给它一个专用的线程。例如,Akka 本身为其内部消息执行此操作:它们 运行 在专用的调度程序上,这样即使您部署了一堆编写糟糕的 actor 来阻塞线程,Akka 本身仍然可以运行。

我将“优先级”放在引号中,因为您不能保证特定的处理顺序。 (还有其他方法可以做到这一点,但不是跨 Actors。)但是您要解决的问题是您希望特定 Actor 始终能够更好地访问资源 and/or 特定 Actor 以便迅速执行。

(理论上,您可以更进一步,创建一个具有更高优先级线程的 ThreadPoolExecutor,然后基于该 ThreadPoolExecutor 创建一个 Dispatcher。这确实会给 Actor OS-level 优先级,但是只有在非常不寻常的情况下才可能相关。)