powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC. Проблема с шедулером.
5 сообщений из 5, страница 1 из 1
Spring MVC. Проблема с шедулером.
    #39953383
pingwin177
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Никак не могу справиться с шедулером. Вроде бы задача простая, а получается черти-чего. Подскажите пожалуйста где я натупил. Есть приложение Spring MVC, есть несколько методов, которые должны выполняться по расписанию. Делаю, выполняются... Вроде все хорошо, а не совсем. В логах вот такая фигня:
Код: java
1.
2.
3.
4.
5.
6.
2020-04-26 22:52:35 INFO  SheduledJob:28 - Sheduler method started
2020-04-26 22:52:35 INFO  SheduledJob:29 - Job started
2020-04-26 22:52:37 INFO  SheduledJob:28 - Sheduler method started
2020-04-26 22:52:37 INFO  SheduledJob:29 - Job started
2020-04-26 22:52:40 INFO  SheduledJob:35 - Job finished
2020-04-26 22:52:42 INFO  SheduledJob:35 - Job finished


Метод запускается дважды. Причем, как показал эксперимент, ни от реализации sheduler'а, ни от триггера запуска, это не зависит никак. Пробовал и "quartz", и аннотации spring, и cron, и фиксированную задержку - результат одинаковый. Ниже код на кварце. Задача, которая должна выполняться (логика удалена):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
@Component
public class SheduledJob implements Job {

    private static final Logger logger = LoggerFactory.getLogger(SheduledReceipts.class);

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

        logger.info("Sheduler method started");
        logger.info("Job started");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        logger.info("Job finished");
   }
}


Кусок spring configuration:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
    @Bean
    public JobDetailFactoryBean jobDetail() {
        JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();
        jobDetailFactory.setJobClass(SheduledJob .class);
        Map<String,Object> jobMap = new HashMap<String,Object>();
        jobMap.put("name", "RAM");
        jobDetailFactory.setJobDataAsMap(jobMap);
        jobDetailFactory.setGroup("cron");
        jobDetailFactory.setName("Sheduled Job");
        jobDetailFactory.setDurability(true);
        return jobDetailFactory;
    }

    @Bean
    public SimpleTriggerFactoryBean trigger() {
        SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
        trigger.setJobDetail(jobDetail().getObject());
        trigger.setRepeatInterval(120000);
        trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
        return trigger;
    }

    @Bean
    public SchedulerFactoryBean scheduler() {
        SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
        schedulerFactory.setTriggers(trigger().getObject());
        return schedulerFactory;
    }
...
Рейтинг: 0 / 0
Spring MVC. Проблема с шедулером.
    #39953424
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего из-за путаницы при создании контекста. Ответьте на два вопроса: зачем ScheduledJob аннотация @Component если он создается через FactoryBean и зачем нужны FactoryBean'ы если используется создание контекста через код и @Bean?
...
Рейтинг: 0 / 0
Spring MVC. Проблема с шедулером.
    #39953425
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты прикалываешся так писать? Мало одной строки?

Код: java
1.
2.
logger.info("Sheduler method started");
logger.info("Job started");



Выведи хоть threadId.
...
Рейтинг: 0 / 0
Spring MVC. Проблема с шедулером.
    #39953526
pingwin177
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fixxer
Скорее всего из-за путаницы при создании контекста. Ответьте на два вопроса: зачем ScheduledJob аннотация @Component если он создается через FactoryBean и зачем нужны FactoryBean'ы если используется создание контекста через код и @Bean?


fixxer, за мысль спасибо, но до конца не понятно. Согласен, @Component лишний, кстати я его убрал, только толку ноль. Он скорее всего остался от эксперимента с аннотациями spring. Остальное вроде бы соответствует документации. Как его тогда правильно инициализировать?
...
Рейтинг: 0 / 0
Spring MVC. Проблема с шедулером.
    #39953528
pingwin177
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Ты прикалываешся так писать? Мало одной строки?

Код: java
1.
2.
logger.info("Sheduler method started");
logger.info("Job started");



Выведи хоть threadId.


Ну извини пожалуйста... Виноват, исправлюсь. Строка осталась поле выкусывания логики. Thread id вывел. Потоки разные.... Почему? Не понимаю... Откуда оно вообще берется?
Добавил аннотацию @DisallowConcurrentExecution - не помогло.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC. Проблема с шедулером.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]