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.