Reo.Core.Queue.Abstractions
10.0.29
See the version list below for details.
dotnet add package Reo.Core.Queue.Abstractions --version 10.0.29
NuGet\Install-Package Reo.Core.Queue.Abstractions -Version 10.0.29
<PackageReference Include="Reo.Core.Queue.Abstractions" Version="10.0.29" />
<PackageVersion Include="Reo.Core.Queue.Abstractions" Version="10.0.29" />
<PackageReference Include="Reo.Core.Queue.Abstractions" />
paket add Reo.Core.Queue.Abstractions --version 10.0.29
#r "nuget: Reo.Core.Queue.Abstractions, 10.0.29"
#:package Reo.Core.Queue.Abstractions@10.0.29
#addin nuget:?package=Reo.Core.Queue.Abstractions&version=10.0.29
#tool nuget:?package=Reo.Core.Queue.Abstractions&version=10.0.29
Reo.Core.Queue.Abstractions
Описание пакета
Пакет Reo.Core.Queue.Abstractions предоставляет абстракции для работы с системами сообщений и событий в архитектуре, ориентированной на события (event-driven architecture). Он позволяет реализовать паттерн обработки событий, отправки сообщений в очереди и управления подписками на события.
Пакет решает следующие задачи:
- Декуплирование компонентов приложения за счёт отправки и обработки событий через шину данных.
- Упрощение реализации обработчиков событий (event handlers) и их регистрации в системе.
- Поддержка как типизированных, так и динамических обработчиков событий.
- Управление подписками на события, включая проверку наличия подписчиков и очистку подписок.
Основные компоненты
1. IIntegrationEvent
- Описание: Базовый интерфейс для событий, определяющий обязательные свойства:
Id(уникальный идентификатор события),TimeStamp(время создания) иEventType(тип события). - Использование: Все события должны реализовывать этот интерфейс.
2. IntegrationEvent<T>
- Описание: Абстрактный класс, реализующий
IIntegrationEvent<T>, с возможностью хранения тела события (Body) и автоматическим генерированиемIdиTimeStamp. - Использование: Используется для создания конкретных событий, например,
OrderCreatedEvent<TOrder>.
3. IIntegrationEventHandler<T>
- Описание: Интерфейс для обработчиков событий, реализующих метод
HandleAsync, который принимает событие иCancellationToken. - Использование: Реализуется в классах, обрабатывающих конкретные типы событий.
4. IDynamicIntegrationEventHandler
- Описание: Интерфейс для динамических обработчиков событий, которые могут обрабатывать события любого типа с
использованием
dynamicилиobject. - Использование: Полезен, когда тип события заранее неизвестен.
5. IEventBus
- Описание: Интерфейс для отправки событий в очереди. Предоставляет метод
Publishдля отправки события. - Использование: Используется для отправки событий в систему.
6. IEventBusSubscriptionsManager
- Описание: Управляет подписками на события. Позволяет добавлять, проверять и удалять подписчики.
- Использование: Используется для регистрации обработчиков и управления их жизненным циклом.
7. SubscriptionInfo
- Описание: Класс, хранящий информацию о подписке (тип события, имя очереди, флаг динамической обработки).
- Использование: Используется внутри
IEventBusSubscriptionsManagerдля отслеживания подписок.
8. QueueNameAttribute
- Описание: Атрибут, который можно применять к обработчикам событий для указания имени очереди, к которой привязано событие.
- Использование: Позволяет автоматически связывать события с конкретными очередями.
Требования
- .NET версии: Совместим с .NET 8.0 и .NET 9.0.
- Зависимости: Не требует внешних библиотек, кроме стандартных библиотек .NET.
Установка
Используйте следующие команды для установки пакета:
NuGet Package Manager:
Install-Package Reo.Core.Queue.Abstractions
.NET CLI:
dotnet add package Reo.Core.Queue.Abstractions
Настройка
Регистрация в DI-контейнере (ASP.NET Core)
Добавьте регистрацию сервисов в Startup.cs или Program.cs:
services.AddEventBus(); // Предполагается, что реализация IEventBus зарегистрирована
services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>();
Конфигурационные параметры
N/A — в данном абстрактном пакете нет конфигурационных параметров. Конфигурация зависит от конкретной реализации ( например, RabbitMQ, Azure Service Bus).
Использование
Пример 1: Создание и отправка события
public class OrderCreatedEvent : IntegrationEvent<Order>
{
public OrderCreatedEvent(Order order)
{
Body = order;
}
}
// Отправка события
var eventBus = serviceProvider.GetRequiredService<IEventBus>();
eventBus.Publish(new OrderCreatedEvent(new Order { Id = 1, Customer = "John Doe" }));
Пример 2: Обработка события
public class OrderHandler : IIntegrationEventHandler<OrderCreatedEvent>
{
public Task HandleAsync(OrderCreatedEvent @event, CancellationToken cancellationToken)
{
Console.WriteLine($"Order created: {@event.Body.Id}, Customer: {@event.Body.Customer}");
return Task.CompletedTask;
}
}
// Регистрация обработчика
var subscriptionsManager = serviceProvider.GetRequiredService<IEventBusSubscriptionsManager>();
subscriptionsManager.AddSubscription<OrderCreatedEvent, OrderHandler>();
Пример 3: Динамический обработчик
public class DynamicHandler : IDynamicIntegrationEventHandler
{
public Task HandleAsync(object @event, string eventName, CancellationToken cancellationToken)
{
Console.WriteLine($"Dynamic event received: {eventName}, Data: {@event}");
return Task.CompletedTask;
}
}
// Регистрация
subscriptionsManager.AddDynamicSubscription<DynamicHandler>();
Лицензия
Данный пакет распространяется под лицензией MIT.
| 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
- JetBrains.Annotations (>= 2025.2.4)
- stbychkov.AutoLoggerMessage (>= 1.0.15)
NuGet packages (7)
Showing the top 5 NuGet packages that depend on Reo.Core.Queue.Abstractions:
| Package | Downloads |
|---|---|
|
Reo.Core.Queue.RabbitMq
Package Description |
|
|
Reo.Core.Queue
Package Description |
|
|
Reo.Core.DistributedCache
Package Description |
|
|
Reo.Core.Queue.Validator
Package Description |
|
|
Reo.Core.ExternalReference
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.0.33 | 0 | 2/13/2026 |
| 10.0.32 | 0 | 2/13/2026 |
| 10.0.31 | 5 | 2/13/2026 |
| 10.0.30 | 87 | 2/12/2026 |
| 10.0.29 | 88 | 2/12/2026 |
| 10.0.28 | 98 | 2/11/2026 |
| 10.0.27 | 110 | 2/11/2026 |
| 10.0.26 | 183 | 2/9/2026 |
| 10.0.25 | 172 | 2/9/2026 |
| 10.0.24 | 190 | 2/9/2026 |
| 10.0.23 | 184 | 2/9/2026 |
| 10.0.22 | 176 | 2/9/2026 |
| 10.0.21 | 182 | 2/9/2026 |
| 10.0.20 | 184 | 2/9/2026 |
| 10.0.15 | 195 | 2/6/2026 |
| 10.0.14 | 194 | 2/6/2026 |
| 10.0.13 | 389 | 2/4/2026 |
| 10.0.12 | 198 | 2/3/2026 |
| 10.0.11 | 212 | 2/2/2026 |
| 10.0.10 | 204 | 1/29/2026 |