2

当我使用 akka 运行我的应用程序时,它失败并出现以下异常:

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 秒都没有工作。此外,超时偶尔会抛出。当我运行一个测试套件时,每次都会在不同的测试中抛出异常。

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

谢谢,亚历克斯。

4

3 回答 3

3

尝试为记录器初始化设置更大的超时时间:

例如在 conf 文件中:

     akka {logger-startup-timeout = 25s }

签出文档

http://doc.akka.io/docs/akka/snapshot/general/configuration.html

于 2014-02-25T17:13:27.557 回答
1

在讨论akka-user之后,发现了以下内容。

此问题是配置akka.actor.default-dispatcherto be of的症状type = BalancingDispatcher,它无法工作,请参阅该调度程序类型的文档

  • 所有参与者共享一个邮箱,他们从中获取消息。

  • 假设使用该调度程序的同一实例的所有参与者都可以处理已发送到其中一个参与者的所有消息;即参与者属于参与者池,并且对于客户端而言,不能保证哪个参与者实例实际处理给定消息。

  • 可共享性:仅限同一类型的参与者

于 2013-04-25T08:59:00.733 回答
0

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

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

于 2016-12-16T14:13:17.107 回答