Reo.Core.Queue.Validator 8.0.799

dotnet add package Reo.Core.Queue.Validator --version 8.0.799
                    
NuGet\Install-Package Reo.Core.Queue.Validator -Version 8.0.799
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Reo.Core.Queue.Validator" Version="8.0.799" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reo.Core.Queue.Validator" Version="8.0.799" />
                    
Directory.Packages.props
<PackageReference Include="Reo.Core.Queue.Validator" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Reo.Core.Queue.Validator --version 8.0.799
                    
#r "nuget: Reo.Core.Queue.Validator, 8.0.799"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Reo.Core.Queue.Validator@8.0.799
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Reo.Core.Queue.Validator&version=8.0.799
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.Queue.Validator&version=8.0.799
                    
Install as a Cake Tool

Reo.Core.Queue.Validator

Описание пакета

Пакет Reo.Core.Queue.Validator предназначен для проверки существования очередей в системе сообщений (например, RabbitMQ) на этапе запуска приложения. Это позволяет избежать ошибок, связанных с отсутствием необходимых очередей, и обеспечивает стабильность приложения.

Решаемые проблемы:

  • Обнаружение отсутствующих очередей до запуска критически важных компонентов.
  • Интеграция с FluentValidation для удобного формирования сообщений об ошибках.
  • Автоматическая регистрация сервисов в DI-контейнере ASP.NET Core.

Функции:

  • Асинхронная проверка существования очередей.
  • Поддержка настройки через атрибуты (QueueNameAttribute).
  • Логирование ошибок через ILogger.

Основные компоненты

Компонент Описание
IQueueExistsValidator Интерфейс, определяющий метод ValidateAsync, который проверяет существование всех зарегистрированных очередей.
QueueExistsValidator Реализация валидатора, использующая IServiceBusClient для проверки очередей и IQueueNameStorage для получения списка имен очередей.
IQueueNameStorage Интерфейс для получения списка имен очередей, зарегистрированных в приложении.
AssemblyQueueNameStorage Реализация, которая сканирует сборки и ищет типы с атрибутом QueueNameAttribute для определения имен очередей.
IServiceBusClient Интерфейс для взаимодействия с шиной данных (RabbitMQ).
RabbitMqServiceBusClient Реализация клиента для проверки существования очередей в RabbitMQ.

Требования

  • .NET версии: .NET 8.0, .NET 9.0
  • Зависимости:
    • FluentValidation (для генерации ошибок валидации)
    • RabbitMQ.Client (для работы с RabbitMQ)
    • Microsoft.Extensions.Logging (для логирования)

Установка

NuGet Package Manager

Install-Package Reo.Core.Queue.Validator

.NET CLI

dotnet add package Reo.Core.Queue.Validator

Настройка

Регистрация в DI-контейнере (ASP.NET Core)

Добавьте зависимости в Startup.cs или Program.cs:

services.AddQueueValidator<MyQueueHandlerAssembly>();

или с явным указанием сборки:

services.AddQueueValidator(Assembly.Load("MyQueueHandlers"));

Конфигурационные параметры:

  • Используйте атрибут [QueueName("my-queue-name")] на типах, чтобы указать имя очереди.
  • Настройка логирования через ILogger автоматически интегрируется в приложение.

Использование

Пример 1: Проверка очередей при запуске приложения

public class MyService
{
    private readonly IQueueExistsValidator _validator;

    public MyService(IQueueExistsValidator validator)
    {
        _validator = validator;
    }

    public async Task InitializeAsync()
    {
        var result = await _validator.ValidateAsync();
        if (!result.IsValid)
        {
            throw new InvalidOperationException("Несуществующие очереди: " + string.Join(", ", result.Errors));
        }
    }
}

Пример 2: Использование в middleware (ASP.NET Core)

app.Use(async (context, next) =>
{
    var validator = context.RequestServices.GetRequiredService<IQueueExistsValidator>();
    var result = await validator.ValidateAsync();
    if (!result.IsValid)
    {
        context.Response.StatusCode = 500;
        await context.Response.WriteAsync("Ошибка: " + string.Join(", ", result.Errors));
        return;
    }
    await next();
});

Лицензия

Данный пакет распространяется под лицензией MIT.

Product 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.  net10.0 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
8.0.799 107 1/13/2026
8.0.798 99 1/12/2026
8.0.797 99 1/12/2026
8.0.795 116 12/30/2025
8.0.794 104 12/30/2025
8.0.793 108 12/29/2025
8.0.792 105 12/29/2025
8.0.789 191 12/25/2025
8.0.788 191 12/25/2025
8.0.787 187 12/25/2025
8.0.786 194 12/24/2025
8.0.785 191 12/24/2025
8.0.784 190 12/24/2025
8.0.783 190 12/24/2025
8.0.782 184 12/24/2025
8.0.781 192 12/23/2025
8.0.780 181 12/23/2025
8.0.779 196 12/23/2025
8.0.778 184 12/23/2025
8.0.777 183 12/23/2025
Loading failed