我第一次接近Lagom + CQRS / Event Sourcing,我希望实现以下行为:
前两个步骤很简单,但是一旦我触发TimerStartedEvent并改变状态,我如何在一段固定的时间后“安排”一个事件?我如何实施第三步?
答案 0 :(得分:0)
我找到了一个可能的实现(实际上在online-auction-scala sample code本身上)。
因为Lagom是在Akka之上构建的,所以它会注入ActorSystem,因此您可以使用system.scheduler.schedule
调用来安排将来的事情。
为了回答问题的CQRS部分,示例代码执行如下操作:
system.scheduler.scheduler(offset, delay) {
checkFinishBidding()
}
checkFinishBidding() = {
registry.refFor[Entity](id).ask(SomeCommand)
}
因此,当时间触发时,您可以将实体引用从注册表中出列并运行命令,就像正常的服务调用一样。