Rebus - 在处理消息之前执行操作

时间:2016-12-20 09:20:28

标签: log4net rebus

在调用IHandleMessages.Handle之前,Rebus是否有办法执行某个操作?

特别是我想为log4net设置我的日志的相关ID,而我真的很难让这个工作起作用。

我有一个活动模式转换器来从

获取Guid

System.Diagnostics.Trace.CorrelationManager.ActivityId = Guid.NewGuid()

但是我希望能够在激活每个句柄之前设置它。 我使用Autofac作为Rebus的容器

1 个答案:

答案 0 :(得分:1)

实现这一目标的一种简单方便的方法是包含Rebus.Events package,它允许在每个消息处理之前设置一个事件委托,如下所示:

Configure.With(...)
    .(...)
    .Events(e =>
    {
        e.BeforeMessageHandled += (bus, headers, message, context, args) =>
        {
            // do what you want in here :)
        };
    });