Package Description
$ dotnet add package Reo.Core.Queue.MassTransit.ModelsReo.Core.Queue.MassTransit.Models — это библиотека, предназначенная для интеграции с системами сообщений на основе MassTransit, используемой в распределённых системах и микросервисах. Пакет предоставляет модели, события и инфраструктурные классы для обработки асинхронных операций, управления связями объектов инфраструктуры и взаимодействия с внешними сервисами. Он решает задачи, связанные с обработкой событий, координацией между компонентами и обеспечением надёжной передачи данных между сервисами.
Абстрактный базовый класс для событий, связанных с объектами инфраструктуры. Определяет тип ссылки (
ExternalReferenceType) и базовую логику обработки событий.
Модель для асинхронных событий, связанных с объектами инфраструктуры. Используется для передачи данных между сервисами.
Событие, сигнализирующее о завершении сравнения траекторий транспортных средств. Пример использования: обработка завершения операции в системе мониторинга транспорта.
Модель для хранения ссылок на объекты инфраструктуры, например, на внешние сервисы или ресурсы.
Классы с константами для имен очередей и сообщений (например, VehicleTrackComparisonCompletedQueue), используемые для
настройки интеграции с MassTransit.
Install-Package Reo.Core.Queue.MassTransit.Models
dotnet add package Reo.Core.Queue.MassTransit.Models
Добавьте сервисы в DI-контейнер в Program.cs или Startup.cs:
var builder = WebApplication.CreateBuilder(args);
// Регистрация MassTransit и связанных моделей
builder.Services.AddMassTransit(x =>
{
x.AddConsumersFromNamespaceContaining<InfrastructureObjectReferenceBase>();
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host("localhost", h => h.UseDefaultHost());
cfg.ConfigureEndpoints(context);
});
});
var app = builder.Build();
app.Run();
Настройка MassTransit осуществляется через стандартные параметры, например, в appsettings.json:
{
"MassTransit": {
"Host": "rabbitmq://localhost"
}
}VehicleAllTrackComparisonCompletedpublic class VehicleTrackComparisonConsumer : IConsumer<VehicleAllTrackComparisonCompleted>
{
public Task Consume(ConsumeContext<VehicleAllTrackComparisonCompleted> context)
{
var eventPayload = context.Message;
Console.WriteLine($"Сравнение траекторий завершено для события: {eventPayload.EventId}");
return Task.CompletedTask;
}
}var referenceEvent = new AsyncInfrastructureObjectReferenceEvent
{
Type = ExternalReferenceType.Vehicle,
ObjectId = "vehicle-123",
ExternalId = "external-vehicle-456"
};
// Отправка события через MassTransit
await _bus.Publish(referenceEvent);Данный пакет распространяется под лицензией MIT.