【问题标题】:Invoke persist inside another persist event handler在另一个持久化事件处理程序中调用持久化
【发布时间】:2015-07-06 16:34:29
【问题描述】:

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

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,所以我想这可能是问题的根源,但在我看来,这似乎更可能是不应该做的事情。

【问题讨论】:

    标签: scala akka akka-persistence


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      相关资源
      最近更新 更多