나는 사가를 만들었으며 활동을 수행하는 동안 예외를 처리하는 방법을 궁금해하고있었습니다. 이상적으로, 어떤 경우에는 그 사가 인스턴스를 죽이고 싶습니다. 바로 .Catch()
입니다.예외가 발생하면 사가를 마무리 함
이 스레드를 우연히 발견했습니다 : Understanding "Finalize" in MassTransit, 내 현재 접근 방식이 약간 다릅니다. .Catch()
에서 나는 Faulted
상태로 SagaFaultedEvent
및 전환을 게시 :
.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()
에 직접 마무리해야한다고 말하지만 ExceptionActivityBinder
에는 Finalize()
이없고 EventActivityBinder
에 액세스 할 수 없습니다.
여기에 뭔가가 빠졌습니까? Catch()
에서 사가를 직접 마무리 할 수 있습니까?
감사합니다 크리스, 그게 빨리 해결되었습니다! – Slowacki