使用NServiceBus 3.2.7。当调用MarkAsComplete时(一个人在延迟消息输出时取消他们的命令。)看来调用MarkAsComplete确实消除了传奇,但之前延迟的消息仍然在超时队列中。当他们最终处理时,他们会陷入SagaNotFound异常中。我希望能够明显区分未找到的合法传奇和被抛出的传奇之间的区别,因为由于订单被取消而导致传奇被删除。
如何从Raven中删除延期消息?
答案 0 :(得分:2)
超时和取消之间存在固有的竞争条件。可能是超时已经在取消发生的时候传递,因此无法清除。
正是出于这个原因,NServiceBus将SagaNotFound引发为事件,而不是例外。
希望有所帮助。