Browse Source

Make HangfireJobExecutionAdapter async.

pull/6410/head
maliming 6 years ago
parent
commit
3840a423af
  1. 27
      framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireBackgroundJobManager.cs
  2. 12
      framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireJobExecutionAdapter.cs

27
framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireBackgroundJobManager.cs

@ -11,23 +11,14 @@ namespace Volo.Abp.BackgroundJobs.Hangfire
public virtual Task<string> EnqueueAsync<TArgs>(TArgs args, BackgroundJobPriority priority = BackgroundJobPriority.Normal, public virtual Task<string> EnqueueAsync<TArgs>(TArgs args, BackgroundJobPriority priority = BackgroundJobPriority.Normal,
TimeSpan? delay = null) TimeSpan? delay = null)
{ {
if (!delay.HasValue) return Task.FromResult(delay.HasValue
{ ? BackgroundJob.Schedule<HangfireJobExecutionAdapter<TArgs>>(
return Task.FromResult( adapter => adapter.ExecuteAsync(args),
BackgroundJob.Enqueue<HangfireJobExecutionAdapter<TArgs>>( delay.Value
adapter => adapter.Execute(args) )
) : BackgroundJob.Enqueue<HangfireJobExecutionAdapter<TArgs>>(
); adapter => adapter.ExecuteAsync(args)
} ));
else
{
return Task.FromResult(
BackgroundJob.Schedule<HangfireJobExecutionAdapter<TArgs>>(
adapter => adapter.Execute(args),
delay.Value
)
);
}
} }
} }
} }

12
framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/HangfireJobExecutionAdapter.cs

@ -1,8 +1,6 @@
using Microsoft.Extensions.DependencyInjection; using System.Threading.Tasks;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Volo.Abp.Threading;
namespace Volo.Abp.BackgroundJobs.Hangfire namespace Volo.Abp.BackgroundJobs.Hangfire
{ {
@ -22,7 +20,7 @@ namespace Volo.Abp.BackgroundJobs.Hangfire
Options = options.Value; Options = options.Value;
} }
public void Execute(TArgs args) public async Task ExecuteAsync(TArgs args)
{ {
if (!Options.IsJobExecutionEnabled) if (!Options.IsJobExecutionEnabled)
{ {
@ -39,8 +37,8 @@ namespace Volo.Abp.BackgroundJobs.Hangfire
{ {
var jobType = Options.GetJob(typeof(TArgs)).JobType; var jobType = Options.GetJob(typeof(TArgs)).JobType;
var context = new JobExecutionContext(scope.ServiceProvider, jobType, args); var context = new JobExecutionContext(scope.ServiceProvider, jobType, args);
AsyncHelper.RunSync(() => JobExecuter.ExecuteAsync(context)); await JobExecuter.ExecuteAsync(context);
} }
} }
} }
} }

Loading…
Cancel
Save