+ JobWrapper instead of JSON text as Job parameter, is better in finding types (for example interfaces) + Method/Property JsonConverters for RavenDB, needed for the InvocationData replacement ~ Namespace fix (HangFire vs Hangfire (capital F) - InvocationData, RavenDB is already a JSON database, so had no purpose to Serialize and Deserialize job data .. Updated Hangfire.Core to latest 1.6.3 dependency .. Downgraded Newtonsoft.Json to version matching RavenDB. Will be upgraded in RavenDB 3.5.
Usage
This is how you connect to a ravendb server (local or remote)
GlobalConfiguration.Configuration.UseRavenStorage("connection_string", "database_name");
This is how you connect to an embedded ravendb instance
GlobalConfiguration.Configuration.UseEmbeddedRavenStorage();
To enqueue a background job you must have the following in the code somewhere at least once or the background job queue will not process
var client = new BackgroundJobServer();
\\then you can do this, which runs once
BackgroundJob.Enqueue(() => Console.WriteLine("Background Job: Hello, world!"));
Scheduled background jobs are being executed only after given amount of time.
BackgroundJob.Schedule(() => Console.WriteLine("Reliable!"), TimeSpan.FromDays(7));
Recurring jobs were never been simpler, just call the following method to perform any kind of recurring task using the CRON expressions.
RecurringJob.AddOrUpdate(() => Console.WriteLine("Transparent!"), Cron.Daily);
Continuations
Continuations allow you to define complex workflows by chaining multiple background jobs together.
var id = BackgroundJob.Enqueue(() => Console.WriteLine("Hello, "));
BackgroundJob.ContinueWith(id, () => Console.WriteLine("world!"));
License
Copyright © 2013-2014 Sergey Odinokov.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.