博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elastic-Job定时任务
阅读量:6703 次
发布时间:2019-06-25

本文共 3617 字,大约阅读时间需要 12 分钟。

hot3.png

fc3dd179530125df40917cccdb740dbf5f5.jpg

用Elastic-Job可解决分布式重复执行问题

如果业务工程采用集群化的部署,可能会多次重复执行定时任务而导致系统的业务逻辑错误,并产生系统故障。

job.properties

simple.id=recommendJobsimple.class=com.tf56.mk.job.RecommendJob#每天23点执行simple.cron=0 0 23 * * ? *##0 0 23 * * ? *##0 0/1 * * * ?## 分片,会根据分片数配置多线程处理。在批量数据处理时,分片处理会提高效率。simple.shardingTotalCount=1## 分片参数配置,使得分片更易于理解,某些时候可易于作业处理。simple.shardingItemParameters=0=Beijing## 是否监控作业运行状态。在任务执行时间短、任务间隔时间短等情况下,不建议开启,多少会影响效率。simple.monitorExecution=true## 失效转移。在多服务器时比较有用。simple.failover=true## 作业描述simple.description=MK简单作业## 作业是否禁止启动。可用于部署作业时,先禁止启动,部署结束后统一启动。simple.disabled=false## 本地配置是否可覆盖注册中心配置。如果可覆盖,每次启动作业都以本地配置为准simple.overwrite=true## 作业监控端口。建议开启,方便dump作业信息,排查问题,特别是分布式作业情况下。simple.monitorPort=9888## 作业前置、后置处理监听器。有点像是拦截器的概念。listener.simple=com.tf56.mk.job.listener.SimpleListenersimple1.id=projectJobsimple1.class=com.tf56.mk.job.ProjectJob##0 0 1 1/1 * ?  每日1点执行##0 0/5 * * * ?  每5分钟执行simple1.cron=0 0/5 * * * ?

job.xml

reg.properites

serverLists=mt-zookeeper-vip:2181namespace=esjob-monkeyKingServicebaseSleepTimeMilliseconds=1000maxSleepTimeMilliseconds=3000maxRetries=3

 

package com.tf56.mk.job;import com.dangdang.ddframe.job.api.ShardingContext;import com.dangdang.ddframe.job.api.simple.SimpleJob;import com.tf56.mk.common.util.PropertiesUtil;import com.tf56.mk.dao.RequestRecommendDao;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import java.util.HashMap;import java.util.Map;@Componentpublic class RecommendJob implements SimpleJob {    private final Logger logger = LoggerFactory.getLogger(this.getClass());    @Autowired    RequestRecommendDao requestRecommendDao;    /**     *      * @param arg0     */    @Override    public void execute(ShardingContext arg0) {        logger.info("ES Job Doing--doRecommendJob");        Map map = new HashMap();        map.put("mkExpertRecommendJobTime",Long.parseLong(PropertiesUtil.getPropertieValue("mkExpertRecommendJobTime")));        map.put("mkExpertRecommendNum",Long.parseLong(PropertiesUtil.getPropertieValue("mkExpertRecommendNum")));        requestRecommendDao.doRecommendJob(map);    }}

 

package com.tf56.mk.job.listener;import com.dangdang.ddframe.job.executor.ShardingContexts;import com.dangdang.ddframe.job.lite.api.listener.ElasticJobListener;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class SimpleListener implements ElasticJobListener {    private static Logger logger = LoggerFactory.getLogger(SimpleListener.class);    public void beforeJobExecuted(final ShardingContexts shardingContexts) {        logger.info("beforeJobExecuted:" + shardingContexts.getJobName());    }    public void afterJobExecuted(final ShardingContexts shardingContexts) {        logger.info("afterJobExecuted:" + shardingContexts.getJobName());    }}

pom.xml

UTF-8
1.7
2.0.1
com.dangdang
elastic-job-lite-core
${elastic-job.version}
org.eclipse.jetty.orbit
javax.annotation
com.dangdang
elastic-job-lite-spring
${elastic-job.version}

JobConfig.java 引入xml配置

@Configuration@ImportResource(locations = {"classpath:spring/job.xml"})public class JobConfig {}

转载于:https://my.oschina.net/u/3277156/blog/1855917

你可能感兴趣的文章
字母和数字键的键码值(keyCode)
查看>>
Gradle之恋-Init插件
查看>>
获得包含中英文字符串的自然长度
查看>>
面试时,面试官到底在考察什么?
查看>>
微服务架构的设计模式
查看>>
.NET Core如何为项目提供高性能解决方案?
查看>>
跨平台移动应用开发迎来“大杀器”,Xamarin.Essentials正式版发布
查看>>
JavaOne 2016——首日亮点
查看>>
下一代微服务!Service Mesh 2018年度总结
查看>>
变量对象+作用域链+闭包
查看>>
Chrome将于5月底升级至第51版,届时大部分用户将不能使用HTTP/2
查看>>
B端大数据应用的架构实践与思考
查看>>
华泰证券:如何自研高效可靠的交易系统通信框架?
查看>>
蚂蚁数据分析平台的演进及数据分析方法的应用
查看>>
Mozilla正在SpiderMonkey中测试JavaScript并行计算
查看>>
Node.js 6.0支持93%的ES2015语法
查看>>
Elixir 1.2带来多项功能增强和性能提升
查看>>
慎用!BLEU评价NLP文本输出质量存在严重问题
查看>>
避免标准数据模型
查看>>
【js】async和await使用
查看>>