Задание Quartz Scheduler выполняется непрерывно после триггера

Я использую продукт под названием Mirth для подключения к SFTP-серверу и еженедельной загрузки нескольких файлов. В продукте есть функция cron, позволяющая использовать выражение cron для настройки этой функции.

Выражение cron, которое я использую:

0 45 13 ? * MON *

ПРИМЕЧАНИЕ. Это не типичный cron для Linux. Это спецификация cron-выражения, используемая Java для планирования задач даже с точностью до секунды (https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).

Предполагается, что каждый понедельник в 13:45 он будет связываться с файлами. Но когда он выходит на связь, он делает это непрерывно в течение 20 минут или около того, загружая одни и те же файлы несколько сотен раз вместо одного раза.

Есть ли неясность в этом выражении? Кажется, что он должен звонить только один раз. Я только что заметил, что в самом начале выражения есть пробел, хотя не уверен, как это заставит его работать в течение 20 минут снова и снова.


person Jim Gough    schedule 07.01.2020    source источник
comment
Вы можете удалить тег linux и вместо этого добавить кварцевый планировщик, чтобы попытаться снова открыть его. Я не понимаю, почему это не сработает. Может быть, попробуйте изменить свой MON на 2 и убрать * для года, так как это необязательно. Это настоящий документ API quartz-scheduler.org/ api/2.1.7/org/quartz/CronExpression.html   -  person agermano    schedule 08.01.2020
comment
Если ваш вопрос будет открыт повторно, мы можем проверить ваше расписание, используя freeformatter.com/cron. -expression-generator-quartz.html . Вы также должны посмотреть в Mirth Connect, он должен указать вам следующее время выполнения на вкладке конфигурации источника.   -  person Freiheit    schedule 10.01.2020


Ответы (1)


Вы можете упростить планирование crontab с помощью генераторов crontab, таких как ie. этот сайт:

www.crontab.guru или www.crontab-generator.org

(Это первые два результата Google)

Судя по тому, что вы описали, это неверный синтаксис для crontab.

ОТРЕДАКТИРОВАНО: 13:45 каждый понедельник будет:

45 13 * * 1
person grab-a    schedule 07.01.2020
comment
Я действительно использовал аналогичный сайт для создания этого - person Jim Gough; 08.01.2020
comment
Тогда это неправильно, потому что в crontab есть 5 разных слотов для представления времени (это * ), в вашем синтаксисе их будет 7, включая такие знаки, как ? которых нет в crontab - person grab-a; 08.01.2020
comment
Пошел и посмотрел спецификацию cron, вы правы, это другая спецификация, она используется Java и позволяет планировать по секундам. Спасибо за ваш вклад, я обновлю свой вопрос, чтобы вызвать это. - person Jim Gough; 08.01.2020