akka调度员不工作
akka dispatcher is not working
我在附加的 conf 文件中编写我的调度程序的设置,然后将其加载到 application.conf 但是当我在我的文件中给出调度程序所在的完整路径时,调度程序不工作我也在保证通过使用 if statarements
来确定调度程序是否存在
val config = ConfigFactory.load()
// an actor needs an ActorSystem
val system = ActorSystem("TestActorSystem",config)
if(system.dispatchers.hasDispatcher("akka.actor.directUserWriteMongoActor-dispatcher"))
{println("directUserWriteMongoActor-dispatcher exists")}
else
{
println("dispatcher does not exists")
}
当我 运行 directUserWriteMongoActor-dispatcher 存在打印在控制台上但当我尝试通过代码附加它时
val DirectUserWriteMongoActor = system.actorOf(Props[DirectUserWriteMongoActor].withDispatcher("akka.actor.directUserWriteMongoActor-dispatcher"), name = "directwritemongoactorr")
DirectUserWriteMongoActor ! DirectUserWriteToMongo(directUser)
log 表明它使用的是 default-dispatcher 而不是我自己的名为 directUserWriteMongoActor-dispatcher 的调度程序
这是我的完整代码
application.conf
include "DirectUserWriteMongoActor"
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
}
DirectUserWriteMongoActor.conf
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
actor{
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
############################### Setting for a Dispatcher #####################################
directUserWriteMongoActor-dispatcher {
type = Dispatcher
executor = "fork-join-executor"
fork-join-executor {
parallelism-min = 2
parallelism-factor = 2.0
parallelism-max = 10
}
throughput = 10
} #end default-dispatcher
} #end Actor
} #end Akka
这是我的代码
object TestActor extends App{
val config = ConfigFactory.load()
val system = ActorSystem("TestActorSystem",config)
if(system.dispatchers.hasDispatcher("akka.actor.directUserWriteMongoActor-dispatcher"))
{println("directUserWriteMongoActor-dispatcher exists")}
else
{
println("directUserWriteMongoActor-dispatcher does not exists")
}
val DirectUserWriteMongoActor = system.actorOf(Props[DirectUserWriteMongoActor].withDispatcher("akka.actor.directUserWriteMongoActor-dispatcher"), name = "directwritemongoactorr")
DirectUserWriteMongoActor ! DirectUserWriteToMongo(directUser)
DirectUserWriteMongoActor.scala
case class DirectUserWriteToMongo (directuser:DirectUser)
class DirectUserWriteMongoActor extends Actor{
val log = Logging(context.system, this)
def receive = {
case DirectUserWriteToMongo(directuser) =>
log.debug("writing to mogo")
log.info("message received DirectUserWriteInMongo")
val directUserStore= new directUserStore
log.info("going to call store in mongo")
}}
这是打印在控制台上的输出
2015-04-27 10:40:01.392 INFO Slf4jLogger [TestActorSystem-akka.actor.default-dispatcher-2] -Slf4jLogger started
directUserWriteMongoActor-dispatcher exists
2015-04-27 10:40:02.262 INFO DirectUserWriteMongoActor [TestActorSystem-akka.actor.default-dispatcher-3] akka://TestActorSystem/user/directwritemongoactorr -message received DirectUserWriteInMongo
2015-04-27 10:40:02.263 INFO DirectUserWriteMongoActor [TestActorSystem-akka.actor.default-dispatcher-3] akka://TestActorSystem/user/directwritemongoactorr -going to call store in mongo
请帮助我我的代码或我的 conf 设置中有什么问题 disptacher 在那里但它不起作用为什么 os 如此
这应该打印
TestActorSystem-akka.actor.directUserWriteMongoActor-dispatcher-3
而不是这个
TestActorSystem-akka.actor.default-dispatcher-3
请帮助我,我也是第一次使用 akka dispatch 和其他 conf 文件
您可能正在使用 SimpleLogger。此记录器使用默认调度程序进行记录。
你的代码没有问题。包括: println(context.dispatcher)
到你的 actor receive 方法会通知你,他正在使用正确的 directUserWriteMongoActor 调度程序。
另一方面,如果您将 println(system.dispatcher)
添加到您的 App 对象,您会发现在 actor 之外使用了默认调度程序。这是正确的,因为您只指定了 actor 的调度程序,而不是全局使用的调度程序。
我在附加的 conf 文件中编写我的调度程序的设置,然后将其加载到 application.conf 但是当我在我的文件中给出调度程序所在的完整路径时,调度程序不工作我也在保证通过使用 if statarements
来确定调度程序是否存在val config = ConfigFactory.load()
// an actor needs an ActorSystem
val system = ActorSystem("TestActorSystem",config)
if(system.dispatchers.hasDispatcher("akka.actor.directUserWriteMongoActor-dispatcher"))
{println("directUserWriteMongoActor-dispatcher exists")}
else
{
println("dispatcher does not exists")
}
当我 运行 directUserWriteMongoActor-dispatcher 存在打印在控制台上但当我尝试通过代码附加它时
val DirectUserWriteMongoActor = system.actorOf(Props[DirectUserWriteMongoActor].withDispatcher("akka.actor.directUserWriteMongoActor-dispatcher"), name = "directwritemongoactorr")
DirectUserWriteMongoActor ! DirectUserWriteToMongo(directUser)
log 表明它使用的是 default-dispatcher 而不是我自己的名为 directUserWriteMongoActor-dispatcher 的调度程序 这是我的完整代码
application.conf
include "DirectUserWriteMongoActor"
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
}
DirectUserWriteMongoActor.conf
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
actor{
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
############################### Setting for a Dispatcher #####################################
directUserWriteMongoActor-dispatcher {
type = Dispatcher
executor = "fork-join-executor"
fork-join-executor {
parallelism-min = 2
parallelism-factor = 2.0
parallelism-max = 10
}
throughput = 10
} #end default-dispatcher
} #end Actor
} #end Akka
这是我的代码
object TestActor extends App{
val config = ConfigFactory.load()
val system = ActorSystem("TestActorSystem",config)
if(system.dispatchers.hasDispatcher("akka.actor.directUserWriteMongoActor-dispatcher"))
{println("directUserWriteMongoActor-dispatcher exists")}
else
{
println("directUserWriteMongoActor-dispatcher does not exists")
}
val DirectUserWriteMongoActor = system.actorOf(Props[DirectUserWriteMongoActor].withDispatcher("akka.actor.directUserWriteMongoActor-dispatcher"), name = "directwritemongoactorr")
DirectUserWriteMongoActor ! DirectUserWriteToMongo(directUser)
DirectUserWriteMongoActor.scala
case class DirectUserWriteToMongo (directuser:DirectUser)
class DirectUserWriteMongoActor extends Actor{
val log = Logging(context.system, this)
def receive = {
case DirectUserWriteToMongo(directuser) =>
log.debug("writing to mogo")
log.info("message received DirectUserWriteInMongo")
val directUserStore= new directUserStore
log.info("going to call store in mongo")
}}
这是打印在控制台上的输出
2015-04-27 10:40:01.392 INFO Slf4jLogger [TestActorSystem-akka.actor.default-dispatcher-2] -Slf4jLogger started
directUserWriteMongoActor-dispatcher exists
2015-04-27 10:40:02.262 INFO DirectUserWriteMongoActor [TestActorSystem-akka.actor.default-dispatcher-3] akka://TestActorSystem/user/directwritemongoactorr -message received DirectUserWriteInMongo
2015-04-27 10:40:02.263 INFO DirectUserWriteMongoActor [TestActorSystem-akka.actor.default-dispatcher-3] akka://TestActorSystem/user/directwritemongoactorr -going to call store in mongo
请帮助我我的代码或我的 conf 设置中有什么问题 disptacher 在那里但它不起作用为什么 os 如此 这应该打印
TestActorSystem-akka.actor.directUserWriteMongoActor-dispatcher-3
而不是这个
TestActorSystem-akka.actor.default-dispatcher-3
请帮助我,我也是第一次使用 akka dispatch 和其他 conf 文件
您可能正在使用 SimpleLogger。此记录器使用默认调度程序进行记录。
你的代码没有问题。包括: println(context.dispatcher)
到你的 actor receive 方法会通知你,他正在使用正确的 directUserWriteMongoActor 调度程序。
另一方面,如果您将 println(system.dispatcher)
添加到您的 App 对象,您会发现在 actor 之外使用了默认调度程序。这是正确的,因为您只指定了 actor 的调度程序,而不是全局使用的调度程序。