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 не подходит для вас.

Надеюсь это поможет!

Другие вопросы по тегам