假设我想要一个由某个事件创建的传奇,然后坐下来等待几个小时,如果什么都没有发生,就发出一些命令。
现在,如果这个传奇故事都在内存中,我必须重新启动应用程序/服务器,那么这个传奇故事就会被卸载,再也看不到了,对吧?
一旦系统恢复在线,我是否会使用事件采购来提升此传奇的速度?
如果是这样的话,我需要一个单独的事件存储区,它可以在系统启动时重放,以使我的传奇达到最快速度。到目前为止,它对我来说似乎还不错,但是我该如何实现超时呢?
我需要一些方法来“伪造”重播时的超时,考虑到可能会有几个后续的超时,这取决于进入传奇的事件。
发布于 2011-10-11 09:20:27
实现此功能的最佳方式是使用另一个端点,该端点能够在某个时间点将消息返回给您。例如,你的传奇可能会向这个“超时管理器”发送一条消息,并说在1小时或1天甚至1年后唤醒我。然后,消息将在此时返回给您。理想情况下,此消息应具有导致操作发生的业务含义。
也许最好的例子是客户注册,如果客户在注册后7天内没有确认他们的账户,你会通过电子邮件通知他们。“超时消息”实际上是: RemindUserToConfirmAccountMessage。当saga在7天后收到此消息时,saga将根据其当前状态确定是否需要处理该消息以及是否需要发送客户电子邮件。但是如果用户已经确认了他/她的帐户,则可以丢弃该消息而不采取任何动作。
https://stackoverflow.com/questions/7717298
复制相似问题