gpt4 book ai didi

c# - 使用 MassTransit 消费所有消息

转载 作者:太空狗 更新时间:2023-10-29 22:57:56 25 4
gpt4 key购买 nike

我目前正在构建一个使用 MassTransit 和 RabbitMQ 作为我的消息传递层的系统。我试图找到一种方法让消费者监听总线上所有类型的所有消息。这是我们的审计日志框架,我们想要记录所有通过消息总线的事件。

有没有办法在 MassTransit 中做到这一点?

最佳答案

您需要在您的消息中添加某种类型的审计接口(interface),以便为审计目的而订阅。例如,如果您要创建一个基本接口(interface):

public interface IAuditable
{
DateTime Timestamp {get;}
string Username {get}
}

或者任何必须普遍可用于审计的属性。然后您可以订阅该界面并获取每条消息的副本。或者您可以将其设为空接口(interface)并仅审核消息 header 。但是消息需要实现它并发布它以获取副本。

这似乎是一个普遍的坏主意,因为您正在到处创建消息的副本...

另一种方法是将观察者添加到消息消费中,并使用该观察者写入审计存储或将消息发送到审计队列并让异步消费者写入审计存储。

问题是,如果您正在审核每条消息,并且每条消息都在发送一条审核消息,请确保您不会观察您的审核消费者,否则您将无休止地死去。

观察者选项是我最喜欢的,因为它不仅记录消息,还允许捕获配置(成功/故障),以及使用消息的主机、处理持续时间等。

关于c# - 使用 MassTransit 消费所有消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34358497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com