2013-04-23 22 views
2

当我运行使用阿卡我的应用程序时,出现以下异常:阿卡超时开始的事件处理程序

Event Handler specified in config can't be loaded [com.despegar.hasp.impl.DummyLogEventHandler] due to [a06c8d75-0f07-40db-883a-16dc2914934bakka.event.Logging$LoggerInitializationException: Logger log1-DummyLogEventHandler did not respond with LoggerInitialized, sent instead [TIMEOUT] 

DummyLogEventHandler被定义为:

class DummyLogEventHandler extends Actor { 
    def receive = { 
    case InitializeLogger(_) => sender ! LoggerInitialized 
    case Error(cause, logSource, logClass, message) => 
    case Warning(logSource, logClass, message) => 
    case Info(logSource, logClass, message) => 
    case Debug(logSource, logClass, message) => 
    } 

}

我的配置有以下行:

event-handlers = ["my.app.DummyLogEventHandler"] 
event-handler-startup-timeout = 15s 

但我也尝试用默认的记录:

event-handlers = [] 

,并SLF4J(我的应用程序正在使用的logback后端和记录工作正常):

event-handlers = ["akka.event.slf4j.Slf4jEventHandler"] 

无论这些事件处理程序到目前为止还没有将超时增加到60秒。此外,暂时抛出偶尔。当我运行测试套件时,每次都会在不同的测试中抛出异常。

你能帮我找到解决办法吗?

谢谢, Alex。

回答

1

经过对akka-user的讨论,发现如下。

这个问题是配置akka.actor.default-dispatcher是的type = BalancingDispatcher,不能正常工作的症状,看到the docs for that dispatcher type

  • 所有的演员共用一个邮箱,他们从得到他们的消息。

  • 假设所有使用该调度程序实例的actor可以处理所有发送给其中一个actor的消息;即演员属于一群演员,而对于客户端,则不能保证哪个演员实例实际处理给定的消息。

  • 共享性:相同类型的唯一

0

在我的情况下,在conf中添加超时设置不起作用,但直接像下面那样设置系统属性。

System.setProperty("akka.logger-startup-timeout", "30s")