elastic-job的简单使用

本文介绍了在系统中,为了实现脱机向联机每五秒发送心跳的需求,从原先使用quartz遇到的问题出发,转向采用elastic-job进行分布式任务管理。通过创建继承SimpleJob的job,并配置spring以五秒间隔执行,详细展示了elastic-job的简单配置和使用方法,包括Zookeeper的地址设置和分片数量的调整。
摘要由CSDN通过智能技术生成

先说需求,一个系统,脱机和联机,脱机要向联机每隔五秒发送心跳,由于脱机时部署两台服务器,联机这边数据库看到的数据就是每隔五秒会有两条数据,原本的job是用quartz来实现的,本想着加锁就可以,事实证明我想的太简单了

看了一下elastic-job是可以实现分布式管理的,它可以有多种方式,这里我写我用到的最方便的——spring配置

首先是你要执行的job继承一下SimpleJob,代码如下

public class SendHeartMonitorJob  implements SimpleJob {
 public void handle() throws Exception {

        String logId = UUID.randomUUID().toString();
        logger.info("logId:{},============上传监控信息开始============", logId);

        /**
         * 单机版和脱机版 执行发送监控心跳数据Job
         */
        ServiceModelEnums currentModel = sysConfiglManager.getServiceModel();
        if (ServiceModelEnums.OFFLINE == currentModel || ServiceModelEnums.SINGLE == currentModel) {
            Result result = monitorRecordService.sendHeartMonitor(logId);

            if (!result.isSuccess()) {
                logger.warn("logId:{},执行发送监控心跳数据Job异常,异常信息:{}", logId, result.getMsg());
            } else {
                logger.info("logId:{},执行发送监控心跳数据Job成功", logId);
            }
        } else {
            logger.info("logId:{},当前模式不需要执行发送监控心跳数据Job", logId);
        }

        logger.info("logId:{},============上传监控信息结束============", logId);
    }
    @Override
    public void execute(ShardingContext shardingContext) {
        try {
            handle();
        } catch (Exception e) {
            logger.warn("logId:{},执行发送监控心跳数据Job异常,异常信息:{}",             e.getMessage());
        }
        //System.out.println("发送心跳"+ DateUtil.now(DateUtil.DEFAULT_FORMAT));
         logger.warn("logId:{},发送心跳成功。。。。。。。。。"+ DateUtil.now(DateUtil.DEFAULT_FORMAT));
    }
}

 这是要发送心跳的job,下面是配置,让他五秒一次

job和spring的集成

<!--配置作业注册中心 -->
<reg:zookeeper id="regCenter" server-lists="${config.dubbo.zk.host}" namespace="xx-job"
				   base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000" max-retries="3"  />
<!-- 配置发送心跳的job-->
<job:simple id="sendHeartMonitorJob" class="com.yuantu.unified.system.job.SendHeartMonitorJob" registry-center-ref="regCenter"
				sharding-total-count="1" cron="*/5 * * * * ? *" overwrite="true" /> <!--每五秒执行一次-->

 这个配置好后其实就可以运行了,但是因为我的zk是在配置文件写的,所以server-lists这个地方用了通配符表示zk的地址"${config.dubbo.zk.host}"   sharding-total-count指的是你分片的个数,根据你的需求改

以上

最后

白茶清欢无别事  我在等风也等你

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值