在异常情况下完成 Saga

Finalizing Saga on exception

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

中终止那个传奇实例

我偶然发现了这个线程:,我目前的方法略有不同。在 .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());

这似乎可行,但是,在对提到的线程的回答中,Chris 说传奇应该直接在 Catch() 中完成,但是,Finalize() 上没有可用的ExceptionActivityBinder 并且我无法访问那里的 EventActivityBinder

我是不是漏掉了什么(可能)?是否可以直接在 Catch() 中完成 Saga?

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