Reo.Core.Queue.Validator 8.0.793

There is a newer version of this package available.
See the version list below for details.
dotnet add package Reo.Core.Queue.Validator --version 8.0.793
                    
NuGet\Install-Package Reo.Core.Queue.Validator -Version 8.0.793
                    
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.793" />
                    
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.793" />
                    
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.793
                    
#r "nuget: Reo.Core.Queue.Validator, 8.0.793"
                    
#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.793
                    
#: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.793
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.Queue.Validator&version=8.0.793
                    
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 120 1/13/2026
8.0.798 109 1/12/2026
8.0.797 109 1/12/2026
8.0.795 126 12/30/2025
8.0.794 111 12/30/2025
8.0.793 118 12/29/2025
8.0.792 113 12/29/2025
8.0.789 199 12/25/2025
8.0.788 199 12/25/2025
8.0.787 194 12/25/2025
8.0.786 203 12/24/2025
8.0.785 198 12/24/2025
8.0.784 198 12/24/2025
8.0.783 198 12/24/2025
8.0.782 192 12/24/2025
8.0.781 201 12/23/2025
8.0.780 190 12/23/2025
8.0.779 205 12/23/2025
8.0.778 192 12/23/2025
8.0.777 192 12/23/2025
Loading failed