暂停和修改NServiceBus saga超时

时间:2013-02-06 16:00:07

标签: nservicebus nservicebus3

我有一个传奇,它代表了“人”对“案例”的长期工作分配过程。有几个事件可能会启动它,并且在过程结束时我们有一个赋值确认,此时saga完成并且Person被分配给Case。我希望这个传奇有一个超时,这样我们就不会无限期地等待确认 - 绝对是一个有效的商业用例。没有困难 - 相当香草。

如果有人将案件搁置,可以阻止此分配过程。我有一个我可以订阅的事件,所以我的作业saga 知道案件处于暂停状态,但除非我调整超时或以某种方式暂停它,否则分配传奇可能会在案例持有之前超时被释放。这样做没有商业意义,所以我基本上想要停止超时时钟,直到其他事件进入。

几年前,here提到了同样的问题。这仍然是不可能的,或者v3.x中是否有允许它的新功能?如果没有,它是一个计划的功能吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为没有办法直接标记到计时器并将超时消息“暂停”

我会在saga的超时处理程序中拥有该逻辑。检查案件是否处于暂停状态,并在不结束传奇的情况下请求另一个超时。

答案 1 :(得分:2)

为什么不在案件被搁置时完全删除实例的超时?你的传奇保持了案件的状态和案件到期时的计算时间。这可能是在您创建第一个超时时设置的。重新激活案例时,只需计算重新激活和保存的“截止日期”之间的时间差,并为该实例创建一个具有差异的新超时。您可能还需要考虑保留案例的时间并设置一个新的截止日期,您可以将其保存回实例状态。