RabbitMQΒΆ

RabbitMQ is a populare message broker for distributed systems. The package Concept.Service.RabbitMq contains RabbitMqService that has methods for subscribing and publishing messages. It uses RawRabbit under the hood.

public class FooService : RabbitMqService
{
  public FooService(IBusClient busClient) : base(busClient) { }

  public override async Task StartAsync(CancellationToken ct = default(CancellationToken))
  {
    // Method in base class
    await SubscribeAsync<PerformFoo>(HandleFooAsync, ct: ct);
  }

  private async Task HandleFooAsync(PerformFoo message, ConceptContext context)
  {
    /* Handle message */
    // Method in base class
    await PublishAsync(new FooPerformed {Success = true});
  }
}