Multithreading 如何在Akka中为每个请求参与者分配线程

Multithreading 如何在Akka中为每个请求参与者分配线程,multithreading,scala,akka,scala-2.10,Multithreading,Scala,Akka,Scala 2.10,我有一个一致的散列路由器(scala/akka),它将特定的消息类型a分配给一组特定的每请求参与者a,将消息类型b分配给一组特定的每请求参与者b。。。等等。问题是:如何将参与者集A适配到其自己的线程A,如何将参与者集B适配到其自己的线程B 希望演员集A不会阻止演员集B,B不会阻止A。遗憾的是,我的Akka调度程序经验不足,我的多线程经验也是如此。谢谢。您需要为类型a和B的参与者配置一个调度程序 有关完整的详细信息,请参见,但这样做的一个示例是在创建参与者时指定特定的分派。只需将withDispa

我有一个一致的散列路由器(scala/akka),它将特定的消息类型
a
分配给一组特定的每请求参与者
a
,将消息类型
b
分配给一组特定的每请求参与者
b
。。。等等。问题是:如何将参与者集
A
适配到其自己的线程
A
,如何将参与者集
B
适配到其自己的线程
B


希望演员集
A
不会阻止演员集
B
B
不会阻止
A
。遗憾的是,我的Akka调度程序经验不足,我的多线程经验也是如此。谢谢。

您需要为类型a和B的参与者配置一个调度程序

有关完整的详细信息,请参见,但这样做的一个示例是在创建参与者时指定特定的分派。只需将
withDispatcher(“dispatcher-actortype-A”)
附加到演员的道具对象,然后在akka配置文件中添加:

dispatcher-actortype-A {
  # Dispatcher is the name of the event-based dispatcher
  type = Dispatcher
  # What kind of ExecutionService to use
  executor = "thread-pool-executor"
  # Configuration for the thread pool
  thread-pool-executor {
    # minimum number of threads to cap factor-based core number to
    core-pool-size-min = 2
    # No of core threads ... ceil(available processors * factor)
    core-pool-size-factor = 2.0
    # maximum number of threads to cap factor-based number to
    core-pool-size-max = 10
  }
  # Process 100 messages before moving to the next actor
  throughput = 100
}                                                                      

显然,您还需要为B演员创建一个调度程序。

谢谢。比如说,角色集
A
B
在请求时被分解为更多的子集,比如
Aa
Ab
Ac
,等等。我想没有办法根据请求定义调度员,以防止
Aa
阻止
Ab
,等等?我不完全确定我是否遵守。你是说Aa,Ab等。。。每个演员都是新的类型吗?如果是这样,那么您需要为Aa、Ab等创建一个调度程序。。。如果这不是你的意思,恐怕我不明白这个问题——也许你可以详细解释一下?对不起。我想我的观点是,如果我可以拥有无限数量的每个请求参与者,那么我的配置文件将需要是一个无限长的分派器列表。这似乎不切实际。