An ActiveMQ istance or some other Broker with AMQP 1.0 available
Install the nuget package dotnet add package Devies.ActiveMQ.AMQP
Create your QueueOptions
Create your queue message
Create your task
Call services.AddQueueReader to start consuming your queue
AddQueueReader will add a HostedService to consume the queue in the background
appsettings.Development.json
{
"Settings" : {
"Url" : " amqp.org" ,
"Port" : " 5672" ,
"User" : " username" ,
"Pass" : " password" ,
"ReceiverName" : " Service" ,
"Queue" : " APP.TEST.QUEUE.TEST"
}
}
public class QueueMessage
{
public string Identifier { get ; set ; }
}
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 ;
}
}
public void ConfigureServices ( IServiceCollection services )
{
var queueOptions = Configuration
. GetSection ( "QueueOptions" )
. Get < QueueOptions > ( ) ;
...
services . AddQueueReader < QueueMessage , QueueTask > ( queueOptions ) ) ;
}
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" }
} ) ;
}
}