【发布时间】:2018-07-31 23:55:47
【问题描述】:
我有一个 MassTransit 路由单,其中包含几个完美运行的活动(我喜欢 MT),但我现在想为失败的事件添加其他信息(即错误名称和描述)。
目前,我在活动中捕获自定义异常并发回错误响应,该响应按计划启动所有补偿活动,但我似乎无法在订阅者中获取异常详细信息(添加到然后我将事件发送回传奇)。
我的活动如下所示:
public async Task<ExecutionResult> Execute(ExecuteContext<ICreateLink> context)
{
var messageCommand = context.Arguments;
var command = new CreateLink(
messageCommand.LinkId,
messageCommand.GroupId);
try
{
await _commandDispatcher.ExecuteAsync(command).ConfigureAwait(false);
return context.Completed();
}
catch (Exception ex)
{
return context.Faulted(ex);
}
}
然后在构建路由单时我有:
builder.AddSubscription(
context.SourceAddress,
RoutingSlipEvents.ActivityFaulted,
RoutingSlipEventContents.All,
nameof(CreateLinkActivity),
x => x.Send<ICreateLinkFailed>(new CreateLinkFailed
{
LinkId = context.Message.LinkId,
LinkName = context.Message.Name
}));
我以为我可以从上下文中访问异常信息,但可惜我似乎找不到它,这对我来说是最后一块拼图。
我开始认为我没有考虑到这一点。最终我想将错误类型传递回路由单,然后传递给它正在调用的 saga。
【问题讨论】:
标签: c# asp.net-core masstransit