Skip to content

DeviesDevelopment/Devies.ActiveMQ.AMQP

Repository files navigation

Devies.ActiveMQ.AMQP

Requriments

  • An ActiveMQ istance or some other Broker with AMQP 1.0 available

How to

  1. Install the nuget package dotnet add package Devies.ActiveMQ.AMQP
  2. Create your QueueOptions
  3. Create your queue message
  4. Create your task
  5. Call services.AddQueueReader to start consuming your queue
  6. AddQueueReader will add a HostedService to consume the queue in the background

Example Consuimg

appsettings.Development.json

{
   "Settings": {
      "Url": "amqp.org",
      "Port": "5672",
      "User": "username",
      "Pass": "password",
      "ReceiverName": "Service",
      "Queue": "APP.TEST.QUEUE.TEST"
    }
}

QueueMessage.cs

public class QueueMessage
{
    public string Identifier { get; set; }
}

QueueTask.cs

public class QueueTask : BaseQueueTask<QueueMessage>
{
    public QueueTask(IServiceProvider serviceProvider)
        : base(serviceProvider)
    {
    }

    public override async Task<MessageAction> Execute(IServiceProvider serviceProvider,
        QueueMessage message)
    {
        Console.WriteLine(message.Identifier);

        return MessageAction.ACCEPT;
    }
}

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    var queueOptions = Configuration
        .GetSection("QueueOptions")
        .Get<QueueOptions>();

    ...

    services.AddQueueReader<QueueMessage, QueueTask>(queueOptions));
}

Example posting

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    var queueOptions = Configuration
        .GetSection("QueueOptions")
        .Get<QueueOptions>();

    ...

    services.AddSingleton<IQueueWriteService<QueueMessage>>(s =>
        new WriteAMPQMQService<QueueMessage>(queueOptions));
}
public class HomeController : Controller
{
    private readonly IQueueWriteService<QueueMessage> queueWriter;

    public HomeController(IQueueWriteService<QueueMessage> queueWriter)
    {
        this.queueWriter = queueWriter;
    }

    [HttpGet("test")]
    public async Task<IActionResult> Test()
    {
        await queueWriter.AddToQueue(new List<QueueMessage> { 
            new QueueMessage { Identifier = "123" }
        });
    }
}
    

Dependencies

About

A C# library with lifetime awareness to consume and write to AMQP 1.0 queues

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages