RFRabbitMQRPCApp 1.3.5
dotnet add package RFRabbitMQRPCApp --version 1.3.5
NuGet\Install-Package RFRabbitMQRPCApp -Version 1.3.5
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RFRabbitMQRPCApp" Version="1.3.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RFRabbitMQRPCApp" Version="1.3.5" />
<PackageReference Include="RFRabbitMQRPCApp" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RFRabbitMQRPCApp --version 1.3.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: RFRabbitMQRPCApp, 1.3.5"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RFRabbitMQRPCApp@1.3.5
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RFRabbitMQRPCApp&version=1.3.5
#tool nuget:?package=RFRabbitMQRPCApp&version=1.3.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
RFRabbitMQRPCApp
🇺🇸 English | 🇪🇸 Versión en Español Video tutorial
RFRabbitMQRPCApp is a .NET library for hosting and managing RPC services using RabbitMQ as the messaging middleware. It provides an abstraction that simplifies building strongly-typed RPC microservices, handling queue binding, dependency injection, logging, and message routing automatically.
🚀 Features
- Host RPC services with simple attribute-based controllers.
- Automatic RabbitMQ connection + channel management.
- Queue routing using
[Queue("name")]. - Support for dependency injection and logging (
ILogger). - Built-in request/response serialization.
- Works seamlessly with:
RFRabbitMQRFRabbitMQRPCClient
📦 Installation
NuGet
Install-Package RFRabbitMQRPCApp
.NET CLI
dotnet add package RFRabbitMQRPCApp
🔧 Configuration
Example appsettings.json:
{
"RabbitMQ": {
"HostName": "localhost",
"UserName": "guest",
"Password": "guest",
"ServiceQueuePrefix": "rpc-app-"
}
}
🖥️ Example — Creating an RPC Microservice
Below is a complete example based on real files.
1️⃣ Define a service
internal interface IDemoService
{
object GetDemoData();
}
public class DemoService : IDemoService
{
public object GetDemoData()
{
return new
{
Property = "Property value",
OtherProperty = "Other property value "
};
}
}
2️⃣ Create an RPC Controller
[RpcController]
internal class DemoController(
ILogger<DemoController> logger,
IDemoService demoService
) : Controller
{
[Queue("my-first-queue")]
public async Task<Result> MyFirstQueue()
{
logger.LogInformation("Received request my-first-queue");
return Ok(demoService.GetDemoData());
}
}
3️⃣ Host the RPC Application
var builder = RabbitMQRpcApp.CreateBuilder();
builder.Services.AddScoped<IDemoService, DemoService>();
var app = builder.Build();
app.Run(app => app.Logger.LogInformation("Demo microservice initiated"));
🧩 Use Cases
- Microservices requiring synchronous RPC responses.
- Real-time validations.
- Pricing/Calculation engines.
- Authentication/authorization RPC providers.
- Request/response messaging without REST.
🔍 Versioning
Current version: 1.3.3
📚 Dependencies
This package depends on:
- RabbitMQ.Client 7.2.0
- RFRabbitMQRPCClient 1.3.3
- Microsoft.Extensions.Configuration.* 8.0.0
- Microsoft.Extensions.DependencyInjection 8.0.0
- Microsoft.Extensions.Logging 8.0.0
📄 License
MIT License.
🌐 Repository
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Configuration.FileExtensions (>= 10.0.10)
- Microsoft.Extensions.Configuration.Json (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection (>= 10.0.10)
- Microsoft.Extensions.Logging (>= 10.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Logging.Console (>= 10.0.10)
- RabbitMQ.Client (>= 7.2.2)
- RFRabbitMQRPCClient (>= 1.3.4)
-
net8.0
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Configuration.FileExtensions (>= 10.0.10)
- Microsoft.Extensions.Configuration.Json (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection (>= 10.0.10)
- Microsoft.Extensions.Logging (>= 10.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Logging.Console (>= 10.0.10)
- RabbitMQ.Client (>= 7.2.2)
- RFRabbitMQRPCClient (>= 1.3.4)
-
net9.0
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Configuration.FileExtensions (>= 10.0.10)
- Microsoft.Extensions.Configuration.Json (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection (>= 10.0.10)
- Microsoft.Extensions.Logging (>= 10.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Logging.Console (>= 10.0.10)
- RabbitMQ.Client (>= 7.2.2)
- RFRabbitMQRPCClient (>= 1.3.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.