public void Configure(...)
{
...
Task.Run(() =>
{
var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>();
eventBus.Subscribe<Event1, Event1Handler>("key");
});
}
我的scenerio涵盖了应用程序启动时RabbitMq的缺失。我要在此处实现的目标是在后台运行此任务,并让我的应用程序以正常方式启动。
我得到的是应用程序仍然等待该任务的执行,并且此后响应。我想在此任务中使用.RetryForever()与rabbitmq建立连接,然后订阅队列,但是与此同时,我的服务应该在不使用Rabbitmq的情况下工作。
我在做什么错? 也许我应该更改尝试初始化与RabbitMq的连接的方式?
答案 0 :(得分:1)
我用来自BackgroundService的适当类替换了Task.Run调用。
然后我在Program.cs方法中将其注册为HostedService:IHostBuilder CreateHostBuilder(string[] args)
.ConfigureServices(services =>
{
services.AddHostedService<MyHostedService>();
});
通过此操作,我实现了没有中断和后台进程的webApi启动,该进程试图连接到Rabbitmq,直到实现为止。