Как-то раз сталкивался с подобной проблемой.
Я думаю все дело в том, что по-умолчанию флаг concurrent равен true,
что означает, что задания не обязательно выполняются в порядке
поступления (об этом и многом другом упоминается на официальной
странице плагина). Можно строго упорядочить их выполнение по мере
поступления изменив этот флаг на false.
Job.triggerNow() меня также разочаровал, поэтому я сделал немного по
другому.
В контроллере я делал так:
def quartzScheduler
...
// Вот так можно изменить интервал выполнения работы
def trigger = quartzScheduler.getTrigger('<название триггера>',
'<название группы>')
trigger.repeatInterval=<здесь ставиться число long для временного
интервала между запусками задачи>
quartzScheduler.rescheduleJob(
trigger.name, trigger.group, trigger)
...
// А вот выполнить задание незамедлительно можно вот так, запланировав
ее на "сейчас"
<название класса задачи, а-ля SomeJob>.schedule(new Date().getTime())