阿卡超时开始的事件处理程序
问题描述:
当我运行使用阿卡我的应用程序时,出现以下异常:阿卡超时开始的事件处理程序
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。
答
经过对akka-user的讨论,发现如下。
这个问题是配置akka.actor.default-dispatcher
是的type = BalancingDispatcher
,不能正常工作的症状,看到the docs for that dispatcher type:
所有的演员共用一个邮箱,他们从得到他们的消息。
假设所有使用该调度程序实例的actor可以处理所有发送给其中一个actor的消息;即演员属于一群演员,而对于客户端,则不能保证哪个演员实例实际处理给定的消息。
共享性:相同类型的唯一
答
尝试的演员来设置记录器初始化一个较大的超时:
例如在conf文件:
akka {logger-startup-timeout = 25s }
结帐文档
http://doc.akka.io/docs/akka/snapshot/general/configuration.html
答
在我的情况下,在conf中添加超时设置不起作用,但直接像下面那样设置系统属性。
System.setProperty("akka.logger-startup-timeout", "30s")