SolTechnology.Core.Scheduler
0.5.0
dotnet add package SolTechnology.Core.Scheduler --version 0.5.0
NuGet\Install-Package SolTechnology.Core.Scheduler -Version 0.5.0
<PackageReference Include="SolTechnology.Core.Scheduler" Version="0.5.0" />
<PackageVersion Include="SolTechnology.Core.Scheduler" Version="0.5.0" />
<PackageReference Include="SolTechnology.Core.Scheduler" />
paket add SolTechnology.Core.Scheduler --version 0.5.0
#r "nuget: SolTechnology.Core.Scheduler, 0.5.0"
#:package SolTechnology.Core.Scheduler@0.5.0
#addin nuget:?package=SolTechnology.Core.Scheduler&version=0.5.0
#tool nuget:?package=SolTechnology.Core.Scheduler&version=0.5.0
Overview
The SolTechnology.Core.Scheduler library provides minimum functionality needed for scheduled background tasks. It handles needed services registration and configuration. It is based on Hangfire.Cronos library. The service is using in-memory scheduler, so does not share the scheduling information between instances.
Registration
For installing the library, reference SolTechnology.Core.Scheduler nuget package and invoke AddScheduledJob<T>() service collection extension method:
services.AddScheduledJob<SynchornizeCristianoRonaldoMatches>();
Configuration
- The first option is to create an appsettings.json section:
"Configuration": {
"ScheduledJobs": [
{
"JobName": "SynchornizeCristianoRonaldoMatches",
"CronExpression": "0 0 * * *"
}
]
}
In this case, JobName has to match registered service (T) name.
- Alternatevely the same settings can be provided by optional parameter during registration:
builder.Services.AddScheduledJob<SynchornizeCristianoRonaldoMatches>(new ScheduledJobConfiguration("0 0 * * *")); //every day at midnight
Usage
- Derivate from ScheduledJob base class
public class SynchornizeCristianoRonaldoMatches : ScheduledJob
- Implement constructor and Execute() method
public SynchornizeCristianoRonaldoMatches(
ISchedulerConfigurationProvider schedulerConfigurationProvider,
IServiceScopeFactory serviceScopeFactory,
ILogger<ScheduledJob> logger)
: base(schedulerConfigurationProvider, serviceScopeFactory, logger)
{
var scope = serviceScopeFactory.CreateScope();
var handler = scope.ServiceProvider.GetRequiredService<ICommandHandler<SynchronizePlayerMatchesCommand>>();
_handler = handler;
}
public override async Task Execute()
{
await _handler.Handle(new SynchronizePlayerMatchesCommand(44));
}
- The job will run based on provided Cron expression.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Cronos (>= 0.8.4)
- Microsoft.Extensions.Configuration (>= 10.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.