Как написано в официальной документацииSpring столкновения планировщик при использовании fixedDelay
.. фиксированной задержкой, а это означает, что период будет измеряться с момента завершения каждого предыдущего вызова
Но я есть проблемы с ним. Мой код с fixedDelayString
@Scheduled(fixedDelayString = "${schedule.time:2000}")
public void tasksScheduler() {
LOG.trace("starts");
try {
Thread.sleep(new Random().nextInt(5000));
} catch (InterruptedException e) {
e.printStackTrace();
}
LOG.trace("completed");
}
имеет порядок в моей локальной машине
2015-09-22 10:16:11,098 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 10:16:12,707 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 10:16:15,708 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 10:16:18,768 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 10:16:21,769 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 10:16:23,882 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 10:16:26,882 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 10:16:31,073 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 10:16:34,074 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
Но у меня есть столкновений в моей servel. Журналы сервера ниже
2015-09-22 05:26:21,315 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 05:26:25,593 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 05:26:28,594 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 05:26:32,169 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 05:26:35,170 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 05:26:38,608 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 05:26:41,608 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 05:26:44,341 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 05:26:47,342 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 05:26:49,808 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] starts
2015-09-22 05:26:50,400 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] completed
2015-09-22 05:26:50,734 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 05:26:53,401 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] starts
2015-09-22 05:26:53,735 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 05:26:54,074 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] completed
2015-09-22 05:26:56,267 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 05:26:57,075 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] starts
2015-09-22 05:26:58,604 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] completed
2015-09-22 05:26:59,268 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 05:27:01,605 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] starts
2015-09-22 05:27:03,176 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] completed
2015-09-22 05:27:03,375 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 05:27:06,177 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] starts
2015-09-22 05:27:06,376 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 05:27:07,253 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] completed
2015-09-22 05:27:10,254 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] starts
2015-09-22 05:27:10,691 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 05:27:12,737 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] completed
2015-09-22 05:27:13,692 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 05:27:15,450 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 05:27:15,738 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] starts
2015-09-22 05:27:16,940 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] completed
2015-09-22 05:27:18,450 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] starts
2015-09-22 05:27:19,941 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] starts
2015-09-22 05:27:20,727 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-3-thread-1] completed
2015-09-22 05:27:22,741 TRACE r.u.s.i.AutoRegistrationAccountScheduler [pool-6-thread-1] completed
Я попытался определить пользовательский планировщик, как
<task:annotation-driven scheduler="myScheduler"/>
<task:scheduler id="myScheduler" pool-size="1"/>
Но это не помогает мне, столкновения все еще существуют
2015-09-22 10:50:29, [myScheduler-1] starts
2015-09-22 10:50:32, [myScheduler-1] completed
2015-09-22 10:50:34, [myScheduler-1] starts
2015-09-22 10:50:36, [myScheduler-1] completed
2015-09-22 10:50:38, [myScheduler-1] starts
2015-09-22 10:50:39, [myScheduler-1] completed
2015-09-22 10:50:41, [myScheduler-1] starts
2015-09-22 10:50:42, [myScheduler-1] starts
2015-09-22 10:50:43, [myScheduler-1] completed
2015-09-22 10:50:45, [myScheduler-1] starts
2015-09-22 10:50:47, [myScheduler-1] completed
2015-09-22 10:50:47, [myScheduler-1] completed
2015-09-22 10:50:49, [myScheduler-1] starts
2015-09-22 10:50:49, [myScheduler-1] starts
2015-09-22 10:50:49, [myScheduler-1] completed
2015-09-22 10:50:51, [myScheduler-1] starts
2015-09-22 10:50:51, [myScheduler-1] completed
2015-09-22 10:50:53, [myScheduler-1] starts
2015-09-22 10:50:54, [myScheduler-1] completed
2015-09-22 10:50:56, [myScheduler-1] starts
2015-09-22 10:50:57, [myScheduler-1] completed
2015-09-22 10:50:59, [myScheduler-1] starts
2015-09-22 10:51:00, [myScheduler-1] completed
2015-09-22 10:51:02, [myScheduler-1] starts
2015-09-22 10:51:03, [myScheduler-1] completed
2015-09-22 10:51:04, [myScheduler-1] completed
2015-09-22 10:51:05, [myScheduler-1] starts
2015-09-22 10:51:06, [myScheduler-1] starts
2015-09-22 10:51:10, [myScheduler-1] completed
2015-09-22 10:51:10, [myScheduler-1] completed
2015-09-22 10:51:12, [myScheduler-1] starts
2015-09-22 10:51:12, [myScheduler-1] starts
2015-09-22 10:51:16, [myScheduler-1] completed
2015-09-22 10:51:17, [myScheduler-1] completed
2015-09-22 10:51:18, [myScheduler-1] starts
2015-09-22 10:51:19, [myScheduler-1] starts
2015-09-22 10:51:19, [myScheduler-1] completed
2015-09-22 10:51:19, [myScheduler-1] completed
2015-09-22 10:51:21, [myScheduler-1] starts
Почему fixedDelay работать так? Как я могу убедиться, что не будет никаких столкновений?
Его ничего общего с вашей серверной машиной. Если вы видите журналы, вы можете увидеть, что в настоящее время активны два разных пула потоков, т. Е. Пул-3 и пул-6, и они работают на собственном пуле потоков с соответствующими фиксированными ссылками на задержки. – Avis
Извините, но я не понимаю, что вы хотите сказать. Да, я вижу два пула пулов пула-3 и пул-6, но я не знаю, как это относится к срокам. Поскольку я думаю, что когда возникает истечение срока события, весна принимает один из существующего потока из пула потоков и вызывает метод, используя этот поток. Не правда ли? – kraken
Я попытался определить пользовательский планировщик, но это мне не помогает, конфликты все еще существуют. Я обновил вопрос – kraken