public class RetryListener implements JobListener { public void jobWasExecuted(JobExecutionContext context, JobExecutionException exception) { if (exception != null && context.getRefireCount() < 3) { context.setRefireCount(context.getRefireCount() + 1); // Re-run the job immediately } } } Alex added three lines to the scheduler config. The next time the gateway failed, Quartz waited 10 seconds, tried again, and succeeded.
She handed Alex a sticky note with the golden rule: The correct fix for 1:30 AM every weekday: 0 30 1 ? * MON-FRI
0 30 13 ? * SUN
That’s when a senior engineer, , slid a worn USB stick across the desk. On it, written in permanent marker: Quartz . The First Trigger Maya didn't give a lecture. She gave a riddle. "In Quartz, there are three things: The Job (what), the Trigger (when), and the Scheduler (who puts them together). Write a Job that prints 'Coffee time.' Build a Trigger that fires every 5 seconds. Then walk away." Alex opened IntelliJ. The dependency was simple:
That was the last straw. Alex went back to the ebook draft (the one you are now reading) and found .
Maya laughed. "You used 13 for 1 PM. AM is 1. And you forgot the '?' for the day-of-week."
Alex realized the truth of the ebook's opening line: "A cron job is a reminder. A Quartz scheduler is a promise." Quartz didn't just run code on a schedule. It gave Alex back the night. It turned "Will it run?" into "When will it run?" It separated what you want to do from when you want to do it.