Skip to content

Service Collection

Esta clase proporciona métodos de extensión para configurar e integrar fácilmente los servicios de Redis Pub/Sub en una aplicación .NET utilizando IServiceCollection. Facilita la configuración, validación y registro de los servicios necesarios para utilizar Redis Pub/Sub como mecanismo de mensajería.

namespace CodeDesignPlus.Net.Redis.PubSub.Extensions;
/// <summary>
/// Extension methods for setting up Redis Pub/Sub services in an <see cref="IServiceCollection"/>.
/// </summary>
public static class ServiceCollectionExtensions
{
/// <summary>
/// Adds Redis Pub/Sub services to the specified <see cref="IServiceCollection"/>.
/// </summary>
/// <param name="services">The <see cref="IServiceCollection"/> to add the services to.</param>
/// <param name="configuration">The configuration to bind the Redis Pub/Sub options.</param>
/// <returns>The <see cref="IServiceCollection"/> so that additional calls can be chained.</returns>
/// <exception cref="ArgumentNullException">Thrown if <paramref name="services"/> or <paramref name="configuration"/> is null.</exception>
/// <exception cref="RedisPubSubException">Thrown if the Redis Pub/Sub configuration section does not exist.</exception>
public static IServiceCollection AddRedisPubSub(this IServiceCollection services, IConfiguration configuration)
{
ArgumentNullException.ThrowIfNull(services);
ArgumentNullException.ThrowIfNull(configuration);
var section = configuration.GetSection(RedisPubSubOptions.Section);
if (!section.Exists())
throw new RedisPubSubException($"The section {RedisPubSubOptions.Section} is required.");
services
.AddOptions<RedisPubSubOptions>()
.Bind(section)
.ValidateDataAnnotations();
var options = section.Get<RedisPubSubOptions>();
if (options.Enable)
{
services.AddRedis(configuration);
services.AddPubSub(configuration, x =>
{
x.UseQueue = options.UseQueue;
x.EnableDiagnostic = options.EnableDiagnostic;
x.RegisterAutomaticHandlers = options.RegisterAutomaticHandlers;
x.SecondsWaitQueue = options.SecondsWaitQueue;
});
services.TryAddSingleton<IMessage, RedisPubSubService>();
services.TryAddSingleton<IRedisPubSub, RedisPubSubService>();
}
return services;
}
}

  • Microsoft.Extensions.DependencyInjection: Necesario para la interfaz IServiceCollection.
  • Microsoft.Extensions.Configuration: Necesario para la interfaz IConfiguration.
  • Microsoft.Extensions.Options: Necesario para la configuración de opciones.
  • CodeDesignPlus.Net.Redis: Necesario para agregar los servicios de Redis.
  • CodeDesignPlus.Net.PubSub: Necesario para agregar los servicios de Pub/Sub.

Este método de extensión es particularmente útil en aplicaciones que:

  • Utilizan Redis como base de datos o caché y desean incorporar un sistema de mensajería Pub/Sub.
  • Requieren desacoplar componentes a través de un sistema de mensajería.
  • Buscan una forma sencilla y estandarizada de configurar Redis Pub/Sub mediante configuración.
  • Necesitan un registro automático de handlers de mensajeria.

  • Configuración Centralizada: Permite configurar Redis Pub/Sub a través del archivo appsettings.json, centralizando la configuración y facilitando su gestión.
  • Facilidad de Integración: Simplifica la incorporación de Redis Pub/Sub en la aplicación con una única llamada al método de extensión.
  • Validación de Configuración: Valida automáticamente la configuración de Redis Pub/Sub al inicio de la aplicación, reduciendo errores en tiempo de ejecución.
  • Registro Automático: Permite el registro automático de handlers para los mensajes, reduciendo la necesidad de configuraciones manuales.

La clase ServiceCollectionExtensions proporciona un único método de extensión para configurar Redis Pub/Sub en una aplicación .NET. Este método agrega los servicios necesarios para utilizar Redis Pub/Sub y valida la configuración de la aplicación.

Type: public static IServiceCollection AddRedisPubSub(this IServiceCollection services, IConfiguration configuration)

Agrega los servicios de Redis Pub/Sub al IServiceCollection especificado.

  • Parámetros

    • services: El IServiceCollection al que se agregarán los servicios.
    • configuration: La configuración utilizada para enlazar las opciones de Redis Pub/Sub.
  • Tipo de retorno

    • IServiceCollection: El IServiceCollection modificado, permitiendo el encadenamiento de llamadas a otros métodos de configuración.
  • Excepciones

    • ArgumentNullException: Se lanza si services o configuration son null.
    • RedisPubSubException: Se lanza si la sección de configuración RedisPubSub no existe.
  • Ejemplo de uso

    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddRedisPubSub(builder.Configuration);

El método de extensión AddRedisPubSub es una herramienta poderosa para facilitar la integración y configuración de Redis Pub/Sub en aplicaciones .NET. Permite configurar Redis Pub/Sub de forma rápida y centralizada, utilizando la configuración de la aplicación y proporciona una forma sencilla de registrar los servicios necesarios.