我有一个dotnet核心项目,其csproj中引用了SDK Microsoft.NET.Sdk.Web,主要是为了获得一些出色的功能(即IoC,appsettings等)。
在此项目中,我没有添加Mvc控制器中间件,仅添加了一个UseEndpoints()用于快速运行状况检查。
除此之外,我还有一些RabbitMQ接收器,它们使用给定的路由密钥来处理发送到交换机的消息。这些接收器是为给定RabbitMq通道创建RabbitMQ AsyncEventingBasicConsumer
,然后将其自己的委托添加到使用者的Received
事件中的类。
我的问题是:在Web项目中拥有这些接收器的长期存在的实例(在IoC中是单例还是更好),还是应该为它们创建一个HostedService以便在其中运行/运行?
它们各自的优缺点是什么?目前,我将它们放在BackgroundService中,但是我看不到将它们放在由我的Web应用程序启动的HostedService中的任何实际好处,而不是让这些实例直接存在于Web应用程序本身中。
谢谢
我有一个dotnet核心项目,其csproj中引用了SDK Microsoft.NET.Sdk.Web,主要是为了获得一些出色的功能(即IoC,appsettings等)。在这个项目中,我没有添加...
因此,我假设您正在WebApp中生成任务或线程来处理后台作业。