Ich habe eine Anforderung zum Erstellen eines Task-Scheduler mit 10 Threads, die wir gleichzeitig auslösen müssen und jeder Thread wird mit einem Status der vollständigen oder fehlgeschlagen. Basierend auf dem Ergebnis des Threads werden wir einen DB-Aufruf machen und die Daten von db abrufen. Die Anwendung ist bereits mit Spring Framework konfiguriert. Ich verstehe, dass Frühling Aufgabenplaner zur Verfügung stellt, aber nicht sicher, wie man es benutzt, Frühlingsneuling braucht Hilfe. Wie wäre es mit dem ScheduledExecutorService von java, können wir das verwenden? Welchen Vorteil werden wir über den anderen bekommen? Gibt es eine bessere Alternative zu Spring Task Scheduler und Java ScheduledExecutorService?Spring Task Scheduler vs Java ScheduledExecutorService
Antwort
Feder TaskExecutor
ist eigentlich identisch mit Java Executor
Schnittstelle. Nach Spring 2.0 TaskExecutor
wurde eingeführt, um Abstraktion zu den Java Executor
hinzuzufügen, so dass es Implementierungsdetails zwischen Java SE verschiedenen Versionen und EE-Umgebungen verbergen wird.
Da Sie bereits Frühjahr Umgebung haben, würde ich dringend empfehlen, Frühling schedulers zu verwenden. Später, wenn es nötig sein wird, können Sie anderen Spring-Komponenten eine Abstraktion für das Thread-Pooling usw. geben.
Auch gibt es einige vorgefertigte Implementierungen von TaskExecutor, was ideal ist, da Sie sich nicht um die Details und Umsetzung von Ihnen selbst.
Die einfachste Möglichkeit besteht darin, die mitgelieferten Task-Tags in der Spring-Konfiguration zu verwenden. Beachten Sie die ‚Aufgabe‘ Namespace unter
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:ctx="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
">
sobald Sie getan haben, dass Sie
<task:scheduler id="taskScheduler" pool-size="4"/>
<task:scheduled-tasks scheduler="taskScheduler">
<task:scheduled ref="someBean" method="someMethod" fixed-rate="21600000" initial-delay="60000"/>
</task:scheduled-tasks>
usw. Ihre tatsächliche geplante Aufgabe verwenden können, ist eine Bohne mit einem Verfahren auf, dass es aufgerufen wird. Sie können es auf einer festen Verzögerung planen oder auf einem Cron usw.
Sie können auch Vollstrecker in der Config wie folgt erklären:
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<description>A task pool for general use</description>
<property name="corePoolSize" value="150" />
<property name="maxPoolSize" value="200" />
<property name="queueCapacity" value="10" />
<property name="keepAliveSeconds" value="0"/>
<property name="waitForTasksToCompleteOnShutdown" value="false"/>
</bean>
Sie einen Testamentsvollstrecker können einen Pool von Aufgaben gleichzeitig auszuführen (injizieren diese Bohne in deine Bohne und sieh dir an, was sie bietet).
- 1. Java Webapp Speicherleck, wenn ScheduledExecutorService
- 2. ScheduledExecutorService vs Timer vs Handler
- 3. Windows Task Scheduler C#
- 4. Clarity auf Java ScheduledExecutorService und FutureTask
- 5. Laravel Task Scheduler Fehler appendOutputTo
- 6. Windows Task Scheduler Ereignis-ID
- 7. asp.net Skript in Task-Scheduler
- 8. Task Scheduler Anwendung und Fokus
- 9. Quartz vs Java EE 7 Scheduler
- 10. Spring Scheduler stoppt unerwartet
- 11. RxJava - Scheduler vs ExecutorService?
- 12. Windows Task Scheduler: Task beendet wegen Timeout erreicht Fehler
- 13. Ruby-Analogon von Java ScheduledExecutorService
- 14. Task-Scheduler in Apache Felix laufen?
- 15. ExtBase: kann Kindobjekt in Scheduler Task
- 16. Beenden der TBB-Anwendung (Task-Scheduler)
- 17. Windows Task Scheduler - Nur im Zeitfenster laufen
- 18. Windows Task Scheduler und Python Logging Modul
- 19. win Task-Scheduler nicht eine exe
- 20. Spring vs Java EE 7
- 21. Spring Task: geplante Aufgaben Taskplaner Poolgröße
- 22. Bat-Datei wird manuell ausgeführt, nicht mit Task-Scheduler abgeschlossen
- 23. Warum wartet der Spring Task Scheduler auf die Beendigung der vorherigen Aufgabe?
- 24. ScheduledExecutorService mit variabler Verzögerung
- 25. Python3 UnicodeEncodeError bei Ausführung über Synology Task Scheduler
- 26. Spring Sicherheit XML Config Vs Java Config
- 27. Wie kann ich einen ScheduledExecutorService stoppen?
- 28. Dropwizard ScheduledExecutorService
- 29. ScheduledExecutorService feuert nur einmal
- 30. Wie man eine Aufgabe von ScheduledExecutorService entfernt?