我想在每条消息到达消费者或传奇之前检查它。我想我想要一个 IInboundMessageInterceptor 但我看不到注入自定义的简单方法。如何在 MT 中实现消息拦截?和/或如何使用自定义 IInboundMessageInterceptor 配置总线?
问问题
1395 次
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 回答