【发布时间】:2016-11-21 14:32:18
【问题描述】:
有没有办法在消息消费期间修改中间件中的消息头? 正如我所见,ConsumeContext 上的 Headers 接口没有提供任何设置标题的方法,还有其他方法可以实现吗? 谢谢!
【问题讨论】:
标签: c# rabbitmq masstransit
有没有办法在消息消费期间修改中间件中的消息头? 正如我所见,ConsumeContext 上的 Headers 接口没有提供任何设置标题的方法,还有其他方法可以实现吗? 谢谢!
【问题讨论】:
标签: c# rabbitmq masstransit
您不能在使用中间件的过程中添加标头,但是,您可以将 payloads 添加到可以在管道中的其他地方使用的上下文中。
例如,如果您有一个 AuthorizationContext
上下文,您可以将其添加到中间件组件内的有效负载中:
public Task Send(ConsumeContext context, IPipe<ConsumeContext> next)
{
context.GetOrAddPayload(() => CreateAuthorizationContext());
return next.Send(context);
}
然后,上下文的另一个组件或用户可以访问它:
public Task Consume(ConsumeContext<MyMessage> context)
{
var authorizationContext = context.GetPayload<AuthorizationContext>();
if(authorizationContext.IsAdmin)
return UpdateSomething(context);
throw new NotAuthorizationException("Booo!");
}
【讨论】: