挂起和修改NServiceBus saga超时

挂起和修改NServiceBus saga超时,nservicebus,nservicebus3,Nservicebus,Nservicebus3,我有一个传奇故事,它代表了一个从“人”到“案例”的长期工作分配过程。几个事件可能会启动它,在这个过程的最后,我们有一个任务确认,在这一点上,传奇故事完成,该人被分配到该案件。我希望这个传奇故事有一个暂停时间,这样我们就不会无限期地等待确认——这绝对是一个有效的业务用例。那里没有困难——相当普通 问题在于,如果有人将案件搁置,这一分配过程可能会受阻。我有一个我可以订阅的事件,这样我的任务saga就知道案例处于搁置状态,但除非我以某种方式调整超时或暂停它,否则任务saga可能会在案例搁置解除之前超时

我有一个传奇故事,它代表了一个从“人”到“案例”的长期工作分配过程。几个事件可能会启动它,在这个过程的最后,我们有一个任务确认,在这一点上,传奇故事完成,该人被分配到该案件。我希望这个传奇故事有一个暂停时间,这样我们就不会无限期地等待确认——这绝对是一个有效的业务用例。那里没有困难——相当普通

问题在于,如果有人将案件搁置,这一分配过程可能会受阻。我有一个我可以订阅的事件,这样我的任务saga就知道案例处于搁置状态,但除非我以某种方式调整超时或暂停它,否则任务saga可能会在案例搁置解除之前超时。这样做没有商业意义,所以我基本上想停止超时时钟,直到其他事件发生

同样的问题在几年前也提到过。这仍然是不可能的,或者v3.x中有允许它的新特性吗?如果不是,它是计划中的功能吗


谢谢

我不认为有办法直接点击计时器并将超时消息“暂停”


我会在传奇中的超时处理程序中使用这种逻辑。检查案例是否处于搁置状态,并请求另一个超时,而不结束整个事件。

为什么不在案例搁置时将该实例的超时全部删除?你的故事保持了案件的状态和案件到期的计算时间。这可能是在创建第一个超时时设置的。当案例被重新激活时,只需计算从重新激活到保存的“截止日期”的时间差,并使用该差为该实例创建一个新的超时。您可能还希望考虑案例被搁置的时间,并设置一个新的截止日期,将其保存回实例状态

您将始终需要处理超时发生时出现的“on hold”命令的争用条件,在这种情况下,即使您可以暂停或修改超时,您也无法对场景进行任何不同的编码。这是事实。。因此,如果案例在“暂停”之前“超时”,为什么您需要知道业务成本/解决方案?谢谢各位!我认为这种模式对我和其他人都适用,所以我认为这是“答案”。然而,根据域的细节,我也可能需要考虑@ StfpNL张贴的内容。我们可能不想将时钟重置为“零”,而是将其重置为从saga数据中衍生出来的其他值。只是想给你一些信任-我肯定认为我需要更聪明一点,当我的案例停止时,我的超时值应该是多少。我没有考虑过-谢谢!