Skip to content

Generic Handler

La libreria Infra.EventBus.IbmMQ cuenta actualmente con la posibilidad de recibir eventos con un handler generico el cual no trata de transformar el mensaje en un evento de negocio, si no que lo entrega al handler sin mas procesamiento. Este handler es ideal cuando lo que se quiere recibir del IbmMQ no son eventos de negocio si no mensajes en algun otro formato, como por ejemplo: JSON.

Como recibir mensajes con el handler generico.

  1. Antes que nada, crear una clase que implemente la interfaz ITextMessageEventHandler. La misma sera la encargada de procesar los mensajes una vez recibidos.

 public class TextMessageHandler: ITextMessageEventHandler
 {
   public Task Handle(string message, IConsumeContext context) 
   {
     // Logica para procesar el mensaje aqui...
     return Task.FromResult(0);
   }
   public Task<bool> HandleError(string @event, Exception exception) 
   {
      return Task.FromResult(false); // false == commit, true == backout (back to the queue)
   }
 }
2. Registrar el handler dentro del contenedor de IoC. Para registrar el handlers usamos el método SubscribeToAllAsText de le siguiente manera.

IMPORTANTE

Tenemos que tener en cuenta que al registrar el handler, todas las suscripciones previas son anuladas y la unica forma de recibir mensajes sera mediante este handler.

public void Configure(HostBuilderContext context, IServiceCollection services)
{
    // Add your services here....
    services.AddIbmMQEventBus(context.Configuration)
        .SubscribeToAllAsText<TextMessageHandler>();
}