Bonjour,
je suis en train de développer une application standalone permettant l'envoi de mail journalier aux membres d'un site. J'utilise la librairie Quartz (1.5.2) sous Spring (2.5.4).
J'ai réussi pour le moment a exécuté une tâche principale s'exécutant toutes les 20min (phase de test) et dont la méthode executeInternal() envoie tous les mails. Je souhaiterais (et quartz d'après ce que j'ai compris le permet) exécuter une tâche pour chaque envoie de mail afin de récupérer les erreurs de chaque tâche (s'il en existe) et ainsi renvoyer le mail à la personne si une erreur a eu lieu.
Je reste bloquer sur le fait que je ne comprends pas comment exécuter n taches en fonction du nombre de membres?
Quelqu'un ayant travaillé sur Quartz ou en connaissant la configuration pourrait t-il m'aiguillé?
Merci,
Philippe
ApplicationContext.xml
Ma tache qui s'exécute
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger" /> </list> </property> </bean> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref local="SendAlertJob" /> </property> <!-- cronExpression toutes les 20min --> <property name="cronExpression" value="0 0/20 * * * ?" /> </bean> <bean id="SendAlertJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.alertmailmanager.jobTask.SendAlertJob" /> <property name="jobDataAsMap"> <map> <entry key="facade"><ref bean="facade"/></entry> </map> </property> </bean>
mon main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 package com.alertmailmanager.jobTask; import java.util.List; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; import com.alertmailmanager.businessfacade.inter.IBusinessAlertMailFacade; import com.common.model.IJob; import com.common.model.IJobAlertMail; import com.common.model.IUser; public class SendAlertJob extends QuartzJobBean { IBusinessAlertMailFacade facade; public void setFacade(IBusinessAlertMailFacade facade) { this.facade = facade; } protected void executeInternal(JobExecutionContext ctx) throws JobExecutionException { try { for (IJobAlertMail jobAlert : facade.getAllJobAlertsForThisDay()) { List<IJob> jobList = facade.getJobListForAnAlert(jobAlert); if (jobList.size() > 0) { facade.sendJobAlertMail(jobList, jobAlert); } } System.out.println("finish"); }catch (Exception e) { e.printStackTrace(); } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.alertmailmanager.main; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class Main { /** * @param args */ public static void main(String[] args) { ApplicationContext ctx = new FileSystemXmlApplicationContext( "applicationContext.xml"); } }
Partager