Spring Boot Event Timerhttps://www.springboot.ch/getrandomnumber?&atomFri, 29 Mar 2024 13:11:39 +0000stack.ch
https://stack.ch/
e0c8e70f-edcd-11ee-8c11-005056bb85fbSimtech AG - Blog - Spring Boot Blogs - Spring Boot Event Timer
https://www.springboot.ch/getrandomnumber
e0c8e815-edcd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 13:11:39 +0000Spring Boot Event Timer
https://www.springboot.ch/getrandomnumber
e0c8e946-edcd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 13:11:39 +0000
https://www.springboot.ch/getrandomnumber
e0c8ea60-edcd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 13:11:39 +0000In der Praxis werden je nach Anwendungsfall Arbeiten in synchrone und asynchrone Aufgaben unterteilt. Als Beispiel dient uns z.B. ein UI Formular, welches mit jedem erfolgreichen Request ein PDF Dokument zum Zweck der Nachverfolgbarkeit zu erstellen ist. Dieses PDF Dokument wird asynchron erstellt und damit vom synchronen Request entkoppelt.Die asynchrone Aufgabe wird z.B. über eine Datenbank Tabelle (e.g. «events») verwaltet. Der Scheduled Event Timer liest im Intervall nach gespeicherten Events in der Datenbank. Jedes Event wird je nach Typ via Application Event Publisher synchron ausgelöst.
https://www.springboot.ch/getrandomnumber
e0c8f0e0-edcd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 13:11:39 +0000Das folgende Listing zeigt die Klasse Event Timer mit 3 statischen Member Klassen EventOne, EventTwo, EventThree:package ch.std.event.timer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class EventTimer {
Logger logger = LoggerFactory.getLogger(EventTimer.class);
private ApplicationEventPublisher applicationEventPublisher;
public EventTimer(ApplicationEventPublisher applicationEventPublisher) {
this.applicationEventPublisher = applicationEventPublisher;
}
@Scheduled(initialDelay = 5000, fixedRate = 2500)
public void runTimer() {
int randomNumber = this.getRandomNumber(1, 4);
switch (randomNumber) {
case 1:
logger.info("before publishEvent One");
this.applicationEventPublisher.publishEvent(new EventOne());
logger.info("after publishEvent One");
break;
case 2:
logger.info("before publishEvent Two");
this.applicationEventPublisher.publishEvent(new EventTwo());
logger.info("after publishEvent Two");
break;
case 3:
logger.info("before publishEvent Three");
this.applicationEventPublisher.publishEvent(new EventThree());
logger.info("after publishEvent Three");
break;
default:
break;
}
}
private int getRandomNumber(int min, int max) {
return (int) ((Math.random() * (max - min)) + min);
}
@Component
public static class EventOne {
Logger logger = LoggerFactory.getLogger(EventOne.class);
@EventListener
public void runEvent(EventOne eventOne) {
logger.info("runEvent()");
}
}
@Component
public static class EventTwo {
Logger logger = LoggerFactory.getLogger(EventTwo.class);
@EventListener
public void runEvent(EventTwo eventTwo) {
logger.info("runEvent()");
}
}
@Component
public static class EventThree {
Logger logger = LoggerFactory.getLogger(EventThree.class);
@EventListener
public void runEvent(EventThree eventThree) {
logger.info("runEvent()");
}
}
}Damit das Scheduling funktioniert muss solche via Application Klasse enabled werden:package ch.std.event.timer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class SpringbootEventTimerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootEventTimerApplication.class, args);
}
}Mit dem erfolgreichen Start der Anwendung wird der Event Timer aktiv:In der Praxis würde der Random Ansatz durch die Datenbank Query ersetzt.
https://www.springboot.ch/getrandomnumber
e0c8fc49-edcd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 13:11:39 +0000Das gesamte Beispiel finden Sie unter dem Link springbooteventtimer.zip.
https://www.springboot.ch/getrandomnumber
e0c9007e-edcd-11ee-8c11-005056bb85fbFri, 29 Mar 2024 13:11:39 +0000War dieser Blog für Sie wertvoll. Wir danken für jede Anregung und FeedbackÜber uns
https://www.springboot.ch/about
Fri, 29 Mar 2024 13:11:39 +0000e0c902e7-edcd-11ee-8c11-005056bb85fbAktuell
https://www.springboot.ch/
Fri, 29 Mar 2024 13:11:39 +0000e0c9039e-edcd-11ee-8c11-005056bb85fbAGB
https://www.springboot.ch/agb
Fri, 29 Mar 2024 13:11:39 +0000e0c90437-edcd-11ee-8c11-005056bb85fbBildungswege
https://www.springboot.ch/bildungswege
Fri, 29 Mar 2024 13:11:39 +0000e0c904d9-edcd-11ee-8c11-005056bb85fbBlog
https://www.springboot.ch/blog
Fri, 29 Mar 2024 13:11:39 +0000e0c90584-edcd-11ee-8c11-005056bb85fbRufen Sie mich an
https://www.springboot.ch/callus
Fri, 29 Mar 2024 13:11:39 +0000e0c90623-edcd-11ee-8c11-005056bb85fbCharts
https://www.springboot.ch/charts
Fri, 29 Mar 2024 13:11:39 +0000e0c906c1-edcd-11ee-8c11-005056bb85fbConsulting
https://www.springboot.ch/consulting
Fri, 29 Mar 2024 13:11:39 +0000e0c90770-edcd-11ee-8c11-005056bb85fbKontakt
https://www.springboot.ch/contact
Fri, 29 Mar 2024 13:11:39 +0000e0c90861-edcd-11ee-8c11-005056bb85fbAusbildung/Kurse
https://www.springboot.ch/education
Fri, 29 Mar 2024 13:11:39 +0000e0c908fe-edcd-11ee-8c11-005056bb85fbSoftware Engineering
https://www.springboot.ch/engineering
Fri, 29 Mar 2024 13:11:39 +0000e0c9099d-edcd-11ee-8c11-005056bb85fbFreelancer
https://www.springboot.ch/freelancer
Fri, 29 Mar 2024 13:11:39 +0000e0c90a40-edcd-11ee-8c11-005056bb85fbImpressum
https://www.springboot.ch/impressum
Fri, 29 Mar 2024 13:11:39 +0000e0c90ae0-edcd-11ee-8c11-005056bb85fbKursleiter
https://www.springboot.ch/kursleiter
Fri, 29 Mar 2024 13:11:39 +0000e0c90b77-edcd-11ee-8c11-005056bb85fbNetzwerk
https://www.springboot.ch/network
Fri, 29 Mar 2024 13:11:39 +0000e0c90c15-edcd-11ee-8c11-005056bb85fbReferenzen
https://www.springboot.ch/references
Fri, 29 Mar 2024 13:11:39 +0000e0c90cb9-edcd-11ee-8c11-005056bb85fbSitemap
https://www.springboot.ch/sitemap
Fri, 29 Mar 2024 13:11:39 +0000e0c90d5b-edcd-11ee-8c11-005056bb85fbTools
https://www.springboot.ch/tools
Fri, 29 Mar 2024 13:11:39 +0000e0c90df5-edcd-11ee-8c11-005056bb85fbVision
https://www.springboot.ch/vision
Fri, 29 Mar 2024 13:11:39 +0000e0c90e94-edcd-11ee-8c11-005056bb85fb