我使用了一个NET5API,它通过MassTransit发布和消费消息。问题是,我试图找到一种方法来为这两种情况(发布、消费)创建自定义中间件或管道,以测量发布或消费消息的时间……
我试图创建一个与文档表示https://masstransit-project.com//advanced/middleware/custom.html完全相同的自定义中间件,但问题是,当我试图发布消息时,无法调用这些方法。根据this topic的说法,它只适用于消费的消息。有没有人知道如何为这两种情况创建管道或中间件(发布、消费)?
发布于 2021-06-24 20:05:34
有两个方法,ConfigureSend
和ConfigurePublish
,可以通过IBusFactoryConfigurator
访问,其中过滤器可以分别添加到发送和发布管道。
发布于 2021-06-29 07:23:26
在我看来,您只需要测量(log?)发布和使用消息的时间-如果是这样,您可以使用observers。具体地说,是publish observers和consume observers。
例如,消费者观察者的一个例子是:
public class ConsumeObserver : IConsumeObserver
{
Task IConsumeObserver.PreConsume<T>(ConsumeContext<T> context)
{
// called before the consumer's Consume method is called
}
Task IConsumeObserver.PostConsume<T>(ConsumeContext<T> context)
{
// called after the consumer's Consume method is called
// -> Log DateTime.Now with message details found in context. <-
}
Task IConsumeObserver.ConsumeFault<T>(ConsumeContext<T> context, Exception exception)
{
// called if the consumer's Consume method throws an exception
}
}
https://stackoverflow.com/questions/68111389
复制相似问题