RabbitMQ.NET library to easily integrate RabbitMQ in .NET Core applications

RabbitMQ.NET

RabbitMQ.NET is a .NET Core library to easily integrate RabbitMQ in .NET Core applications

Nuget
https://www.nuget.org/packages/RabbitMQ.NET/

Github
https://github.com/rizansari/RabbitMqCore

Installation

Install-Package RabbitMQ.NET

Using the library
RabbitMQ.NET is a simple library to Publish and Subscribe easily in .NET Core applications.

Setup DI

var serviceProvider = new ServiceCollection()
       
.AddLogging(loggingBuilder =>
       
{
            loggingBuilder
.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
       
})
       
.AddRabbitMQCore(options =>
       
{
            options
.HostName = "localhost";
       
})
       
.BuildServiceProvider();

Get QueueService

var rmq = serviceProvider.GetRequiredService();

Publisher Examples
Publish on Exchange

var pub1 = rmq.CreatePublisher(options =>
{
    options
.ExchangeOrQueue = RabbitMqCore.Enums.ExchangeOrQueue.Exchange;
    options
.ExchangeName = "exchange.1";
    options
.ExchangeType = RabbitMqCore.Enums.ExchangeType.direct;
});
var obj = new SimpleObject() { ID = 1, Name = "One" };
var message = new RabbitMessageOutbound()
{
   
Message = JsonConvert.SerializeObject(obj)
};
pub1
.SendMessage(message);

Publish on Exchange with Routing Key

var pub2 = rmq.CreatePublisher(options =>
{
    options
.ExchangeOrQueue = RabbitMqCore.Enums.ExchangeOrQueue.Exchange;
    options
.ExchangeName = "exchange.1";
    options
.ExchangeType = RabbitMqCore.Enums.ExchangeType.direct;
    options
.RoutingKeys.Add("routing.key");
});
var obj2 = new SimpleObject() { ID = 2, Name = "Two" };
var message2 = new RabbitMessageOutbound()
{
   
Message = JsonConvert.SerializeObject(obj2)
};
pub2
.SendMessage(message2);

Publish on Queue

var pub3 = rmq.CreatePublisher(options =>
{
    options
.ExchangeOrQueue = RabbitMqCore.Enums.ExchangeOrQueue.Queue;
    options
.QueueName = "queue.3";
});
pub3
.SendMessage(message);

Subscriber Examples
Subscribe with Exchange, Queue and with Routing Key

var sub1 = rmq.CreateSubscriber(options =>
{
    options
.ExchangeOrQueue = RabbitMqCore.Enums.ExchangeOrQueue.Exchange;
    options
.ExchangeName = "exchange.1";
    options
.QueueName = "queue.1";
    options
.RoutingKeys.Add("routing.key.1");
});
sub1
.Subscribe(opt => { Console.WriteLine("sub 1 called: {0}", opt.ToString()); });

Subscribe with Queue

var sub3 = rmq.CreateSubscriber(options =>
{
    options
.ExchangeOrQueue = RabbitMqCore.Enums.ExchangeOrQueue.Queue;
    options
.QueueName = "queue.3";
});
sub3
.Subscribe(opt => { Console.WriteLine("sub 3 message:{0}", opt.Message); });

Subscribe with Exchange. Temporary queue will be created automatically

var sub4 = rmq.CreateSubscriber(options =>
{
    options
.ExchangeOrQueue = RabbitMqCore.Enums.ExchangeOrQueue.Exchange;
    options
.ExchangeName = "exchange.1";
});
sub4
.Subscribe(opt => { Console.WriteLine("sub 4 called: {0}", opt.ToString()); });

Subscribe to Exchange with Routing key

var sub5 = rmq.CreateSubscriber(options =>
{
    options
.ExchangeOrQueue = RabbitMqCore.Enums.ExchangeOrQueue.Exchange;
    options
.ExchangeName = "exchange.1";
    options
.RoutingKeys.Add("routing.key.2");
});
sub5
.Subscribe(opt => { Console.WriteLine("sub 5 called: {0}", opt.ToString()); });

Subscribe to Exchange and Queue with TTL

var sub6 = rmq.CreateSubscriber(options =>
{
    options
.ExchangeOrQueue = RabbitMqCore.Enums.ExchangeOrQueue.Exchange;
    options
.ExchangeName = "exchange.1";
    options
.QueueName = "queue.4";
    options
.Arguments.Add(ArgumentStrings.XMessageTTL, 5000);
});
sub6
.Subscribe(opt => { Console.WriteLine("sub 6 called: {0}", opt.ToString()); });

Leave a Reply

Your email address will not be published.