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