Package com.firefly.schedule.core

Examples of com.firefly.schedule.core.Schedule


     */   
    @Override
    public void run() {
      try {
          log.debug("Start HeartMonitor!");
          Schedule schedule = config.getSchedule()// 当前调度器
            /* 发送心跳 */
            sendHeartbeat();
           
            /* 检查当前所有任务状态 */
            checkTaskClosed(schedule);
           
            // 调度器正在暂停
            if(Schedule.PAUSING == schedule.getStatus()){
              // 检测任务完成状态
              checkTaskFinish(schedule);
              return;
            }
           
View Full Code Here


    /**
     * 发送心跳
     * @throws SQLException 当数据库操作有异常则抛出此异常
     */
    private void sendHeartbeat() throws SQLException{
    Schedule schedule = config.getSchedule();
    Object[] params = { config.getHostAddress(), schedule.getStatus() , config.getScheduleName()};
    QueryHelper.update("UPDATE jd_ofc_schedule SET updatetime = CONVERT(varchar, getdate(), 120 ) , wsurl = ? , status = ? "
        + "WHERE schedulename = ?", params);
    DBManager.commit();
    }
View Full Code Here

     * @throws ParseException 当格式化日期时间有异常则抛出此异常
     */
    private void checkHeartbeat() throws SQLException, ParseException{
     
      boolean ready = true;            // 任务启动标志
      Schedule schedule = config.getSchedule()// 当前调度器对象
      StringBuilder aliveSchedule = new StringBuilder();
     
      /* 获取所有的调度器 */
      List<ScheduleInfo> scheduleList = QueryHelper.query(ScheduleInfo.class,
                "SELECT id,schedulename,seqno,registertime,updatetime,status " +
                      "FROM jd_ofc_schedule(NOLOCK) " +
                      "ORDER BY id", new Object[]{});
     
      if (scheduleList == null || scheduleList.size() == 0){
        log.error("The schedule heart error!");
        return;
      }
     
      /* 检测存活的调度器 */
      String curTime = TimerUtil.getDbTime();    // 数据库当前时间
        DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      List<ScheduleInfo> aliveList = new ArrayList<ScheduleInfo>();
    for (ScheduleInfo scheduleInfo : scheduleList) {
      // 如果时间差小于超时时间,则判断为该调度器正常
      long timeDiff = sdf.parse(curTime).getTime() - sdf.parse(scheduleInfo.getUpdatetime()).getTime();
      if (timeDiff < config.getHeartTimeout()) {
        aliveList.add(scheduleInfo);
        aliveSchedule.append(scheduleInfo.getId());
        aliveSchedule.append(";");
        if (Schedule.PAUSED != scheduleInfo.getStatus() && ready) {
          ready = false;
        }
      }

    }
        log.debug("aliveList size : {"+aliveList.size()
              +"} , start : {"+ready
              +"} , scheduleNum : {"+config.getScheduleNum()
              +"} , aliveSchedule = "+config.getAliveSchedule()
              +" , curAliveSchedule = "+aliveSchedule.toString());
     
    /* 如果存活调度器有变化,则暂停调度器任务处理 */
    if (!aliveSchedule.toString().equals(config.getAliveSchedule())
        && Schedule.RUNNING == schedule.getStatus()) {
      abortTask(schedule);
    }

    /* 如果调度器就绪,则重新分配任务 */
    if (ready) {
View Full Code Here

 
  @Test
  public void run(){
    Config config = new Config();
    config.setOpenHeart(true);
    Schedule schedule = new TestSchedule();
    schedule.setConfig(config);
    schedule.start();
    try {
      Thread.sleep(100000000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
View Full Code Here

TOP

Related Classes of com.firefly.schedule.core.Schedule

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.