Details
-
New Feature
-
Status: Resolved
-
Major
-
Resolution: Done
-
None
-
None
Description
Introduction
The existing batch jobs in Fineract are currently scheduled via Quartz and the batch job execution is based on a custom implementation which lack a lot of properties for high-available systems.
A couple of examples:
- The batch jobs are not working with chunks
- The dataset is not partitioned
- The batch job execution cannot be distributed into multiple worker nodes
- They lack even the minimum level of fault-tolerance (e.g. if a job fails, it won’t be continued upon restart)
Spring Batch provides a handy framework for executing batch jobs, provides the capabilities of fault-tolerance, chunking and remote partitioning. Also, to ensure high availability for remote partitioning, Spring Batch nicely integrates with the Spring Integration module which seamlessly handles the messaging channel between manager and worker nodes.
In addition to the integration of Spring Batch, the existing batch job structure have to be revised because in the current implementation of Fineract, only individual jobs exist. While that’s enough to some degree, there shall be a notion of a COB job that does everything for a single account at the end of a business day.