我目前正在使用Masstransit和Courier模式。帶參數的MassTransit活動錯誤
我設置了一個可能失敗的活動,我希望能夠訂閱此故障並採取相應的行動。
我的問題是,即使我可以訂閱失敗,甚至看到導致失敗的異常,但我無法將任何參數傳遞給它。
出於測試目的,supose我有以下活動:
public class MyActivity : ExecuteActivity<MyMessage>
{
public Task<ExecutionResult> Execute(ExecuteContext<MyMessage> context)
{
try
{
// .... some code
throw new FaultException<RegistrationRefusedData>(
new RegistrationRefusedData(RegistrationRefusedReason.ItemUnavailable));
// .... some code
}
catch (Exception ex)
{
return Task.FromResult(context.Faulted(ex));
}
}
}
的問題是在我傳遞作爲異常的參數的原因(RegistrationRefusedReason
)。如果我訂閱一個RoutingSlipActivityFaulted
消費者,我可以幾乎得到我所需要的所有信息:(?也許濫用模式)
public class ActivityFaultedConsumer : IMessageConsumer<RoutingSlipActivityFaulted>
{
public void Consume(RoutingSlipActivityFaulted message)
{
string exceptionMessage = message.ExceptionInfo.Message; // OK
string messageType = message.ExceptionInfo.ExceptionType; // OK
RegistrationRefusedReason reason = ??????;
}
}
我覺得我缺少的東西在這裏很重要。
是否有任何其他方式從故障活動中獲取參數?
我想如果我有一個'context.FaultedWithVariables'在活動將工作... –