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