3

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

4

1 回答 1

4

您可以执行以下操作。你的拦截器必须实现 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)
    {
    }
}
于 2012-12-10T17:26:56.513 回答