EBCEYS.RabbitMQ.Server.MappedService
1.4.2
See the version list below for details.
dotnet add package EBCEYS.RabbitMQ.Server.MappedService --version 1.4.2
NuGet\Install-Package EBCEYS.RabbitMQ.Server.MappedService -Version 1.4.2
<PackageReference Include="EBCEYS.RabbitMQ.Server.MappedService" Version="1.4.2" />
<PackageVersion Include="EBCEYS.RabbitMQ.Server.MappedService" Version="1.4.2" />
<PackageReference Include="EBCEYS.RabbitMQ.Server.MappedService" />
paket add EBCEYS.RabbitMQ.Server.MappedService --version 1.4.2
#r "nuget: EBCEYS.RabbitMQ.Server.MappedService, 1.4.2"
#addin nuget:?package=EBCEYS.RabbitMQ.Server.MappedService&version=1.4.2
#tool nuget:?package=EBCEYS.RabbitMQ.Server.MappedService&version=1.4.2
EBCEYS.RabbitMQ
Описание
Библиотека для работы с брокером сообщений RabbitMQ.
EBCEYS.RabbitMQ.Client
Реализация publisher-a для работы с брокером сообщений RabbitMQ.
Через клиент, в зависимости от конфигурации, возможна отправка сообщений и "RPC" запросов.
Для отправки сообщений используется метод SendMessageAsync.
Для отправки "RPC" запросов используется метод SendRequestAsync.
EBCEYS.RabbitMQ.Server.MappedService.SmartController
Аналогичен 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);
}
}
EBCEYS.RabbitMQ.Server.MappedService.RabbitMQServer
Реализация consumer-a как IHostedService.
Стоит отметить что в данном случае consumer всегда будет асинхронный.
EBCEYS.RabbitMQ.Server.MappedService.RabbitMQMappedServer !!! УСТАРЕЛО !!!
Попытка реализации сервиса 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();
Изменения
v1.4.2
- Исправлена передача исключений.
- Добавлена конфигурация старта сервисов.
- Добавлена опция для клиента, не выбрасывать серверные исключения из ответа на запрос.
- Логи отправки и приема сообщений переведены на уровень Trace.
v1.4.1
- Добавлена конфигурация QoS [опционально] при старте клиента и сервера.
- Добавлен вариант передачи исключений. Для этого следует использовать
RabbitMQRequestProcessingException
внутри метода контроллера. Если клиент получит ответ с подобным исключением, то выкинет его в методеSendRequestAsync
. - В конфигурацию
RabbitMQConfiguration
добавлена возможность передачи кодировки. По умолчанию используется UTF-8.
v1.4.0
Фичи:
- Библиотека переведена на 8-ой дотнет.
- Обновлены используемые пакеты.
- Инициализация подключения, создание канала и консумера вынесены в старт сервиса
IHostedService.StartAsync(CancellationToken cancellationToken)
. - Добавлены поддерживаемые типы обменников как enum-ы (опционально, можно передавать по старому как строку).
- В конфигурацию добавлены параметры установки канала.
- В репозиторий добавлены примеры использования в докере. Через сервис ExampleDockerClient можно отправить сообщения и запросы на сервис ExampleDockerServer.
- При создании
RabbitMQSmartController
теперь берется не первый конструктор, а первый подходящий по сервисам вIServiceProvider
. Если ни один конструктор не подошел, то пытаемся создать безе парамметров. - Добавлена поддержка topic обменников.
- Консумеры AutoAck.
- Добавлена конфигурация для callback обменника и очереди.
Фиксы:
- Исправлена ошибка, когда очередь не привязывалась к обменнику.
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 was computed. 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. |
-
net8.0
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.1)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.1)
- Newtonsoft.Json (>= 13.0.3)
- RabbitMQ.Client (>= 7.0.0)
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 |
---|---|---|
1.5.1 | 85 | 2/28/2025 |
1.5.0 | 88 | 2/28/2025 |
1.4.2 | 102 | 1/30/2025 |
1.4.1 | 82 | 1/24/2025 |
1.4.0 | 79 | 1/16/2025 |
1.3.1 | 212 | 8/8/2023 |
1.3.0 | 163 | 6/26/2023 |
1.2.0 | 235 | 3/14/2023 |
1.1.6 | 232 | 3/14/2023 |
1.1.5 | 229 | 3/14/2023 |
1.1.4 | 246 | 3/13/2023 |
1.1.3 | 251 | 3/5/2023 |
1.1.2 | 254 | 3/4/2023 |
1.1.1 | 242 | 3/4/2023 |
1.0.4 | 258 | 2/27/2023 |
1.0.3 | 259 | 2/26/2023 |
1.0.2 | 267 | 2/23/2023 |
1.0.1 | 262 | 2/23/2023 |
1.0.0 | 273 | 2/23/2023 |