gpt4 book ai didi

c# - 在 ASP.NET Core 应用程序中设置 RabbitMQ 消费者

转载 作者:IT王子 更新时间:2023-10-29 04:34:08 32 4
gpt4 key购买 nike

我有一个 ASP.NET Core 应用程序,我想在其中使用 RabbitMQ 消息。

我已经在命令行应用程序中成功设置了发布者和消费者,但我不确定如何在网络应用程序中正确设置它。

我正在考虑在 Startup.cs 中初始化它,但当然一旦启动完成它就死了。

如何从网络应用以正确的方式初始化消费者?

最佳答案

对消费者/监听器使用单例模式以在应用程序运行时保留它。使用 IApplicationLifetime 接口(interface)在应用程序启动/停止时启动/停止消费者。

public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<RabbitListener>();
}


public void Configure(IApplicationBuilder app)
{
app.UseRabbitListener();
}
}

public static class ApplicationBuilderExtentions
{
//the simplest way to store a single long-living object, just for example.
private static RabbitListener _listener { get; set; }

public static IApplicationBuilder UseRabbitListener(this IApplicationBuilder app)
{
_listener = app.ApplicationServices.GetService<RabbitListener>();

var lifetime = app.ApplicationServices.GetService<IApplicationLifetime>();

lifetime.ApplicationStarted.Register(OnStarted);

//press Ctrl+C to reproduce if your app runs in Kestrel as a console app
lifetime.ApplicationStopping.Register(OnStopping);

return app;
}

private static void OnStarted()
{
_listener.Register();
}

private static void OnStopping()
{
_listener.Deregister();
}
}
  • 您应该注意您的应用程序的托管位置。例如,IIS 可以回收并停止您的代码运行。
  • 此模式可以扩展到听众池。

关于c# - 在 ASP.NET Core 应用程序中设置 RabbitMQ 消费者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43609345/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com