2017-10-31 4 views
0

Ich mache ein Spring Boot-Projekt. Hier ist Hauptverfahren und eine Controller-MethodeStarten Sie einen neuen Zeitplan Job durch Rest Anruf in Spring Boot

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

} 

Controller:

@RestController 
public class Controller { 

    @Autowired 
    private SampleTask m_sampletask; 

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

} 

Und eine Sample-Klasse

@Component 
public class SampleTask { 

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

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

Was hier das Problem ist der Rest Anruf "/ Start" das machen sollte SampleTask work() verwendet einen Zeitplanjob mit dem angegebenen Cron-Ausdruck, wenn ich ihn vom Rest-Endpunkt "/ start" aus anrufe. Ich soll auch in der Lage es mit einem anderen Rest Endpunkt sowie stoppt sie zur Laufzeit konfigurieren ..

Antwort

0
  1. Sie können Verwendung Kombination von @EnableScheduling Annotation und @Scheduled (cron = 0 0/1 * * * machen?) zum Erstellen eines Schedulers im Spring-Boot. Fügen Sie @EnableScheduling beim Starten der App-Klasse und @Scheduled der Methode hinzu, die Sie mit cron ausführen möchten.

PFB der nützliche Link.

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

  1. Sie unter Option versuchen können
    @Autowired  
    TaskScheduler taskScheduler; 
    ScheduledFuture<?> scheduledFuture; 
    @RequestMapping(value = "start", method = RequestMethod.GET) 
    public void start() throws Exception { 
        scheduledFuture = taskScheduler.scheduleAtFixedRate(m_sampletask.work(), FIXED_RATE); 
    } 
    
+0

Hallo Sahil .. Wie Sie alle Argumente an die aufrufende Methode übergeben kann. .. Ich machte einige Änderungen in SampleTask und machte es lauffähig, um mit Ihrem Code kompatibel zu machen.

@Component public class SampleTask implements Runnable{ \t String cron_expression="0 0/1 * * * ?"; \t \t @Override \t public void run() { \t \t System.out.println("Hello"); \t \t \t } }
Nawaz

+0

Ich habe die Parameter übergeben .. Danke – Nawaz