Ho un requisito per creare un task scheduler con 10 thread che dobbiamo attivare contemporaneamente e ogni thread tornerà con uno stato di completo o fallito. In base al risultato della discussione, effettueremo una chiamata db e recupereremo i dati da db. L'applicazione è già configurata con Spring Framework. Capisco che la primavera fornisca l'utilità di pianificazione, ma non è sicuro di come usarla, il principiante ha bisogno di aiuto. Che ne dici di ScheduledExecutorService di java, possiamo usarlo? Quale vantaggio otterremo l'uno sull'altro? Esiste un'alternativa migliore all'utilità di pianificazione di Spring e ScheduledExecutorService di Java?Spring Task Scheduler contro Java ScheduledExecutorService
risposta
Spring TaskExecutor
è in realtà identico all'interfaccia java Executor
. Dopo Spring 2.0 è stato introdotto TaskExecutor
per aggiungere l'astrazione allo Executor
di Java, in modo da nascondere i dettagli di implementazione tra le diverse versioni di Java SE e gli ambienti EE.
Come già l'ambiente Spring, consiglio vivamente di utilizzare la molla schedulers. In seguito, se sarà necessario, puoi fornire ad altri componenti di Spring un'astrazione per il pool di thread, ecc.
Inoltre ci sono alcune implementazioni predefinite di TaskExecutor, che è l'ideale, poiché non devi preoccuparti del dettagli e implementazione da soli.
Il modo più semplice è utilizzare i tag di attività forniti nella configurazione di primavera. Avviso lo spazio dei nomi 'compito' sotto
<?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
">
volta che hai fatto che è possibile utilizzare
<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>
ecc il vostro compito effettiva pianificata è un fagiolo con un metodo su di esso che viene chiamato. È possibile programmare su un ritardo fisso o su un cron ecc
si può anche dichiarare esecutori nella configurazione in questo modo:
<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>
È possibile utilizzare un esecutore di eseguire un pool di attività simultanee (iniettare quel fagiolo nel tuo fagiolo e guarda cosa fornisce).
- 1. Spring @Scheduler parallelo esecuzione
- 2. API C# per Task Scheduler 2.0
- 3. Java perdita di memoria webapp quando si utilizza ScheduledExecutorService
- 4. Come fermare un ScheduledExecutorService?
- 5. come rimuovere un'attività da ScheduledExecutorService?
- 6. Spring Scheduler si arresta in modo imprevisto
- 7. Task Scheduler Managed Wrapper non mostra tutte le attività
- 8. In che modo Task Scheduler termina un processo in esecuzione?
- 9. attendono Task.Factory.StartNew (() => contro Task.Start; attendere Task;
- 10. ScheduledExecutorService con ritardo variabile
- 11. Ricerca di Clarity su Java ScheduledExecutorService e FutureTask
- 12. Dropwizard ScheduledExecutorService
- 13. Java EE Scheduler non è chiamato
- 14. Come riprogrammare un'attività utilizzando ScheduledExecutorService?
- 15. Spring - @Primary non riesce contro @ComponentScan?
- 16. Dart ha uno scheduler?
- 17. ScheduledExecutorService e errore non rilevato
- 18. Come si attende che un'attività Task Scheduler termini in un file batch o C#?
- 19. utilizzando ScheduledExecutorService per avviare e arrestare il timer
- 20. Costruttori in Java contro C++?
- 21. Baffi scalati contro baffi Java
- 22. Primavera errore Shutdown Scheduler
- 23. ScheduledExecutorService start stop più volte
- 24. Reinitialize ritardo correzione in ScheduledExecutorService
- 25. Spring Data-JPA contro JPA: qual è la differenza?
- 26. Precisione della ScheduledExecutorService su OS normale/JVM
- 27. Spring 3.2 @Async task con tipo di ritorno del futuro
- 28. Task Rake Task
- 29. Quartz scheduler theadpool
- 30. Scheduler: immediati vs CurrentThread