【问题标题】:NServiceBus: Remove Deferred messages when calling MarkAsComplete()NServiceBus:调用 MarkAsComplete() 时删除延迟消息
【发布时间】:2012-12-31 22:23:07
【问题描述】:

使用 NServiceBus 3.2.7。调用 MarkAsComplete 时(当有延迟消息输出时,一个人取消了他们的订单。)看起来调用 MarkAsComplete 确实消除了 saga,但之前延迟的消息仍在超时队列中。当他们最终处理时,他们陷入了 SagaNotFound 异常。我希望能够明确区分未找到的合法 saga 和由于取消订单而被删除的 saga 之间的区别。

如何从 Raven 中删除延迟消息?

【问题讨论】:

    标签: c# nservicebus


    【解决方案1】:

    在超时和取消之间存在固有的竞争条件。可能是取消发生时超时已经在传递中,因此无法清除。

    正是出于这个原因,NServiceBus 将 SagaNotFound 作为事件而不是异常引发。

    希望对您有所帮助。

    【讨论】:

    • 谢谢 Udi,很抱歉我的意思是 Event 而不是例外。我们正在处理 SagaNotFound 事件并确定未找到的消息类型。我想我的问题是不知道哪些消息被取消,哪些消息由于某种原因而存在问题,为什么没有找到 sagas。我想在我的情况下记录被取消的 sagas 并验证被查询的 sagas 实际上被取消而不是由另一个问题引起的会更好。我在想 NServiceBus 中的固有功能可以处理这个问题。
    猜你喜欢
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2017-02-06
    相关资源
    最近更新 更多