繁体   English   中英

MassTransit 在 Saga 中处理故障

[英]MassTransit handling Faults in Saga

我正在尝试处理 Saga 实例中的特定Faulthttps://masstransit-project.com/MassTransit/usage/exceptions.html#faults 中所述 在我的StateMachine课程中,我有:

Event(
    () => OnError,
    x => x
        .CorrelateById(context => context.Message.Message.CorrelationId))

DuringAny(WhenError());

...

public Event<CustomCommand> CustomCommandReceived { get; protected set; }

public Event<Fault<CustomCommand>> OnError { get; protected set; }

...

private EventActivityBinder<RequestSaga, Fault<CustomCommand>> WhenError()
{
    return When(OnError)
        .Then(context =>
        {
            context.Instance.Status = RequestProcessingStatus.Error;
        });
}

但是当Fault<CustomCommand>发生时,处理程序中的代码没有执行并且Fault<CustomCommand>消息进入..._skipped队列。

我究竟做错了什么??

CustomCommands是否在初始状态下处理并抛出异常? 这将阻止保存 saga 实例,因此在发布错误后,将导致错误被忽略,因为DuringAny不包括初始最终状态。 如果要处理Initial状态下的故障,需要显式添加。

Initially(WhenError());
DuringAny(WhenError());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM