![]() |
VOOZH | about |
dotnet add package EBCEYS.RabbitMQ.Server.MappedService --version 1.7.0
NuGet\Install-Package EBCEYS.RabbitMQ.Server.MappedService -Version 1.7.0
<PackageReference Include="EBCEYS.RabbitMQ.Server.MappedService" Version="1.7.0" />
<PackageVersion Include="EBCEYS.RabbitMQ.Server.MappedService" Version="1.7.0" />Directory.Packages.props
<PackageReference Include="EBCEYS.RabbitMQ.Server.MappedService" />Project file
paket add EBCEYS.RabbitMQ.Server.MappedService --version 1.7.0
#r "nuget: EBCEYS.RabbitMQ.Server.MappedService, 1.7.0"
#:package EBCEYS.RabbitMQ.Server.MappedService@1.7.0
#addin nuget:?package=EBCEYS.RabbitMQ.Server.MappedService&version=1.7.0Install as a Cake Addin
#tool nuget:?package=EBCEYS.RabbitMQ.Server.MappedService&version=1.7.0Install as a Cake Tool
Библиотека для работы с брокером сообщений RabbitMQ.
Реализация publisher-a для работы с брокером сообщений RabbitMQ.
Через клиент, в зависимости от конфигурации, возможна отправка сообщений и "RPC" запросов.
Для отправки сообщений используется метод SendMessageAsync.
Для отправки "RPC" запросов используется метод SendRequestAsync.
Аналогичен RabbitMQControllerBase, только внутри себя содержит "сервер", принимающий сообщения из брокера.
Пример использования:
private static RabbitMQConfigurationBuilder? configBuilder;
public static void Main(string[] args)
{
configBuilder = new();
configBuilder.AddConnectionFactory(new()
{
HostName = "Kuznetsovy-Server",
UserName = "ebcey1",
Password = "123"
});
configBuilder.AddQueueConfiguration(new("ExampleQueue", autoDelete: true));
Logger logger = LogManager.Setup().LoadConfigurationFromFile("nlog.config").GetCurrentClassLogger();
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddSmartRabbitMQController<TestController>(configBuilder.Build());
})
.UseNLog()
.ConfigureLogging(log =>
{
log.ClearProviders();
log.AddNLog("nlog.config");
})
.Build();
host.Run();
}
internal class TestController : RabbitMQSmartControllerBase
{
private readonly ILogger<TestController> logger;
public TestController(ILogger<TestController> logger)
{
this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
[RabbitMQMethod("ExampleMethod")]
public Task<string> TestMethod2(string a, string b)
{
logger.LogInformation("TestMethod2 get command with args: a: {a}\tb: {b}", a, b);
return Task.FromResult(a + b);
}
}
Реализация consumer-a как IHostedService.
Стоит отметить что в данном случае consumer всегда будет асинхронный.
Попытка реализации сервиса consumer-a через контроллеры (а-ля ControllerBase для http).
Методы контроллера должны быть асинхронными.
configBuilder = new();
configBuilder.AddConnectionFactory(new()
{
HostName = "Kuznetsovy-Server",
UserName = "ebcey1",
Password = "123"
});
configBuilder.AddQueueConfiguration(new("ExampleQueue", autoDelete: true));
RabbitMQConfiguration config = configBuilder.Build();
IHost host = Host.CreateDefaultBuilder(args)
.UseNLog()
.ConfigureLogging(log =>
{
log.AddNLog("nlog.config");
})
.ConfigureServices(services =>
{
services.AddRabbitMQController<ExampleController>();
services.AddRabbitMQMappedServer(config);
})
.Build();
host.Run();
protected virtual void SetMiddlewares(RabbitMqControllerMiddlewaresCollection middlewares). Middlewares вызываются перед началом обработки сообщения.protected virtual IEnumerable<CustomParameterProcessingOptions> CustomParametersProcessing; для парсинга параметров метода из пришедшего сообщения, необработанных библиотекой.CallbackRabbitMQConfiguration добавлена конфигурация ожидания ответа на запрос.RabbitMQClient добавлены новые конструкторы, а старые УДАЛЕНЫ.AddRabbitMQClient для IServiceCollection УБРАНА старая реализация с указанием таймаута через параметр.
Таймаут теперь указывается в CallbackRabbitMQConfiguration.RabbitMQSmartController не обрабатывал сообщения в выбранной кодировке, а только в UTF-8.IServiceColletion свою реализацию RabbitMQClientIServiceColletion свою реализацию RabbitMQServerRabbitMQRequestProcessingException внутри
метода контроллера. Если клиент получит ответ с подобным исключением, то выкинет его в методе SendRequestAsync.RabbitMQConfiguration добавлена возможность передачи кодировки. По умолчанию используется UTF-8.Фичи:
IHostedService.StartAsync(CancellationToken cancellationToken).RabbitMQSmartController теперь берется не первый конструктор, а первый подходящий по сервисам в
IServiceProvider. Если ни один конструктор не подошел, то пытаемся создать безе парамметров.Фиксы:
RabbitMQSmartController.
Данный контроллер содержит в себе сервер, принимающий сообщения из брокера сообщений и вызывающий методы, указанные
внутри сообщения.Фичи:
Фиксы:
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 2 NuGet packages that depend on EBCEYS.RabbitMQ.Server.MappedService:
| Package | Downloads |
|---|---|
|
Ebceys.Infrastructure
Package Description |
|
|
Ebceys.Tests.Infrastructure
Package Description |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.7.0 | 376 | 3/10/2026 |
| 1.6.0 | 313 | 8/31/2025 |
| 1.5.1 | 211 | 2/28/2025 |
| 1.5.0 | 190 | 2/28/2025 |
| 1.4.2 | 209 | 1/30/2025 |
| 1.4.1 | 179 | 1/24/2025 |
| 1.4.0 | 181 | 1/16/2025 |
| 1.3.1 | 317 | 8/8/2023 |
| 1.3.0 | 282 | 6/26/2023 |
| 1.2.0 | 373 | 3/14/2023 |
| 1.1.6 | 383 | 3/14/2023 |
| 1.1.5 | 365 | 3/14/2023 |
| 1.1.4 | 415 | 3/13/2023 |
| 1.1.3 | 397 | 3/5/2023 |
| 1.1.2 | 386 | 3/4/2023 |
| 1.1.1 | 379 | 3/4/2023 |
| 1.0.4 | 403 | 2/27/2023 |
| 1.0.3 | 399 | 2/26/2023 |
| 1.0.2 | 442 | 2/23/2023 |
| 1.0.0 | 423 | 2/23/2023 |