Hangfire
Dosaic.Plugins.Jobs.Hangfire is a plugin
that allows Dosaic based services
to use the hangfire package to manage and schedule (cron) jobs
.
Installation
To install the nuget package follow these steps:
or add as package reference to your .csproj
Appsettings.yml
Configure your appsettings.yml with these properties
For example
HangfireConfiguration.cs
Configuration in your plugin host
Usage
Please take a look at the official Hangfire documentation https://docs.hangfire.io/en/latest/ and best practises https://docs.hangfire.io/en/latest/best-practices.html
Every job does out of the box 10 retries (with increasing wait times) if not configured otherwise.
Auto registration of jobs
You can also define recurring jobs as simple classes and annotate them with the [ReccuringJob] attribute which then auto-registers the job for you at startup
Define jobs
Without parameters
With parameters
Job input parameters and results get serialized to json and are displayed in the hangfire dashboard, be aware of the possibility of leaking sensitive information!
Fire and forget jobs or enqueue dynamically
You can create new jobs from anywhere in your service, see also https://docs.hangfire.io/en/latest/background-methods/index.html
Attributes
UniquePerQueueAttribute
If you want the job only to be executed as one instance at any given point in time use the
This ensures that there is only one job of the same type/name and method parameters in processing or queued at any given point
JobCleanupExpirationTimeAttribute
With this you can specify how many days the results of a job should be kept until it gets deleted
Filters
LogJobExecutionFilter
This filter logs the start and finish of an job execution.
EnabledByFeatureFilter
This filter works in conjunction with the microsoft feature management system. If you would like to be able to enable or disable the execution of your jobs based on configuration this is the right tool for it.
Default Feature management with file based configuration
This allows you to enable jobs based on configuration files. If you have enabled the setting
then you can configure here, if your jobs should run on execution or not, useful for multiple environments etc.
If your service supports hot reloading of configuration files, you can enable/disable jobs at run time.
Feature management with the dosaic unleash plugin
This works in conjunction with the plugin Dosaic.Plugins.Management.Unleash. This replaces the ability of setting the features via files. Instead one can use the unleash api/service and use feature flags for enabling the jobs. Just make sure that the name of the job matches the name of the feature flag you are creating in unleash.
The dosaic unleash plugin then should do the rest of the heavy lifting.
Since the attribute resolves the feature on before executing the job, changes to the configuration can be done at runtime with a maximal delay based on how often the dosaic unleash plugin refreshes its cache. You can find more information in the documentation of the dosaic unleash plugin.
Last updated