Package Description
$ dotnet add package Reo.Core.Queue.AbstractionsПакет Reo.Core.Queue.Abstractions предоставляет абстракции для работы с системами сообщений и событий в архитектуре, ориентированной на события (event-driven architecture). Он позволяет реализовать паттерн обработки событий, отправки сообщений в очереди и управления подписками на события.
Пакет решает следующие задачи:
IIntegrationEventId (уникальный идентификатор
события), TimeStamp (время создания) и EventType (тип события).IntegrationEvent<T>IIntegrationEvent<T>, с возможностью хранения тела события (Body) и
автоматическим генерированием Id и TimeStamp.OrderCreatedEvent<TOrder>.IIntegrationEventHandler<T>HandleAsync, который принимает событие и
CancellationToken.IDynamicIntegrationEventHandlerdynamic или object.IEventBusPublishIEventBusSubscriptionsManagerSubscriptionInfoIEventBusSubscriptionsManager для отслеживания подписок.QueueNameAttributeИспользуйте следующие команды для установки пакета:
NuGet Package Manager:
Install-Package Reo.Core.Queue.Abstractions.NET CLI:
dotnet add package Reo.Core.Queue.AbstractionsДобавьте регистрацию сервисов в Startup.cs или Program.cs:
services.AddEventBus(); // Предполагается, что реализация IEventBus зарегистрирована
services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>();N/A — в данном абстрактном пакете нет конфигурационных параметров. Конфигурация зависит от конкретной реализации ( например, RabbitMQ, Azure Service Bus).
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" }));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>();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.