How do you create a Quartz job in Spring Boot?

Table of Contents

Introduction

Quartz is a powerful job scheduling library that integrates seamlessly with Spring Boot to run background tasks at specific times or intervals. To use Quartz in Spring Boot, you need to define jobs, configure triggers, and set up a Quartz scheduler. In this guide, we will show you how to create a Quartz job in Spring Boot, configure it, and execute it using Quartz.

Steps to Create a Quartz Job in Spring Boot

1. Add Quartz Dependency

First, you need to add the spring-boot-starter-quartz dependency to your Spring Boot project. This dependency includes the necessary libraries to integrate Quartz with Spring Boot.

If you are using Maven, add the following to your pom.xml:

If you are using Gradle, add this to your build.gradle:

2. Create a Quartz Job

A Quartz job is simply a class that implements the Job interface and contains the logic that should be executed when the job is triggered.

Example: Creating a Simple Job

In this example, MyQuartzJob implements the Job interface and defines the logic inside the execute() method, which is called when the job runs.

3. Configure Quartz Job and Trigger

Next, you need to configure the job and define a trigger to schedule it. Triggers are responsible for specifying when and how often a job should run.

Example: Creating a Trigger

In this configuration:

  • The JobDetail bean defines the job (MyQuartzJob) and associates it with an identity (myQuartzJob).
  • The Trigger bean creates a trigger that will fire every 30 seconds, repeating indefinitely, using SimpleScheduleBuilder.

4. Create and Configure the Scheduler

The next step is to configure the Scheduler in your Spring Boot application. Spring Boot auto-configures a default Scheduler bean when you add the spring-boot-starter-quartz dependency, so you don’t have to do much. However, you can create a custom configuration if you need more control over the scheduler.

You can create a SchedulerFactoryBean if you want to configure it manually:

The SchedulerFactoryBean creates the Quartz Scheduler and connects the job details and triggers to it.

5. Run Your Spring Boot Application

Now that you've created a Quartz job, configured it with a trigger, and set up the scheduler, you're ready to run your Spring Boot application.

When you run your application, the job will execute according to the defined trigger. In this case, it will execute every 30 seconds, printing the message "Executing Quartz job at [current time]" to the console.

6. Alternative: Using the **@Scheduled** Annotation

If you don't need Quartz's advanced scheduling features and just want to run simple tasks at fixed intervals, Spring Boot offers the @Scheduled annotation, which works out of the box with minimal setup. However, if you need more advanced functionality, such as persistence, complex cron expressions, or job management, Quartz is a better choice.

Practical Example: Sending Emails Periodically

Let's say you want to send an email every 10 minutes using Quartz. You would create a Quartz job that sends the email, configure a trigger to execute the job at the desired interval, and set up the necessary logic.

Example Email Job

Trigger Configuration

7. Conclusion

Creating a Quartz job in Spring Boot is a straightforward process. With the spring-boot-starter-quartz dependency, you can easily integrate Quartz into your application, define jobs, and schedule them using various types of triggers. Whether you need simple periodic tasks or complex background job scheduling, Quartz provides the flexibility and power to meet your scheduling needs.

Similar Questions