您现在的位置是:首页>技术分享>spring-quartz 定时发送任务
spring-quartz 定时发送任务
发布时间:2017-12-08 编辑:小付 浏览(773) 评论(0)
spring-quartz.xml
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd "> <!-- 调度触发器 "0 0 12 * * ?" 每天中午12点触发 "0 15 10 ? * *" 每天上午10:15触发 "0 15 10 * * ?" 每天上午10:15触发 "0 15 10 * * ? *" 每天上午10:15触发 "0 15 10 * * ? 2005" 2005年的每天上午10:15触发 "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发 "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 "0 15 10 15 * ?" 每月15日上午10:15触发 "0 15 10 L * ?" 每月最后一日的上午10:15触发 "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发 --> <!-- FORP.SPRING_CONTEXT.getBean(AdomainService.class); --> <!-- 1。债券任务提醒 --> <bean id="bonJobEmail" class="cn.forp.pitaya.base.controller.email.timer.BonJobEmailTimer"> </bean> <!-- 2。 回墙任务提醒 --> <bean id="outWallEmail" class="cn.forp.pitaya.base.controller.email.timer.OutWallEmailTimer"> </bean> <!-- 3。其他邮件列表中的任务 提醒 --> <bean id="othEmailTask" class="cn.forp.pitaya.base.controller.email.timer.EmailTaskTimer"> </bean> <!-- 4。ad域同步 --> <bean id="adomainJob" class="cn.forp.pitaya.base.controller.AdmainJobTimer"></bean> <!-- 5。CRM域同步 --> <bean id="crmSyncJob" class="cn.forp.pitaya.base.controller.CrmJobTimer"></bean> <!-- 2任务详情 --> <!-- 2.1债券任务详情 --> <bean id="bonJobEmailDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="group" value="job_bonEmail" /> <property name="name" value="job_work_bonEmail" /> <!--false表示等上一个任务执行完后再开启新的任务 --> <property name="concurrent" value="false" /> <property name="targetObject"> <ref bean="bonJobEmail" /> </property> <property name="targetMethod"> <value>sendBonJobEmail</value> </property> </bean> <!-- 2.2 回墙邮件提醒 --> <bean id="outWallEmailDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="group" value="job_wall" /> <property name="name" value="job_work_wall" /> <!--false表示等上一个任务执行完后再开启新的任务 --> <property name="concurrent" value="false" /> <property name="targetObject"> <ref bean="outWallEmail" /> </property> <property name="targetMethod"> <value>sendOutWallEmail</value> </property> </bean> <!-- 2.3d域同步 任务详情--> <bean id="adJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="group" value="job_adomain" /> <property name="name" value="job_work_adomain" /> <!--false表示等上一个任务执行完后再开启新的任务 --> <property name="concurrent" value="false" /> <property name="targetObject"> <ref bean="adomainJob" /> </property> <property name="targetMethod"> <value>run</value> </property> </bean> <!--2.4 邮件任务提醒 --> <bean id="othEmailTaskDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="group" value="job_oth_email_wall" /> <property name="name" value="job_work_oth_email_wall" /> <!--false表示等上一个任务执行完后再开启新的任务 --> <property name="concurrent" value="false" /> <property name="targetObject"> <ref bean="othEmailTask" /> </property> <property name="targetMethod"> <value>sendEmailTask</value> </property> </bean> <!-- 2.5d域同步 任务详情--> <bean id="crmJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="group" value="job_crmJob" /> <property name="name" value="job_work_crmJob" /> <!--false表示等上一个任务执行完后再开启新的任务 --> <property name="concurrent" value="false" /> <property name="targetObject"> <ref bean="crmSyncJob" /> </property> <property name="targetMethod"> <value>run</value> </property> </bean> <bean id="crmJob5Detail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="group" value="job_crmJob5" /> <property name="name" value="job_work_crmJob5" /> <!--false表示等上一个任务执行完后再开启新的任务 --> <property name="concurrent" value="false" /> <property name="targetObject"> <ref bean="crmSyncJob" /> </property> <property name="targetMethod"> <value>run5</value> </property> </bean> <!-- 3调度时间 --> <!-- 3.1债券任务触发事件 --> <bean id="bonJobEmailTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="name" value="work_bonEmail_name" /> <property name="group" value="work_bonEmail" /> <!-- 指向我们的任务 --> <property name="jobDetail"> <ref bean="bonJobEmailDetail" /> </property> <property name="cronExpression"> <!-- 每天上午6点触发 --> <value>0 30 8 ? * *</value> </property> </bean> <!-- 3.2债券任务触发事件 --> <bean id="outWallEmailTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="name" value="work_wall_name" /> <property name="group" value="work_wall" /> <!-- 指向我们的任务 --> <property name="jobDetail"> <ref bean="outWallEmailDetail" /> </property> <property name="cronExpression"> <!-- 每天上午6点触发 --> <value>0 0 9 ? * *</value> </property> </bean> <!-- 3.3ad域更新 --> <bean id="adomainTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="name" value="work_adomain_name" /> <property name="group" value="work_adomain" /> <!-- 指向我们的任务 --> <property name="jobDetail"> <ref bean="adJobDetail" /> </property> <property name="cronExpression"> <value>0 45 8 ? * *</value> </property> </bean> <!-- 3.4 邮件列表发送任务 --> <bean id="othEmailTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="name" value="work_oth_email_task_name" /> <property name="group" value="work_oth_email_task" /> <!-- 指向我们的任务 --> <property name="jobDetail"> <ref bean="othEmailTaskDetail" /> </property> <property name="cronExpression"> <!-- 每天上午5点触发 --> <value>0 45 11 ? * *</value> </property> </bean> <!-- crm 每五分钟调度一次 --> <bean id="crmJob5Trigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="name" value="work_crmJob5_name" /> <property name="group" value="work_crmJob5" /> <!-- 指向我们的任务 --> <property name="jobDetail"> <ref bean="crmJob5Detail" /> </property> <!-- 每5分钟执行一次 --> <property name="cronExpression" ><value>0 0/5 * * * ?</value> </property> </bean> <!-- crm 每日调度一次 --> <bean id="crmJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="name" value="work_crmJob_name" /> <property name="group" value="work_crmJob" /> <!-- 指向我们的任务 --> <property name="jobDetail"> <ref bean="crmJobDetail" /> </property> <property name="cronExpression"> <!-- 每天上午6点触发 --> <value>0 30 4 ? * *</value> </property> </bean> <!-- 开启任务调动 --> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="bonJobEmailTrigger" /> <ref bean="outWallEmailTrigger" /> <ref bean="adomainTrigger" /> <ref bean="othEmailTaskTrigger" /> <ref bean="crmJobTrigger" /> <ref bean="crmJob5Trigger" /> </list> </property> </bean> </beans>
EmailTaskTimer.java
package cn.forp.pitaya.base.controller.email.timer; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import cn.forp.framework.core.FORP; import cn.forp.framework.platform.service.UserService; import cn.forp.framework.platform.vo.User; import cn.forp.pitaya.base.service.MailService; import cn.forp.pitaya.utils.Mail; public class EmailTaskTimer{ private static final Logger lg = LoggerFactory.getLogger(EmailTaskTimer.class); private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public EmailTaskTimer() { lg.info("邮件列表发送任务 初始化。。."); } public void sendEmailTask() { lg.debug("===================================="+ formatter.format(new Date())+"邮件发送任务提醒 Start..... =================================================="); if (FORP.SPRING_CONTEXT != null) { MailService mailService = FORP.SPRING_CONTEXT.getBean(MailService.class); UserService userService = FORP.SPRING_CONTEXT.getBean(UserService.class); User formUser = new User(); formUser.setId(-1L); formUser.setEmail("ppag790776c4f842@sohu.com"); List<Map<String,Object>> list = mailService.selEmailTasks(); for (Map<String,Object> map:list) { try { if (map.containsKey("F_VALUE_003")) { Long userId = Long.valueOf(map.get("F_VALUE_003") .toString()); if (userId!=null) { User user = userService.getLoad(userId); if (user!=null && StringUtils.isNotBlank (user.getEmail())) { String emailMessage = Mail.getEmailTask(user, map.get("F_VALUE_001").toString(), map.get("F_VALUE_004").toString()); Mail.sendEmails(formUser, userId.toString(), null, "未归档邮件提醒", emailMessage, false, null); } else { lg.error("用户ID:"+userId+" 未找到,或邮箱地址为空 不发送邮件!"); } } } } catch (Exception e) { lg.error("邮件发送提醒失败:"+e.getMessage()); } } } lg.debug("===================================="+formatter.format(new Date())+"邮件发送提醒 End.....=================================================="); } }
关键字词:spring,quartz,定时任务
上一篇:Oracle日期倍数 整除
下一篇:oracle 日期加月份