我有一个 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。
陪伴而非守候
相关分类