Hangfire.Oracle.Core is based on Hangfire.MySqlStorage(https://github.com/arnoldasgudas/Hangfire.MySqlStorage)
I fixed some bugs and support .net standard 2.0.
Oracle storage implementation of Hangfire - fire-and-forget, delayed and recurring tasks runner for .NET. Scalable and reliable background job runner. Supports multiple servers, CPU and I/O intensive, long-running and short-running jobs.
Some features of Oracle storage implementation is under development!
Install Oracle
Run the following command in the NuGet Package Manager console to install Hangfire.Oracle.Core:
Install-Package Hangfire.Oracle.Core
Use one the following ways to initialize OracleStorage:
- Create new instance of
OracleStoragewith connection string constructor parameter and pass it toConfigurationwithUseStoragemethod:
GlobalConfiguration.Configuration.UseStorage(
new OracleStorage(connectionString));- Alternatively one or more options can be passed as a parameter to
OracleStorage:
GlobalConfiguration.Configuration.UseStorage(
new OracleStorage(
connectionString,
new OracleStorageOptions
{
TransactionIsolationLevel = IsolationLevel.ReadCommitted,
QueuePollInterval = TimeSpan.FromSeconds(15),
JobExpirationCheckInterval = TimeSpan.FromHours(1),
CountersAggregateInterval = TimeSpan.FromMinutes(5),
PrepareSchemaIfNecessary = true,
DashboardJobListLimit = 50000,
TransactionTimeout = TimeSpan.FromMinutes(1),
SchemaName = "HANGFIRE"
}));- With version 1.1 you can provide your own connection factory.
GlobalConfiguration.Configuration.UseStorage(
new OracleStorage(
() => new OracleConnection(connectionString),
new OracleStorageOptions
{
SchemaName = "HANGFIRE"
}));Description of optional parameters:
TransactionIsolationLevel- transaction isolation level. Default is read committed. Didn't test with other options!QueuePollInterval- job queue polling interval. Default is 15 seconds.JobExpirationCheckInterval- job expiration check interval (manages expired records). Default is 1 hour.CountersAggregateInterval- interval to aggregate counter. Default is 5 minutes.PrepareSchemaIfNecessary- if set totrue, it creates database tables. Default istrue.DashboardJobListLimit- dashboard job list limit. Default is 50000.TransactionTimeout- transaction timeout. Default is 1 minute.SchemaName- schema name. Default is empty
Number of opened connections depends on Hangfire worker count. You can limit worker count by setting WorkerCount property value in BackgroundJobServerOptions:
app.UseHangfireServer(
new BackgroundJobServerOptions
{
WorkerCount = 1
});More info: http://hangfire.io/features.html#concurrency-level-control
Hangfire provides a dashboard
More info: Hangfire Overview
Please use Visual Studio or any other tool of your choice to build the solution.
Currently Install.sql is not deployed if DB objects are not existing. As a workaround run your scripts in database and give give CRUD grants to the user that is given in connection string.