MediatR УведомлениеХандлер огонь и забудь
Как я могу заставить свой обработчик уведомлений MediatR сработать и забыть?
Мой пример кода:
public class BackupDatabase : INotification {}
public class BackupDatabaseNotificationHandler : INotificationHandler<BackupDatabase>
{
public async Task Handle(BackupDatabase notification, CancellationToken cancellationToken)
{
await Task.Delay(100000000);
}
}
public async Task<IActionResult> SomeAction()
{
await _mediator.Publish(new BackupDatabase());
return Json(true);
}
Я знаю, что одним из способов является использование Task.Factory.StartNew, но есть ли другой способ?
1 ответ
Обработчики уведомлений Mediatr уже запущены и забыты.
Другой способ справиться с этим - поставить в очередь фоновую задачу для выполнения работы. Посмотрите на что-то вроде Hangfire и реализуйте это в методе _mediator.Send() или _mediator.Publish().
Hangfire даст вам возможность отслеживать фоновую задачу и имеет возможность автоматически повторить задачу при необходимости.
Есть и другие варианты, если Hangfire не подходит для вас.
Надеюсь это поможет!