如何使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,但是还有另一种方法吗?
答案 0 :(得分:2)
Mediatr通知处理程序已经启动并忘记了。
处理此问题的另一种方法是将后台任务排队以完成工作。查看类似Hangfire的东西,并以_mediator.Send()或_mediator.Publish()方法实现。
Hangfire将使您能够监视后台任务,并能够根据需要自动重试该任务。
如果无法使用Hangfire,则有some other options。
希望这会有所帮助!