Home
Softono

Dynamic Job Scheduler

Open source Apache-2.0 Java
12
Stars
5
Forks
0
Issues
1
Watchers
5 years
Last Commit

 About Dynamic Job Scheduler

It is an API based job scheduler(uses cron-expression, also we can customize triggers by giving time in millis) where we can create, update, delete, activate and deactivate jobs at any time with REST calls.

Platforms

Web Self-hosted

Languages

Java

Links

Need Help Installing Dynamic Job Scheduler?

We provide expert installation service for this software. Our team will install, configure, and secure Dynamic Job Scheduler on your server. plans start at just $30.

Dynamic Job Scheduler

View on GitHub

Dynamic-Job-Scheduler

It is an API based job scheduler(uses cron-expressions, also we can customize triggers by giving time in millis) where we can create, update, delete, activate and deactivate jobs at anytime with REST calls.

  • The jobs are persisted in the database MySQL when create and update request is made.
  • The sheduler automatically picks the jobs and resumes them, after restarting when the application goes down.

References:

[1] https://www.javatpoint.com/spring-tutorial

[2] Lilium Code YouTube

[3] http://www.quartz-scheduler.org/

[4] https://www.baeldung.com/quartz

Installation:

  • Clone this repo:
> git clone https://github.com/sanjay235/Dynamic-Job-Scheduler.git
> cd Dynamic-Job-Scheduler
  • Install Maven, MySQL(any Database of your choice), IntelliJ(any IDE of your choice).
  • Create database tables provide in the resources/sql folder.
  • Update the dependencies given in the pom.xml using Maven.
  • Run it as spring boot application in the IDE.

API endpoints:

  • I have created a job called APITriggerJob for hitting an external REST API at regular intervals for demo purposes.
  • The request body for below APIs is specific to APITriggerJob that I have created.
  • You can customise and add new jobs as per your need in the main/src/main/java/com/scheduling/app/job folder.
Create job end point = localhost:8080/api/scheduler/insert-job
HTTP method = POST
JSON body = {
    "jobName": "Github profile fetch job",
    "description": "This job fetches the Sanjay's Github profile details.",
    "cronExpression": "0/45 * * * * ?",
    "requestUrl": "https://github.com/sanjay235",
    "requestType": "GET",
    "callbackUrl": "https://www.github.com",
    "retryCount": 23,
    "delayBetweenRetries": 2335,
    "param": {},
    "headers": {
        "Content-Type": "application/json"
    },
    "body": {}
}
Get job details endpoint = localhost:8080/api/scheduler/get-job/235
HTTP method = GET
Update Job endpoint = localhost:8080/api/scheduler/update-job/
HTTP method = PUT
For updating a job get the entire request body using get-job details end point and make necessary changes
Json body = {
    "jobID": 235,
    "jobName": "Github profile fetch job",
    "description": "This job fetches the Sanjay's Github profile details.",
    "cronExpression": "0/45 * * * * ?",
    "requestUrl": "https://github.com/sanjay235",
    "requestType": "GET",
    "callbackUrl": "https://www.github.com",
    "retryCount": 23,
    "delayBetweenRetries": 2335,
    "param": {},
    "headers": {
        "Content-Type": "application/json"
    },
    "body": {}
}
Delete job end point = localhost:8080/api/scheduler/delete-job/235
HTTP Method = DELETE
Activate job end point = localhost:8080/api/scheduler/activate-job/235
HTTP Method = PUT
De-Activate job end point = localhost:8080/api/scheduler/deactivate-job/235
HTTP Method = PUT

Contribute:

  • Feel free to fork to customise and add the jobs as per your need. Add a star and share if you like it.
  • Corrections & Contributions are always welcome! 😃