在另一个持久化事件处理程序中调用persist

时间:2015-07-06 16:34:30

标签: scala akka akka-persistence

我有一些代码从另一个持久化事件处理程序中调用persist,如:

persist(someClassInstance){ message =>
  confirmDelivery(message.id)
  //some code
  start()
}

//Somewhere else in the code
def start(): Unit = {
  log.info("Starting")
  persist(someClassInstance){ message =>
    deliver(destination, createMessage)
    log.info("Started")
  }
}

当我运行我的应用程序时,我看到日志消息“正在启动”,但我从未看到“已启动”。我想知道是否会发生这种情况,因为我正在调用另一个持久存在的内部。这是不应该做的事情吗?关于这种情况,文档并不十分明确。

我正在使用Akka版本2.4-M1所以我想这可能是问题的根源,但是我觉得这更像是一件不应该做的事情。

1 个答案:

答案 0 :(得分:1)

从另一个persist调用persist将阻止该程序。 正确的方法是向自己发送消息。然后在处理该消息的代码中执行持久化。