我使用带有PersistentFSM的akka,并且希望能够在应用事件后使用stateData值回复消息
when(StartedState) {
case Event(..., ...) =>
...
stay applying BidPlaced(...) replying BidPlacedReply(stateData)
}
BidPlacedReply是一个带有apply方法的对象,允许根据我的stateData的某些字段构建BidPlacedReply,例如我希望能够使用包含当前最高出价者ID,最高出价者价格的BidPlacedReply进行回复。 ..并且这个值在applyEvent中计算,它修改状态并产生" stateAfter"。
不幸地回复了BidPlacedReply(stateData)"在应用applyEvent之前,方法使用stateData值调用BidPlacedReply.apply方法(这是我在日志中看到的内容),
我尝试了以下构造,但它没有修改下一条消息的stateData(需要调用!!!)
applyEvent(BidPlaced(...), stateData) match {
case stateDataAfter => stay replying BidPlacedReply(stateDataAfter)
}
有没有人知道如何回复与applyEvent的结果相对应的stateData值(stateData""之后)?
答案 0 :(得分:0)
这个怎么样?
when(StartedState) {
case Event(..., ...) =>
...
stay applying BidPlaced(...) andThen { (stateDataAfter: ...) =>
sender() ! BidPlacedReply(stateDataAfter)
}
}