Я использую Apache Camel с весенней загрузкой и файлом camel-config.xml.Я создал простой маршрут, который запускается каждую секунду и запускает метод класса:
<camelContext xmlns="http://camel.apache.org/schema/spring" id="myContext" trace="true" streamCache="true" useMDCLogging="true">
<route id="testCron">
<from uri="quartz2://TestCron?cron=0/1 * * * * ?" />
<to uri="bean:folder.MyClass?method=test" />
</route>
</camelContext>
У класса просто есть счетчик int, который увеличивается и отображается:
package folder;
public class MyClass {
private static int count = 0;
public static void test(Exchange exchange) throws Exception {
count = count + 1;
System.out.println(count);
}
}
У меня есть другая частькода (показ не имеет значения), который может запускать и останавливать вышеуказанный маршрут.Проблема, с которой я сталкиваюсь, заключается в остановке маршрута, ожидании 5 секунд и запуске его обратно.
Вместо того, чтобы продолжать, где он оставил счет, он перехватывает каждую итерацию, которую не выполнял, пока маршрут был остановлен.
Я много читал, пытаясь решить эту проблему.То, что я узнал, было ниже:
- То, что происходит, называется «пропуском огня»
- Существует параметр, который позволяет настроить инструкции пропуска зажигания
- Согласно ApacheВ документации Camel вы не можете использовать параметры trigger.XXX (которые позволят настроить инструкции пропуска зажигания), если вы используете выражение cron.
- Согласно документации Apache Camel, пропуски зажигания будут записываться только в том случае, если кварцв кластерном режиме.
- Вы можете настроить свойства кварца для отключения кластерного режима (он мне не нужен).
Что я пытался без удачи:
- Создан файл свойств кварца с org.quartz.jobStore.isClustered: false.Я не уверен, что он был поднят (поместите его в src / resources и создайте bean-компонент, указывающий на него).Это не решило проблему.
- Попытка установить misfireInstruction в качестве опции запуска в маршруте. Quartz2: // TestCron? Trigger.misfireInstruction = 2 & cron = 0/1 * * * *? "
У меня совершенно нет вариантов: x Буду признателен за любую помощь :)