我想首先发送一个消息案例类SetConfig(config: String),并确保在持久化和应用SetConfig之前没有处理其他消息。
实现这一目标的最佳实践是什么?
发布于 2015-04-01 10:46:13
我会和PersistentActor一起使用Akka FSM。
您可以使用以下两种状态:
sealed trait State
case object Idle extends State
case object Active extends State这些数据如下:
sealed trait Data
case object Uninitialized extends Data
final case class Config(config: String) extends Data您的参与者将扩展FSM[State, Data],并将:
startWith(Idle, Uninitialized)然后,您可以说,只有在使用Idle时才接受SetConfig消息
when(Idle) {
case Event(SetConfig(conf), Uninitialized) =>
goto(Active) using Config(conf)
}一旦您转换到Active,您就可以通过以下方式接收其他消息:
when(Active) {
case Event(...
// don't forget to start it up in initial state with:
initialize()最后,在状态转换中,您可以使用常规Akka持久化模式来持久化状态。
https://stackoverflow.com/questions/29372655
复制相似问题