Мне нужно создать модуль онлайн-экзамена, который будет обеспечивать 10-минутную продолжительность для завершения экзамена. Для реализации части таймера я думал использовать пакетный планировщик Spring. См. Ниже конфигурационный файл:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task" xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.3.xsd
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.3.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

<context:component-scan base-package="mypackage" />

<bean id="timerService" class="mypackage.TimerService" />


<task:scheduler id="timerScheduler" pool-size="10" />

  <task:scheduled-tasks scheduler="timerScheduler">
     <task:scheduled ref="timerService" method="displayTimer"
         fixed-rate="1000" />
  </task:scheduled-tasks>
</beans>

Во время вызова я вызываю из основного метода:

ClassPathXmlApplicationContext context = new 
ClassPathXmlApplicationContext("spring/applicationContext.xml");

Все в порядке, за исключением того, что таймер будет запущен, как только контейнер будет загружен. Но моя цель - запустить планировщик, как только пользователь начнет экзамен [например: после вызова метода / нажатия кнопки], а не в приложении запуск.

Может ли кто-нибудь дать какой-либо ключ к конфигурации для реализации такого сценария. Я знаю об атрибуте trigger, но обычно он работает с выражением cron, и в моем случае триггер не будет основываться на времени, а на событии. Итак, я не могу зайти через cron.

Может ли кто-нибудь предложить подходящее решение для этого? только то, как вызвать планировщик на основе определенного отдыха вызова метода, я буду реализовывать сам.

0
Sumit Ghosh 27 Ноя 2018 в 11:50

1 ответ

Лучший ответ

Нет такой вещи Spring batch scheduler, вы имеете в виду планирование задач Spring Framework.

Планирование несовместимо с вашим требованием «например: после вызова метода / нажатия кнопки». Планирование подразумевает предварительное знание расписания, но в вашем случае вы не знаете заранее, когда пользователь нажмет кнопку. На самом деле вам нужно запустить таймер обратного отсчета при действие пользователя.

1
Mahmoud Ben Hassine 27 Ноя 2018 в 11:34