Запустите новое задание по расписанию с помощью вызова отдыха в Spring Boot

Я делаю проект весенней загрузки. Вот основной метод и метод контроллера

@SpringBootApplication
@ComponentScan(basePackages="nokia.quartz")
@EnableScheduling
public class App 
{
    public static void main( String[] args )
    {
        ConfigurableApplicationContext context =SpringApplication.run(App.class, args);     
    }

}

Контроллер:

@RestController
public class Controller {

    @Autowired
    private SampleTask m_sampletask;

    @RequestMapping(value = "start", method = RequestMethod.GET)
    public void start() throws Exception {              
        m_sampletask.work();
    }

}

И пример класса

@Component
public class SampleTask {

    String cron_expression="0 0/1 * * * ?";

    public void work() {
        System.out.println("");
    }
}

Проблема здесь в том, что оставшийся вызов «/ start» должен сделать метод работы SampleTask () запланированным заданием с заданным выражением cron, когда я вызываю его из конечной точки покоя «/ start». Также я должен иметь возможность настроить его во время выполнения с другой конечной точкой отдыха, а также остановить его.


person Community    schedule 31.10.2017    source источник


Ответы (1)


  1. Вы можете использовать комбинацию аннотаций @EnableScheduling и @Scheduled(cron= 0 0/1 * * * ?) для создания планировщика в Spring boot. Пожалуйста, добавьте @EnableScheduling при запуске класса приложения и @Scheduled к методу, который вы хотите запустить с помощью cron.

ПФБ полезная ссылка.

https://spring.io/guides/gs/scheduling-tasks/

  1. Вы можете попробовать ниже вариант
    @Autowired     
    TaskScheduler taskScheduler;
    ScheduledFuture<?> scheduledFuture;
    @RequestMapping(value = "start", method = RequestMethod.GET)
    public void start() throws Exception { 
      scheduledFuture = taskScheduler.scheduleAtFixedRate(m_sampletask.work(), FIXED_RATE);
     }
    

Работающий код Наваза:

@Component 
public class SampleTask implements Runnable { 
    String cron_expression="0 0/1 * * * ?"; 
    @Override public void run() { System.out.println("Hello"); } 
}
person Sahil    schedule 31.10.2017
comment
Привет, Сахил. Как передать какие-либо аргументы вызывающему методу... Я внес некоторые изменения в SampleTask и сделал его работоспособным, чтобы сделать его совместимым с вашим кодом.. ‹pre›‹code›@Component public class SampleTask реализует Runnable{ String cron_expression=0 0/1 * * * ?; @Override public void run() { System.out.println(Hello); } }‹/код›‹/пре› - person ; 31.10.2017
comment
Я передал параметры .. Спасибо - person ; 31.10.2017