Есть ли способ изменить заголовки сообщений в промежуточном программном обеспечении во время сообщения? Как я вижу, интерфейс заголовков в ConsumeContext не предоставляет какой-либо возможности для установки заголовка, есть ли другой способ достичь этого? Спасибо!Изменить заголовок сообщения на потребляющем промежуточном программном обеспечении
0
A
ответ
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!");
}