1

I want to add scheduling capabilities to my Java server (Spring/MySQL) and in the middle of evaluating Quartz, which is both popular and notorious.

The product I am building is a SaaS, and my architectual philosophy is somewhere in the middle of the scale between a good(?) old monolilth and microservices. Based on this philosophy I do see scheduling as a seperate service, and thus plan to have one/many scheduling servers in my backend.

When evaluating Quartz I noticed to following pitfalls when working with a remote instance of Quartz (MySQL jobstore):

  1. If the server is down - the client cannot schedule tasks (synchronic communication)
  2. Since it uses Java RMI, I assume there may be problems with different versions of Java/Quartz in the client and the server

My questions for the Quartz experts are:

  1. Are my assumptions correct?
  2. Is there a starndard communication bridge for Quartz over Kafka/Rabbit that allows it to communicate via asynchronic communication?
  3. If there is no standard bridge, how do you deal with real-life scenarios in production-level enterprise-level applications?
  4. Whould you recommend Quartz in general or do you suggest other alternatives? I know Quartz is notorious, but it is also main-stream, if you offer alternatives, pls provide products that are widely addopted.

Thanks :)

Tal Sheffer
  • 155
  • 1
  • 10
  • 1
    Yes, your assumptions are absolutely correct. If the scheduler is down, you cannot connect to it and change jobs, triggers etc. You are also right about the Java RMI being very sensitive to Quartz APIs used on both communication sides. that means, if you update Quartz on the server side, you should always update Quartz on the client side as well. There is no standard bridge that comes out of the Quartz box. You can check our product QuartzDesk that exposes all scheduling APIs through JAX-WS services. These hide all the Quartz version intrinsics and work with all Quartz versions. – Jan Moravec Jun 13 '19 at 15:44
  • 1
    If you need a ready-to use, generic and clusterable Quartz-based scheduling application, you may want to check open-source and free QuartzDesk Executor app on GitHub - https://github.com/quartzdesk/quartzdesk-executor. It comes with a variety of Quartz job implementation classes that you can use to run local and remote executable scripts, native Java Quartz jobs etc. – Jan Moravec Jun 13 '19 at 15:47
  • @JanMoravec - Thanks! Any other scheduling platform that you recommend (from personal experience)? Did you have about obsidian scheduler? – Tal Sheffer Jun 13 '19 at 20:26
  • 1
    I have only used Quartz in Java projects. It is by far the most wide-spread and popular scheduling solution in the Java world. I am aware there are some alternatives, but honestly I have never used them nor have I seen them being used in any Java project I worked on. See https://stackoverflow.com/questions/1740147/alternatives-to-quartz-for-job-scheduling. Everybody probably used cron on Unix/Linux, but it is not something I would recommend to build a scalable/HA scheduling solution on. – Jan Moravec Jun 14 '19 at 15:07
  • @JanMoravec Got it, thanks! – Tal Sheffer Jun 15 '19 at 19:51

0 Answers0