c# - إعداد رابيتمق المستهلك في تطبيق ASP.NET الأساسية



asp.net-core rabbitmq (1)

لدي تطبيق ASP.NET الأساسية حيث أود أن تستهلك رسائل رابتمق.

لقد نجحت في إعداد الناشرين والمستهلكين في تطبيقات سطر الأوامر، ولكني لست متأكدا من كيفية إعداده بشكل صحيح في تطبيق ويب.

كنت أفكر في تهيئة ذلك في Startup.cs ، ولكن بالطبع أنه يموت بمجرد اكتمال بدء التشغيل.

كيفية تهيئة المستهلك بالطريقة الصحيحة من تطبيق ويب؟


استخدام نمط سينغلتون للمستمع والمدمج في دي للسيطرة على عمرها.

استخدام IApplicationLifetime لبدء / إيقاف المستمع على بدء تشغيل التطبيق / إيقاف.

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();    
    }
}
  • يجب أن تهتم باستضافة تطبيقك. على سبيل المثال، يمكن إعادة تدوير إيس.
  • هذا النمط يمكن أن تكون مدفوعة لمجموعة من المستمعين.




.net-core