The requirement is to run a java application periodically (say everyday for an example) to send out email/SMS notification to customers.
Этого можно добиться с помощью Quartz, создав задание и соответствующий триггер, который сработает в определенное время.
The environment is cluster / high availability where more than one node will be active at the same time. This application is to be deployed on all the nodes but only one should start and run even though all of them are configured to run. How to achieve this
Кварцевый планировщик поддерживает механизм кластеризации через базу данных. Если два или более планировщиков имеют одинаковые имена, но разные идентификаторы экземпляров, они образуют кластер, только предостережение о том, что все узлы приложений должны указывать на одну и ту же базу данных.
Also need some guidance on how to deploy this java application on Linux machine (like Cron job or some other way).
Когда Quartz выполняет работу по планированию, нет необходимости создавать работу Linux Cron.
When the server starts again, this job should also start automatically.
Кварц имеет возможность обрабатывать пропущенные триггеры, поэтому, если приложение выходит из строя, кварц будет сканировать пропущенные триггеры при запуске приложения и планировать их.
Чтобы все вышеперечисленное работало, вы должны использовать JDBC Jobstore в кварце вместо RAMJobStore