如何在MassTransit中进行消息拦截?

时间:2012-08-10 00:33:50

标签: c# masstransit

我想在消息或传奇之前检查每条消息。 我想我想要一个IInboundMessageInterceptor,但我看不到一种简单的方法来注入一个自定义的。 如何在MT中实现消息拦截?和/或如何使用自定义IInboundMessageInterceptor配置总线?

1 个答案:

答案 0 :(得分:5)

您可以执行以下操作。 您的拦截器必须实现IInboundMessageInterceptor

  Bus.Initialize(sbc =>
            {
                // ... Initialise Settings ...

                var busConfiguratorr = new PostCreateBusBuilderConfigurator(bus =>
                    {

                        var interceptorConfigurator = new InboundMessageInterceptorConfigurator(bus.InboundPipeline);
                        interceptorConfigurator.Create(new MyIncomingInterceptor(bus));
                    });

                sbc.AddBusConfigurator(busConfiguratorr);
            });

然后你可以像这样写一个拦截器

    internal class MyInboundInterceptor : IInboundMessageInterceptor
{
    public MyInboundInterceptor(ServiceBus bus)
    {

    }

    public void PreDispatch(IConsumeContext context)
    {
        IConsumeContext<AwesomeCommand> typedContext;
        if (context.TryGetContext(out typedContext))
        {
            // Do SOmething with typedContext.Message
        }
    }

    public void PostDispatch(IConsumeContext context)
    {
    }
}