在异常情况下完成 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
中添加了对此的支持。
我创建了一个 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
中添加了对此的支持。