c# - 从 MassTransit 故障消息中获取异常属性
问题描述
我希望能够访问从故障消费者内部的消费者抛出的原始异常的属性。例如,如果未处理的异常是ValidationException
带有错误集合的,我是否能够从故障使用者访问该集合?
我似乎唯一可以访问的是 ExceptionType 和 Message。我想我可以解析异常消息以获取错误集合,但是有没有办法在不解析消息和生成集合的情况下实现这一点?
public async Task Consume(ConsumeContext<Fault<MyMessage>> context)
{
string exceptionType = context.Message.Exceptions[0].ExceptionType;
string exceptionMessage = context.Message.Exceptions[0].Message;
if (exceptionType == "FluentValidation.ValidationException")
{
// here I want to get the Errors collection on the exception of type ValidationException
}
}
解决方案
MassTransit 不会序列化Exception
,它会将异常详细信息封装在事件ExceptionInfo
中包含的类型中。Fault
无法访问原始Exception
类型,这是有充分理由的。在我看来,将异常序列化为消息契约的一部分只是一种不好的做法。
推荐阅读
- http - 如何使用 SAP ICF 将数据分块发送到外部服务?
- css - 使用 webpack 和/或汇总将自动缩小的 CSS 文件加载为字符串的最简单/最佳方法是什么?
- node.js - 在 NodeJS 中安装 NPM 包
- html - 当我转换到不同的元素时,导航栏中的元素会出错。我怎样才能防止这种情况发生?
- javascript - Javascript 价值获取
- nginx - 尽管安装了 nginx,但无法连接到我的 kubernetes 集群
- sql - 在 python/sqlite3 中使用 for 循环设置与另一个表相关的外键
- php - 从 php 运行 docker 命令
- terraform - Terraform (v0.13) 如何获取(第三方)提供程序二进制文件的最新版本?
- regex - 使用正则表达式在字符串中添加额外的单引号,以便动态传递