我想记录我在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)
另一种方法是使用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)
| 归档时间: |
|
| 查看次数: |
1038 次 |
| 最近记录: |