Multithreading 如何在Akka中为每个请求参与者分配线程
我有一个一致的散列路由器(scala/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
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等创建一个调度程序。。。如果这不是你的意思,恐怕我不明白这个问题——也许你可以详细解释一下?对不起。我想我的观点是,如果我可以拥有无限数量的每个请求参与者,那么我的配置文件将需要是一个无限长的分派器列表。这似乎不切实际。