tutorial start net español c# asp.net-core rabbitmq .net-core

c# - start - Configurar el consumidor RabbitMQ en la aplicación ASP.NET Core



rabbitmq tutorial español (1)

Tengo una aplicación ASP.NET Core donde me gustaría consumir mensajes RabbitMQ.

He configurado con éxito editores y consumidores en aplicaciones de línea de comandos, pero no estoy seguro de cómo configurarlo correctamente en una aplicación web.

Estaba pensando en inicializarlo en Startup.cs , pero por supuesto muere una vez que se completa el inicio.

¿Cómo inicializar al consumidor de la manera correcta desde una aplicación web?


Utilice el patrón Singleton para un oyente y DI incorporado para controlar su vida útil.

Use IApplicationLifetime para iniciar / detener el oyente en el inicio / detención de la aplicación.

public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddSingleton<RabbitListener>(); } public void Configure(IApplicationBuilder app) { app.UseRabbitListener(); } } public static class ApplicationBuilderExtentions { public static RabbitListener Listener { get; set; } public static IApplicationBuilder UseRabbitListener(this IApplicationBuilder app) { Listener = app.ApplicationServices.GetService<RabbitListener>(); var life = app.ApplicationServices.GetService<IApplicationLifetime>(); life.ApplicationStarted.Register(OnStarted); //press Ctrl+C to reproduce if your app runs in Kestrel as a console app life.ApplicationStopping.Register(OnStopping); return app; } private static void OnStarted() { Listener.Register(); } private static void OnStopping() { Listener.Deregister(); } }

  • Deberías preocuparte por el alojamiento de tu aplicación. Por ejemplo, IIS puede reciclar.
  • Este patrón puede ser extensivo para un grupo de oyentes.