Skip to content

ravendb/quartznet-RavenDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quartz.NET-RavenDB

JobStore implementation for Quartz.NET scheduler using RavenDB.

About

Quartz.NET is a full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems.

Quartz.NET on RavenDB is a new provider written for Quartz.NET which lets us use the RavenDB NoSQL database as the persistent Job Store for scheduling data (instead of the SQL solutions that are built-in Quartz.NET).

Installation

First add scheduling to your app using Quartz.NET (example). Then install the NuGet package.

Configuration & Usage

.NET Framework

In your code, where you would have normally configured Quartz to use a persistent job store, you must add the following configuration properties:

// In your application where you want to setup the scheduler:
NameValueCollection properties = new NameValueCollection
{
    // Normal scheduler properties
    ["quartz.scheduler.instanceName"] = "TestScheduler",
    ["quartz.scheduler.instanceId"] = "instance_one",
    ["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz",
    ["quartz.threadPool.threadCount"] = "1",
    ["quartz.threadPool.threadPriority"] = "Normal",

    // RavenDB JobStore property
    ["quartz.jobStore.type"] = "Quartz.Impl.RavenDB.RavenJobStore, Quartz.Impl.RavenDB"
    // RavenDB Default Database name
    ["quartz.jobStore.database"] = "QuartzDemo",
    // One or more URLs to database server
    ["quartz.jobStore.urls"] = "[\"http://live-test.ravendb.net\"]",
    // If you use authentication, specify certificate and password
    //["quartz.jobStore.certPath"] = "My/Cert/path.pfx",
    //["quartz.jobStore.certPass"] = "SuperSecret",
};

// Init scheduler with the desired configuration properties
ISchedulerFactory sf = new StdSchedulerFactory(properties);
IScheduler scheduler = sf.GetScheduler();

.NET Core

For use in .NET Core Workers or ASP.NET Core use the recommended Fluent API when setting up a Quartz in ConfigureServices like:

var configuration = new ConfigurationBuilder()
                        .AddJsonFile("appsettings.json")
                        .Build();

var section = configuration.GetSection("MyService");
var config = section.Get<MyServiceConfig>();

services.AddQuartz(q =>
    {
        q.UseMicrosoftDependencyInjectionJobFactory();

        q.UseDefaultThreadPool(tp =>
        {
            tp.MaxConcurrency = 10;
        });

        q.UsePersistentStore(s =>
        {
            s.UseRavenDb(options =>
            {
                options.Urls = config.QuartzRavenStore.Urls;
                options.Database = config.QuartzRavenStore.DatabaseName;
                // specify certificate, if necessary
            });

            s.UseJsonSerializer();
        });
        
        // Add jobs and triggers as you wish
    }
);

services.AddQuartzHostedService(
    q => q.WaitForJobsToComplete = true);

About

RavenDB JobStore support for Quartz.NET scheduler.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages