2015-03-31 44 views

回答

1

我會使用Akka FSMPersistentActor

你可以擁有這兩個狀態:

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) 

然後你就可以說,您只接受SetConfig消息時Idle

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() 

最後的狀態轉換,你可以使用常規的阿卡持久模式不改變你的狀態。

相關問題