我正在使用MassTransit 3.5.7。我在启动总线之前添加了相关ID:
MessageCorrelation.UseCorrelationId<ICustomerRegistered>(x => x.CustomerGuid);
MessageCorrelation.UseCorrelationId<ICustomerUpdated>(x => x.Customer.Guid);
MessageCorrelation.UseCorrelationId<IOrderPaid>(x => x.OrderGuid);
MessageCorrelation.UseCorrelationId<IOrderPaymentAuthorized>(x => x.OrderGuid);
MessageCorrelation.UseCorrelationId<IOrderPlaced>(x => x.Order.OrderGuid);
MessageCorrelation.UseCorrelationId<IOrderRefunded>(x => x.OrderGuid);
我使用Serliog 2.5.0进行记录:
Bus.Factory.CreateUsingAzureServiceBus(serviceBus =>
{
serviceBus.UseSerilog();
...
}
我可以看到CorrelationId已添加到邮件标题中,但它不会作为自定义属性添加到日志中。
为了记录所有已记录消息的CorrelationId,我需要做什么?
更新
我实现了一个Serilog richher和一个MassTransit自定义中间件,如here,但相关ID只记录在收到的(消费的)消息中。发布消息时不会记录它。有谁知道如何在发布消息时记录相关ID?
答案 0 :(得分:1)
您可以在自定义masstransit过滤器中执行此操作。 如果您设置过滤器
cfg.ConfigureSend(c => c.UseSendFilter(new YourSendFilter()));
或发布
cfg.ConfigurePublish(c => c.UseSendFilter(new YourSendFilter()));