C# MassTransit在Saga中的处理故障
我正在尝试处理Saga实例中的特定C# MassTransit在Saga中的处理故障,c#,asp.net-core,masstransit,saga,C#,Asp.net Core,Masstransit,Saga,我正在尝试处理Saga实例中的特定错误,如中所述。 在我的StateMachine课程中,我有: 事件( ()=>一个错误, x=>x .CorrelateById(上下文=>context.Message.Message.CorrelationId)) 在任何情况下(当错误(); ... 公共事件CustomCommandReceived{get;protected set;} 公共事件OnError{get;protected set;} ... private EventActivityB
错误
,如中所述。
在我的StateMachine
课程中,我有:
事件(
()=>一个错误,
x=>x
.CorrelateById(上下文=>context.Message.Message.CorrelationId))
在任何情况下(当错误();
...
公共事件CustomCommandReceived{get;protected set;}
公共事件OnError{get;protected set;}
...
private EventActivityBinder WhenError()
{
返回时间(OnError)
。然后(上下文=>
{
context.Instance.Status=RequestProcessingStatus.Error;
});
}
但当发生Fault
时,处理程序中的代码没有执行,Fault
消息转到。\u跳过了队列
我做错了什么?是否在初始状态下处理CustomCommands
,并引发异常?这将阻止保存saga实例,因此在发布故障后,将导致忽略故障,因为任何
期间都不包括初始或最终状态。如果要在初始状态下处理故障,则需要显式添加它
Initially(WhenError());
DuringAny(WhenError());
谢谢你的回答!这不是我的问题,我在定制传奇州处理faulds。但最好知道,在任何时候,一开始都不会遇到。我的问题在于Saga的错误配置——其中一个消费者被错误地指向Saga队列并处理他不知道的类型的消息。