2

如何让我的 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,但是还有另一种方法吗?

4

1 回答 1

3

Mediatr 通知处理程序已经启动并忘记了。

处理这个问题的另一种方法是排队一个后台任务来完成这项工作。看看像Hangfire这样的东西,并在 _mediator.Send() 或 _mediator.Publish() 方法中实现它。

Hangfire 将使您能够监控后台任务,并能够在需要时自动重试任务。

如果 Hangfire 不适合您,还有其他一些选择。

希望这可以帮助!

于 2018-10-12T18:34:14.223 回答