JN.RabbitMQClient
2.3.3
See the version list below for details.
dotnet add package JN.RabbitMQClient --version 2.3.3
NuGet\Install-Package JN.RabbitMQClient -Version 2.3.3
<PackageReference Include="JN.RabbitMQClient" Version="2.3.3" />
paket add JN.RabbitMQClient --version 2.3.3
#r "nuget: JN.RabbitMQClient, 2.3.3"
// Install JN.RabbitMQClient as a Cake Addin #addin nuget:?package=JN.RabbitMQClient&version=2.3.3 // Install JN.RabbitMQClient as a Cake Tool #tool nuget:?package=JN.RabbitMQClient&version=2.3.3
JN.RabbitMQClient
Simple implementation of RabbitMQ consumer and sender.
Features
- Sender implementation
- Multiple consumer instances supported
- Multiple processing options for received messages
- Random expiration for messages sent to an holding queue (depending on the processing option)
- TLS connection support
- Limiter for message processing
More details available on the project website.
Install
Download the package from NuGet:
Install-Package JN.RabbitMQClient -Version [version number]
Usage
First, you must create the RabbitMqConsumerService
and then define delegates for ReceiveMessage
, ShutdownConsumer
and ReceiveMessageError
. The service will start the required number of consumers when StartConsumers
is called.
To use a retry queue, the method StartConsumers
should be called with a RetryQueueDetails
object.
Message processing instructions
OK
- message is considered as successfully processed
RequeueMessageWithDelay
- message is removed from the queue, but sent to a holding queue for later processing (typically with a dead letter configuration)
IgnoreMessage
- message is removed from the queue and ignored
IgnoreMessageWithRequeue
- message is rejected and sent back to the queue
Example
Example for consumer and sender services:
class Program
{
static void Main(string[] args)
{
// consumer
var consumerService = new RabbitMqConsumerService(GetBrokerConfigConsumers());
consumerService.ReceiveMessage += ReceiveMessage;
consumerService.ShutdownConsumer += ShutdownConsumer;
consumerService.ReceiveMessageError += ReceiveMessageError;
consumerService.StartConsumers("my consumer");
// sender
var senderService = new RabbitMqSenderService(GetBrokerConfigSender());
senderService.Send("my message");
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
consumerService.Dispose();
}
private static IBrokerConfigSender GetBrokerConfigSender()
{
IBrokerConfigSender configSender = new BrokerConfigSender()
{
Username = "test",
Password = "123",
Host = "localhost",
VirtualHost = "/",
RoutingKeyOrQueueName = "MyTestQueue"
};
return configSender;
}
private static IBrokerConfigConsumers GetBrokerConfigConsumers()
{
IBrokerConfigConsumers configConsumers = new BrokerConfigConsumers()
{
Username = "test",
Password = "123",
Host = "localhost",
VirtualHost = "/",
RoutingKeyOrQueueName = "MyTestQueue",
ShuffleHostList = false,
Port = 0,
TotalInstances = 3
};
return configConsumers;
}
private static async Task ReceiveMessageError(string routingKeyOrQueueName, string consumerTag, string exchange, string message, string errorMessage)
{
await Console.Out.WriteLineAsync($"Error: '{consumerTag}' | {errorMessage}");
}
private static async Task ShutdownConsumer(string consumerTag, ushort errorCode, string shutdownInitiator, string errorMessage)
{
await Console.Out.WriteLineAsync($"Shutdown '{consumerTag}' | {errorCode} | {shutdownInitiator} | {errorMessage}");
}
private static async Task<Constants.MessageProcessInstruction> ReceiveMessage(string routingKeyOrQueueName, string consumerTag, long firstErrorTimestamp, string exchange, string message)
{
await Console.Out.WriteLineAsync($"Message received from '{consumerTag}': {message}");
return Constants.MessageProcessInstruction.OK;
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.1
- RabbitMQ.Client (>= 6.2.2)
-
.NETStandard 2.0
- RabbitMQ.Client (>= 6.2.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.5.1 | 122 | 2/16/2024 |
2.5.0 | 134 | 2/14/2024 |
2.4.3.1 | 457 | 11/2/2022 |
2.4.3 | 494 | 7/19/2022 |
2.4.2 | 450 | 5/23/2022 |
2.4.1 | 433 | 4/20/2022 |
2.4.0 | 605 | 2/7/2022 |
2.3.4 | 301 | 12/28/2021 |
2.3.3 | 400 | 10/14/2021 |
2.3.2 | 328 | 3/17/2021 |
2.3.0 | 523 | 9/4/2020 |
2.2.1 | 540 | 6/6/2020 |
2.2.0-beta.1 | 306 | 5/24/2020 |
2.2.0-beta | 325 | 5/15/2020 |
2.1.1 | 470 | 4/14/2020 |
2.1.0 | 497 | 12/19/2019 |
2.0.0 | 495 | 11/16/2019 |
1.0.1 | 535 | 6/30/2019 |
1.0.0 | 609 | 4/23/2019 |
Release Notes for current version:
- Update target frameworks; added .NETFramework4.6.1
- Update RabbitMQ.Client to latest version
- Update consumer to expose MaxChannelsPerConnection property
Release Notes for previous version:
- Added sender service that keeps connection open.
Release Notes for other previous version:
- Update RabbitMQ.Client to latest version
- Changed namespace for IRabbitMqConsumerService and IRabbitMqSenderService
- Changed behavior for StopConsumers(consumerTag) - now stops all consumers with tag starting with 'consumerTag'
- Added limiter feature for processing messages.