PersistentFSM在applyEvent之后回复stateData值

时间:2017-05-20 16:32:28

标签: akka akka-persistent-fsm

我使用带有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""之后)?

1 个答案:

答案 0 :(得分:0)

这个怎么样?

when(StartedState) { case Event(..., ...) => ... stay applying BidPlaced(...) andThen { (stateDataAfter: ...) => sender() ! BidPlacedReply(stateDataAfter) } }