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

Rebus - Execute action before message is handled

Rebus 上有没有办法在调用 IHandleMessages.Handle 之前执行一个动作?

特别是我想为 log4net 设置我的日志的相关 ID,但我很难做到这一点。

我有一个 activity 模式转换器来从

获取 Guid

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

但我希望能够在激活每个句柄之前进行设置。 我使用 Autofac 作为 Rebus

的容器

实现此目的的一种简单方便的方法是包含 Rebus.Events package,它允许设置一个事件委托,以便在像这样处理每条消息之前调用它:

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