基于时间的传奇故事与事件溯源



假设我想要一个由某个事件创建的传奇,然后等待几个小时,如果没有发生,则发送一些命令。

现在,如果这个Saga全部在内存中,我必须重新启动应用程序/服务器,那么这个Saga将被卸载并且再也不会看到,对吗?

在系统重新上线后,我是否会使用事件溯源来加快这个Saga的速度?

如果是这样的话,我将需要一个独立的事件存储,其中包含可以在系统启动时重播的"活动传奇",以使我的传奇跟上速度。到目前为止,这对我来说似乎很好,但我该如何实现超时?

我需要某种方法在重放时"伪造"超时,考虑到可能会有几个后续超时,这取决于进入传奇的事件。

实现此功能的最佳方法是使用另一个能够在特定时间点将消息返回给您的端点。例如,你的传奇可以向这个"超时管理器"发送一条消息,并说在1小时或1天甚至1年后叫醒我。然后信息将在那个时候返回给您。理想情况下,该消息应该具有业务意义,从而导致某个操作发生。

也许最好的例子是客户注册,如果客户在注册后7天内没有确认他们的帐户,你就会通过电子邮件通知他们。"超时消息"将有效地是:RemindUserToConfirmAccountMessage。当传奇在7天后收到此消息时,传奇将根据其当前状态确定是否需要处理该消息并发送客户电子邮件。但是,如果用户已经确认了他/她的帐户,则该消息可以被丢弃而不采取任何行动。

最新更新