国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

spring-quartz普通任務(wù)與可傳參任務(wù)

2019-11-10 18:07:00
字體:
供稿:網(wǎng)友

轉(zhuǎn)自http://www.thinksaas.cn/topics/0/679/679979.html

兩者區(qū)別與作用:

普通任務(wù):

總調(diào)度(SchedulerFactoryBean)–> 定時調(diào)度器(CronTriggerFactoryBean) –> 調(diào)度明細(xì)自定義執(zhí)行方法bean(MethodInvokingJobDetailFactoryBean) –>調(diào)度bean(我們定義的job類)

可傳參任務(wù):

總調(diào)度(SchedulerFactoryBean)–> 定時調(diào)度器(CronTriggerFactoryBean) –> 調(diào)度明細(xì)bean(JobDetailFactoryBean)

如上是我們在配置調(diào)度器時的具體步驟及相互之間的依賴,區(qū)別主要在調(diào)度明細(xì)bean上,普通任務(wù)是(MethodInvokingJobDetailFactoryBean),而可傳參任務(wù)是(JobDetailFactoryBean):   1)普通任務(wù)可以自定義執(zhí)行方法,也就是說在其配置的調(diào)度bean(我們定義的job類)中我們可以自定義調(diào)度器最終執(zhí)行的方法,可以叫work1也可以叫work2,and so on。而且要記住的一點,必須是無入?yún)⒌姆椒ǎ。。。ㄗ隽艘粋€測試,測試目的是看通過此類型調(diào)度類型是否也能傳入?yún)?shù)所以定義了一個帶入?yún)⒌淖远x方法即public void work(JobExecutionContext jobExecutionContext),最中測試結(jié)果是sPRing quartz會報找不到work方法及No such method work(),其默認(rèn)執(zhí)行我們生命的work無入?yún)⒌姆椒ā?  2)可傳參任務(wù)必須繼承QuartzJobBean,重寫protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException方法,其中JobExecutionContext就是我們在定義調(diào)度器明細(xì)時傳入?yún)?shù)的上下文,我們可以通過JobExecutionContext取出傳入的map,調(diào)度任務(wù)最終執(zhí)行的就是executeInternal方法,使用該調(diào)度明細(xì)任務(wù)無法使用自定義方法。


普通任務(wù)

public class ImportCustomerScheduler { private Logger logger = LoggerFactory.getLogger(ImportCustomerScheduler.class); @Autowired private CustomerErpRelationManager customerErpRelationManager; public void execute() { doWork(); } private void doWork() { logger.info(" truncate customer_erp_relation begin " + JSON.toJSONString(new Date())); customerErpRelationManager.truncateCustomer(); logger.info(" truncate customer_erp_relation end " + JSON.toJSONString(new Date())); logger.info(" import customer_org from erp " + JSON.toJSONString(new Date())); try { customerErpRelationManager.importCustomer(); } catch (Exception e) { logger.error("doWork", e); } }}<bean id="importCustomerScheduler" class="com.yimayhd.carpool.schedule.ImportCustomerScheduler"/><bean id="importCustomerSchedulerBean" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="importCustomerScheduler"/> <property name="targetMethod" value="execute"/> <property name="concurrent" value="false"/></bean> <bean id="importCustomerSchedulerCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="importCustomerSchedulerBean"/> <property name="cronExpression" value="${scheduler.importCustomer}"/> </bean><bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="importCustomerSchedulerCronTrigger"/> </list> </property></bean>

可傳參任務(wù)

public class ImportTourGroupsScheduler extends QuartzJobBean { private Logger logger = LoggerFactory.getLogger(ImportTourGroupsScheduler.class); @Autowired private TourGroupManager tourGroupManager; @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { logger.info(" import tourGroups from erp " + JSON.toJSONString(new Date())); try { String bizIds = (String) context.getJobDetail().getJobDataMap().get("bizIds"); logger.info("tourGroupManager.importTourGroup========== start============="); tourGroupManager.retryImportGroupDataWithExcep(bizIds); logger.info("tourGroupManager.importTourGroup========== end============="); } catch (Exception e) { logger.error("import tourGroups from erp to carcar failed! doWork", e); } }}<bean id="importTourGroupsScheduler" class="com.yimayhd.carpool.schedule.ImportTourGroupsScheduler" /><bean name="context" class="org.quartz.JobDataMap"> <constructor-arg> <map> <entry key="bizIds" value="1"> </entry> </map> </constructor-arg> </bean> <bean id="importTourGroupsSchedulerBean" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="com.yimayhd.carpool.schedule.ImportTourGroupsScheduler" /> <property name="jobDataMap"> <ref bean="context"></ref> </property> </bean><bean id="importTourGroupsSchedulerCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="importTourGroupsSchedulerBean"/> <property name="jobDataMap"> <ref bean="context"></ref> </property> <property name="cronExpression" value="${scheduler.importTourGroups}"/></bean><bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="importTourGroupsSchedulerCronTrigger"/> </list> </property></bean>
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 赤峰市| 静宁县| 甘洛县| 托克托县| 缙云县| 兴安县| 唐海县| 文山县| 西和县| 沐川县| 弥勒县| 平遥县| 叶城县| 云和县| 靖安县| 哈密市| 兴安盟| 麦盖提县| 调兵山市| 上高县| 鄂伦春自治旗| 客服| 新乐市| 林周县| 车致| 琼结县| 象州县| 东海县| 邯郸市| 阿拉尔市| 德化县| 石屏县| 左贡县| 正安县| 通江县| 宝山区| 宜宾市| 克东县| 汽车| 汤阴县| 石景山区|