DandyRabbitMQ.Consumer
10.0.0
dotnet add package DandyRabbitMQ.Consumer --version 10.0.0
NuGet\Install-Package DandyRabbitMQ.Consumer -Version 10.0.0
<PackageReference Include="DandyRabbitMQ.Consumer" Version="10.0.0" />
<PackageVersion Include="DandyRabbitMQ.Consumer" Version="10.0.0" />
<PackageReference Include="DandyRabbitMQ.Consumer" />
paket add DandyRabbitMQ.Consumer --version 10.0.0
#r "nuget: DandyRabbitMQ.Consumer, 10.0.0"
#:package DandyRabbitMQ.Consumer@10.0.0
#addin nuget:?package=DandyRabbitMQ.Consumer&version=10.0.0
#tool nuget:?package=DandyRabbitMQ.Consumer&version=10.0.0
What is DandyRabbitMQ?
DandyRabbitMQ is a framework that offers comfort features and facades for the original client API RabbitMQ.Client by Broadcom. The goal is to make the use of RabbitMQ.Client significantly easier, avoid boilerplate and streamline communication.
Setup and packages
DandyRabbitMQ comes with multiple packages. Often frameworks with a large amount of packages can easily confuse. This section's goal is to make the dependency graph of the packages, and more importantly what packages you need in what case, more transparent. Also, this section is supposed to show you how to setup the framework in both consumer and/or producer applications.
Package dependencies
The following UML package diagram shows the dependency graph of all current packages.
DandyRabbitMQ.Corecontains connectivity concerns, message abstractions and attributes for messages.DandyRabbitMQ.Serializationcontains abstractions for serializing a messages payloadDandyRabbitMQ.Serialization.SystemTextJsonandDandyRabbitMQ.Serialization.NewtonsoftJsoncontain implementations of the payload serialization abstractions with respective serialization frameworksDandyRabbitMQ.Consumercontains a message consumption worker and consumer abstractions for consuming messagesDandyRabbitMQ.Producercontains message production and dispatching
Packages for producers
Producer will need to reference only DandyRabbitMQ.Consumer and any of the serialization implementations, so either DandyRabbitMQ.Serialization.SystemTextJson or DandyRabbitMQ.Serialization.NewtonsoftJson.
This way DandyRabbitMQ.Core and thus DandyRabbitMQ.Serialization are both automatically included. Also, the producer configuration layer allows to configure both serialization and connectivity, so there is no need to add either to your IServiceCollection manually, that is done behind the scenes.
Setup
Only add the producer-specific extension for the IServiceCollection, since it give you access to all other configuration APIs of the framework. A setup could look like this:
builder.Services.AddDandyRabbitMQProducer(cfg =>
{
cfg.Connectivity.ConnectToCluster("dev", "dev", [new Uri("localhost:5672"), new Uri("localhost:5673")], recoveryInterval: null);
cfg.Connectivity.OnConnectionException((_, ex) => Console.WriteLine($"Exception occurred: {ex}"));
cfg.Serialization.UseSystemTextJson();
cfg.Declarations.SubscribeChannel("messages", "consumer-1", channel =>
{
channel.Queue.RoutingKeys = ["all"];
});
cfg.Messages.ScanInAssemblies(assemblies);
});
Packages for consumers
Producer will need to reference only DandyRabbitMQ.Producer and any of the serialization implementations, so either DandyRabbitMQ.Serialization.SystemTextJson or DandyRabbitMQ.Serialization.NewtonsoftJson.
This way DandyRabbitMQ.Core and thus DandyRabbitMQ.Serialization are both automatically included. Also, the producer configuration layer allows to configure both serialization and connectivity, so there is no need to add either to your IServiceCollection manually, that is done behind the scenes.
Setup
Only add the consumer-specific extension for the IServiceCollection, since it give you access to all other configuration APIs of the framework. A setup could look like this:
builder.Services.AddDandyRabbitMQConsumer(cfg =>
{
cfg.Connectivity.ConnectToCluster("dev", "dev", [new Uri("localhost:5672"), new Uri("localhost:5673")], recoveryInterval: null);
cfg.Connectivity.OnConnectionException((_, ex) => Console.WriteLine($"Exception occurred: {ex}"));
cfg.Serialization.UseSystemTextJson();
cfg.Declarations.SubscribeChannel("messages", "consumer-1", channel =>
{
channel.Queue.RoutingKeys = ["all"];
});
cfg.Messages.ScanInAssemblies(assemblies);
});
Use of AI
This section briefly outlines how AI was used for writing this framework. If an aspect if writing is not mentioned down below, it wasn't done using AI.
Unit tests
Unit tests have been partially written by AI. Specifically pay attention to the term written, since the test design was still man-made. The tests were planned with simple comments (such as // Create_SettingType_BasicPropertiesTypeNotOverwritten). Copilot was them prompted to implement the tests. Afterwards the tests were read manually and run manually. If needed adjustments were made.
Documentations
The XML-Documentation of the code was entirely generated by AI. Copilot was prompted iteratively to write the documentation and then asked to adjust until the result was satisfactory.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- DandyRabbitMQ.Core (>= 10.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.11)
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 |
|---|---|---|
| 10.0.0 | 98 | 9/6/2026 |