mirror of
https://github.com/collinbarrett/FilterLists.git
synced 2026-03-11 09:04:27 +00:00
feat(archival): ✨ ensure hangfired mediatr cmds have cancellation support
This commit is contained in:
parent
2c0dd92ac7
commit
6f1a04afd5
1 changed files with 7 additions and 4 deletions
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
using Hangfire;
|
||||
using MediatR;
|
||||
using Newtonsoft.Json;
|
||||
|
|
@ -10,12 +11,14 @@ public static class RequestExtensions
|
|||
{
|
||||
public static void EnqueueBackgroundJob(this IRequest request)
|
||||
{
|
||||
BackgroundJob.Enqueue<HangfireMediator>(m => m.Send(request));
|
||||
// Hangfire replaces CancellationToken at runtime with its own. We just need any in the signature.
|
||||
// https://docs.hangfire.io/en/latest/background-methods/using-cancellation-tokens.html#cancellationtoken
|
||||
BackgroundJob.Enqueue<HangfireMediator>(m => m.Send(request, CancellationToken.None));
|
||||
}
|
||||
|
||||
public static void AddOrUpdateRecurringJob(this IRequest request, Func<string> cronExpression)
|
||||
{
|
||||
RecurringJob.AddOrUpdate<HangfireMediator>(m => m.Send(request), cronExpression);
|
||||
RecurringJob.AddOrUpdate<HangfireMediator>(m => m.Send(request, CancellationToken.None), cronExpression);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -54,9 +57,9 @@ public HangfireMediator(IMediator mediator)
|
|||
_mediator = mediator;
|
||||
}
|
||||
|
||||
public void Send(IRequest request)
|
||||
public void Send(IRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
_mediator.Send(request);
|
||||
_mediator.Send(request, cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue