public void Configure(...)
{
   ...
   Task.Run(() =>
            {
                var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>();
                eventBus.Subscribe<Event1, Event1Handler>("key");
            });
}

Scenerio saya mencakup ketidakhadiran rabbitMq saat startup aplikasi. Apa yang saya coba capai di sini, adalah menjalankan tugas ini di latar belakang dan membiarkan aplikasi saya mulai dengan cara normal.

Apa yang saya dapatkan adalah aplikasi itu masih menunggu eksekusi tugas ini dan setelah itu responsif. Saya ingin menggunakan .RetryForever() di dalam tugas ini untuk membuat koneksi dengan rabbitmq dan kemudian berlangganan antrian, tetapi sementara itu layanan saya harus bekerja tanpa rabbitmq.

Apa yang saya lakukan salah? Mungkin saya harus mengubah cara saya mencoba menginisialisasi koneksi dengan rabbitMq?

0
Qtybek 24 Maret 2020, 11:24

1 menjawab

Jawaban Terbaik

Saya mengganti panggilan Task.Run dengan derving kelas yang tepat dari BackgroundService.

Kemudian saya mendaftarkannya sebagai HostedService dalam metode Program.cs: IHostBuilder CreateHostBuilder(string[] args)

            .ConfigureServices(services =>
            {
                services.AddHostedService<MyHostedService>();
            });

Dengan ini saya mencapai webApi start tanpa interupsi dan proses latar belakang yang mencoba terhubung ke rabbitmq hingga mencapainya.

1
Qtybek 28 Maret 2020, 10:47