【问题标题】:Finalizing Saga on exception结束 Saga 异常
【发布时间】:2017-11-13 15:11:01
【问题描述】:

我创建了一个 saga,想知道如何在活动执行期间处理我的异常。理想情况下,我想在某些情况下立即在.Catch() 中终止该传奇实例。

我偶然发现了这个帖子:Understanding "Finalize" in MassTransit,我目前的方法略有不同。在.Catch() 中,我发布SagaFaultedEvent 并转换到Faulted 状态:

.Catch<Exception>(e => e
    .Publish(context => (ISagaFaultedEvent)new SagaFaultedEvent(context.Instance.Id))
    .TransitionTo(Faulted)));

然后通过记录问题并完成实例来处理此事件

During(Faulted,
    When(SagaFaulted)
        .Activity(x => x.OfInstanceType<LogFaultedSagaActivity>())
        .Finalize());

这似乎可行,但是,在对提到的线程的回答中,克里斯说传奇应该直接在 Catch() 中完成,但是,ExceptionActivityBinder 上没有可用的 Finalize(),我不知道'无权访问那里的EventActivityBinder

我在这里(可能)遗漏了什么吗?是否可以直接在Catch() 中完成 Saga?

【问题讨论】:

    标签: c# .net masstransit automatonymous


    【解决方案1】:

    今天发布的 3.6.1 中的 Automatonymous 添加了对此的支持。

    【讨论】:

    • 谢谢克里斯,这是一个快速的解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多