MediatR УведомлениеХандлер огонь и забудь - PullRequest
0 голосов
/ 12 октября 2018

Как я могу заставить свой обработчик уведомлений 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 Ответ

0 голосов
/ 12 октября 2018

Обработчики уведомлений Mediatr уже запущены и забыты.

Другой способ справиться с этим - поставить в очередь фоновое задание для выполнения этой работы.Посмотрите на что-то вроде Hangfire и реализуйте это в методе _mediator.Send () или _mediator.Publish ().

Hangfire даст вам возможность контролировать фоновое задание и имеет возможность автоматически повторить задание, если требуется.

Есть некоторые другие опции , если Hangfire isn 'вариант для вас.

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

...