I needed a batch processing framework for reliable scheduling and execution of jobs with no single point of failure. There really wasn’t one available (that I could find anyway) so I wrote one. It borrows elements of its architecture from BizTalk and other places and uses a competing consumers model to run both the work and the scheduling aspect. Its pretty stable, even if elements of the UI are a bit kooky. Its available on codeplex now, take a look.
Codeplex site here, with full source code and installers http://NQueue.codeplex.com/
Documentation here NQueue Overview.docxProject Description
NQueue is intended to provide a work scheduling and execution framework and toolset that contains no single point of failure. Using a farm of servers and a clustered SQL server backend, multiple NQueue windows services compete to evaluate configured schedules and execute work NQueue is a distributed system written in C# composed of the following high level components;
- Admin tool – A windows form application that enables add and delete operations against the various artefacts in a NQueue installation (jobs, schedules, host instances). This would typically be used to view or change the system configuration although it can also be used to immediately enqueue items of work for execution (during testing for example)
- NQueue Monitor website – A website allowing operations and support staff to view the progress of configured jobs. They may also pause or disable job instances from this tool.
- SQL Database – all state for the system is stored in a central (clustered) SQL database.
- Windows services – NQueue processing services running on any number of configured servers competing to evaluate job schedules and execute job code.
- Client API – A .net class library that users can consume/inherit from to allow their job code to interact with the framework.
- NQueueCmd – command line enqueuing of work to execute immediately.