【问题标题】:Adding custom properties to Fault entity向故障实体添加自定义属性
【发布时间】:2019-04-23 22:30:57
【问题描述】:

我想知道是否可以为故障消息配置附加属性?我有自己的异常类型,定义如下:

public class DomainException : Exception 
{
  public string Code { get; private set; } 
 ...
}

我有处理所有发生的错误的通用消费者,但我不知道如何从错误实体获取 Code 属性。 Fault 实体包含有关引发的异常类型、相关消息的信息,但遗憾的是缺少 Code 属性。

是否可以将此信息传递给故障消费者?也许在标题内?

【问题讨论】:

    标签: c# microservices masstransit


    【解决方案1】:

    如果您的异常处于该级别的业务逻辑,建议您自己捕获异常,并发布与您的业务上下文相关的自己的域故障事件。例如,您可以定义自己的 DomainFault 类型:

    public interface DomainFault : 
        Fault
    {
        string Code { get; }
    }
    

    然后,您可以在您的消费者中使用 try/catch 处理程序自己发布它,或者您可以为消费者管道创建一个过滤器以将其与多个消费者一起使用。

    【讨论】:

    • 好的,我明白了。我还有一个问题——为什么公共交通总是会产生至少两个交易所。我在命名空间命令中有消息 CreateOrder。为什么 MassTransit 创建两个交换,第一个是 Commands.CreateOrder?
    • 因为 MassTransit 支持 RabbitMQ 上的多态消息传递,您可以在其中订阅接口,并且发布的任何实现该接口的类型都将作为该接口类型交付给消费者。
    • 非常感谢,但是.. 我有一个小问题。是否可以这样做,每当我从我的 api 向总线发送任何命令时,它将被两个消费者使用?第一个消费者是通用命令消费者(在服务 a 中),第二个是特定于这个特定命令的消费者(在服务 b 中)?
    猜你喜欢
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多