Skip to content

Consumers

El consumer es un agente que se subscribe a un topic y reacciona a los eventos que suceden en ese topic.

Para crear un consumer con la librería debemos simplemente declarar cuál será el objeto suscrito, que evento espera y en qué topic. La librería se encargará de ejecutar la acción adecuada.

Example

Configuración

En nuestro archivo de startup debemos importar la librería Andreani.ARQ.AMQStreams

Simplemente llamar al método de extensión AddKafka().

 public void Configure(IWebHostBuilder builder)
    {
      builder.ConfigureServices((ctx, c) =>
      {
          c.AddKafka(ctx.Configuration)
          .ToConsumer<Subscriber, CustomEvent>("my-topic")
          .Build();
      });
    }

El metodo ToConsumer necesita que le declaren el objeto de tipo ISubscriber (Subscriber), el evento que va a esperar (CustomEvent) y el topic al cual va a estar suscrito (my-topic)

Como consumir

Para consumir un evento el objeto que será el suscriptor debe implementar la interface ISubscriber

public class Subscriber : ISubscriber

Luego el objeto suscriptor debe contener al menos un método que reciba por parámetro el evento.

public void ReciveCustomEvent(CustomEvent @event)
{
    Console.WriteLine($"Content event codigo: {@event.codigo} - message {@event.mensaje}");
}

La librería invocará a este método cuando reciba el evento que se declaró.

Si necesitamos conocer más información del evento, simplemente podemos crear un método que reciba el objeto ConsumerMetadata

public void ReciveCustomEvent(CustomEvent @event, ConsumerMetadata metadata)
{
    Console.WriteLine($"Recived event with key: {metadata.Key} and Timestamp: {metadata.Timestamp.UtcDateTime.ToString()}");
    Console.WriteLine($"Content event codigo: {@event.codigo} - message {@event.mensaje}");
}