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 に答える