Package Description
$ dotnet add package Reo.Core.QueueReo.Core.Queue — это библиотека для обработки интеграционных событий и сообщений в распределенных системах. Пакет
предоставляет абстракции для работы с событиями, таких как IntegrationEvent<T>, и инструменты для их сериализации,
маршрутизации и обработки. Он решает задачи, связанные с асинхронной передачей данных между микросервисами, обработкой
ошибок и логированием.
Основные функции:
DmRequestEvent, RouteRequestEvent).RoutesCalculationChangedIntegrationEvent.DmResponseEvent и RouteResponseEvent.IntegrationEvent<T>Базовый класс для всех интеграционных событий. Содержит идентификатор события и дополнительные данные.
DmRequestEvent, RouteRequestEventКонкретные типы событий, используемые для инициирования обработки запросов в системе. Содержат пути к файлам или данным для обработки.
RoutesCalculationChangedIntegrationEventЗапись (record), представляющая событие изменения расчета маршрута. Содержит данные о типе изменения (публикация, архивирование, удаление), идентификатор расчета и пользователе.
RefbookTypeПеречисление, определяющее типы ссылок, используемых в событиях (например, категория отходов, регион).
DmResponseEvent, RouteResponseEventСобытия, возвращающие результаты обработки запросов, включая успешные и неудачные операции.
Install-Package Reo.Core.Queue
dotnet add package Reo.Core.Queue
services.AddSingleton<IServiceProvider, ServiceProvider>();
services.AddSingleton<IMessageBus, MessageBus>();
Примечание: Если используется конкретная реализация сообщений (например, RabbitMQ, Azure Service Bus), необходимо добавить соответствующие зависимости и настроить конфигурацию в
appsettings.json.
var event = new DmRequestEvent(new[] { "/path/to/file1", "/path/to/file2" });
await messageBus.PublishAsync(event);public class DmEventHandler : IEventHandler<DmRequestEvent>
{
public async Task Handle(DmRequestEvent @event)
{
// Обработка запросов
var result = await ProcessFiles(@event.Paths);
await messageBus.PublishAsync(new DmResponseEvent { Succeeded = result });
}
}var changeEvent = new RoutesCalculationChangedIntegrationEvent(
calculationId: Guid.NewGuid(),
data: new[] { new RoutesCalculationChangedData { ... } },
type: RoutesCalculationChangedType.ToPublish,
userId: Guid.NewGuid()
);
await messageBus.PublishAsync(changeEvent);Данный пакет распространяется под лицензией MIT.