MassTransit:有没有办法记录收入信息

FSo*_*ou1 2 .net masstransit

我想记录我在MassTransit中消费的每条消息.有没有办法实现全局拦截器,我可以处理收入消息或使用配置实现它?

我当前的配置如下所示:

BusFactory = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
    var host = cfg.Host(new Uri(AppSettings.RmqConnectionString), h => { });

    cfg.UseNLog();

    cfg.ReceiveEndpoint(host, RmqPropertyKeys.CallbackQueue, e=> e.LoadFrom(container));
});
Run Code Online (Sandbox Code Playgroud)

Vla*_*nov 6

另一种方法是使用ConsumeObserver.

实现接口IConsumeObserver:

public class ConsumeObserver : IConsumeObserver
{
    private readonly ILogger<ConsumeObserver> _logger;

    public ConsumeObserver(ILogger<ConsumeObserver> logger)
    {
        _logger = logger;
    }

    public Task ConsumeFault<T>(ConsumeContext<T> context, Exception exception) where T : class
    {
        //use _logger

        return Task.CompletedTask;
    }

    public Task PostConsume<T>(ConsumeContext<T> context) where T : class
    {
        //use _logger

        return Task.CompletedTask;
    }

    public Task PreConsume<T>(ConsumeContext<T> context) where T : class
    {
        //use _logger

        return Task.CompletedTask;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后连接你的观察者:

busControl.ConnectConsumeObserver(consumeObserver);
Run Code Online (Sandbox Code Playgroud)