C# 处理作为hangfire作业运行的MediatR事件中抛出的异常
我将mediatR配置为使用Hangfire运行事件,如下所示:C# 处理作为hangfire作业运行的MediatR事件中抛出的异常,c#,.net,jobs,hangfire,mediatr,C#,.net,Jobs,Hangfire,Mediatr,我将mediatR配置为使用Hangfire运行事件,如下所示: public static class MediatRExtension { public static void Enqueue(this IMediator mediator, INotification @event) { BackgroundJob.Enqueue<HangfireMediator>(m => m.PublishEvent(@event)); } }
public static class MediatRExtension
{
public static void Enqueue(this IMediator mediator, INotification @event)
{
BackgroundJob.Enqueue<HangfireMediator>(m => m.PublishEvent(@event));
}
}
public class HangfireMediator
{
private readonly IMediator _mediator;
public HangfireMediator(IMediator mediator)
{
_mediator = mediator;
}
public void PublishEvent(INotification @event)
{
_mediator.Publish(@event);
}
}
现在我称之为它调用的API端点:
_mediator.Enqueue(@event);
return Ok();
问题是当我在EventHandler(从mediatr)中抛出异常时。在hangfire dashboard中,此作业位于Successed(成功)选项卡中,如下所示
如何让hangfire处理此异常并再次重试作业?此作业应失败/已计划。但是mediatr事件处理程序中的这个异常似乎没有告诉hangfire它就接受了异常…我发现Wait()
是解决方案:
public void PublishEvent(INotification @event)
{
_mediator.Publish(@event).Wait();
}
但是我不知道为什么…我发现Wait()
是解决方案:
public void PublishEvent(INotification @event)
{
_mediator.Publish(@event).Wait();
}
但我不知道为什么