在消息消费期间,有没有办法在中间件中修改消息的标头? 我可以看到ConsumeContext上的Headers接口没有提供任何设置头的方法,还有其他方法可以实现吗? 谢谢!
答案 0 :(得分:0)
您无法在使用中间件时添加标头,但是,您可以将有效负载添加到可在管道中其他位置使用的上下文中。
例如,如果您有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!");
}