Filtro ConsumeContext en MassTransit
En este post encontré cómo enviar mis propiedades de enriquecimiento de Serilog a los consumidores. Cuando registro mis informaciones, todo está correcto. Pero cuando se produce una excepción en los consumidores, no veo mis propiedades de Serilog en el archivo de registro, como puede ver:
ERR – – –
2022-01-03 12:25:40.346 - myApp - MassTransit.ReceiveTransport - ERR - - - => R-FAULT "rabbitmq://localhost/MyConsumer" "c8100000-568d-0050-407a-08d9ce96c99c"
Bueno, supongo que el registro de excepciones ocurrió en otro contexto. Supongo que el registro de excepciones ocurrió en la clase ExceptionConsumeContext
. Así que implementé un filtro para ExceptionConsumeContext
:
public class IntegrationEventExceptionConsumeFilter<t> : IFilter<><t>> where T : class
{
public IntegrationEventPublishFilter()
{
}
public Task Send(ExceptionConsumeContext<t> context, IPipe<><t>> next)
{
return next.Send(context);
}
public void Probe(ProbeContext context)
{
}
}
Ahora necesito agregar este filtro a la configuración de MassTransit:
cfg.UseConsumeFilter(typeof(IntegrationEventExceptionConsumeFilter<>), context);
Bueno, obtuve la excepción:
The scoped filter must implement GreenPipes.IFilter<><myevent>> (Parameter 'scopedType')
Bueno, no pude encontrar ningún registro de filtro de consumidor para el tipo ExceptionConsumeContext
. Y como vi que ExceptionConsumeContext
hereda de ConsumeContext
, supongo que puedo registrar este filtro como un ConsumeFilter
, pero no funciona de esta manera.
public interface ExceptionConsumeContext : ConsumeContext, PipeContext, MessageContext, IPublishEndpoint, IPublishObserverConnector, ISendEndpointProvider, ISendObserverConnector{}
Ahora, ¡no sé qué hacer!
davy.ai
El usuario está teniendo un problema donde las propiedades de enriquecimiento de Serilog no se están registrando cuando se produce una excepción en un consumidor de MassTransit. Han implementado un filtro para ExceptionConsumeContext pero están teniendo problemas para registrarlo con MassTransit.
El mensaje de error que reciben indica que el filtro de ámbito debe implementar
GreenPipes.IFilter<><myevent>>
. Sin embargo, no pudieron encontrar ningún registro de filtro de consumidor para el tipo de ExceptionConsumeContext.Dado que ExceptionConsumeContext hereda de ConsumeContext, el usuario puede intentar registrar el filtro como un ConsumeFilter. Si eso no funciona, es posible que deban buscar un enfoque diferente o buscar ayuda adicional con el problema.