package com.vip.saturn.it.job; import java.util.Date; import java.util.HashMap; import java.util.Map; import com.vip.saturn.job.AbstractSaturnJavaJob; import com.vip.saturn.job.SaturnJobExecutionContext; import com.vip.saturn.job.SaturnJobReturn; public class LongtimeJavaJob extends AbstractSaturnJavaJob { public static class JobStatus{ public int runningCount; public int sleepSeconds; public boolean running; public boolean finished; public boolean timeout; public boolean beforetimeout; public boolean killed; } public static Map<String,JobStatus> statusMap = new HashMap<String,JobStatus>(); @Override public SaturnJobReturn handleJavaJob(String jobName, Integer shardItem, String shardParam, SaturnJobExecutionContext shardingContext) { String key = jobName+"_"+shardItem; JobStatus status = statusMap.get(key); status.running = true; System.out.println(new Date() + " running:"+jobName+"; "+shardItem +";"+ shardParam+";finished:"+status.finished); try { Thread.sleep(status.sleepSeconds * 1000); status.runningCount++; status.finished = true; } catch (InterruptedException e) { status.finished = true; System.out.println("i am terminating.."); }finally{ status.finished = true; } return new SaturnJobReturn(); } @Override public void onTimeout(String jobName, Integer shardItem, String shardParam, SaturnJobExecutionContext shardingContext) { String key = jobName+"_"+shardItem; JobStatus status = statusMap.get(key); status.timeout = true; System.out.println(new Date() + "run timeout:"+jobName+"; "+shardItem +";"+ shardParam); } @Override public void beforeTimeout(String jobName, Integer shardItem, String shardParam, SaturnJobExecutionContext shardingContext) { String key = jobName+"_"+shardItem; JobStatus status = statusMap.get(key); status.beforetimeout = true; System.out.println(new Date() + "before timeout:"+jobName+"; "+shardItem +";"+ shardParam); } @Override public void postForceStop(String jobName, Integer shardItem, String shardParam, SaturnJobExecutionContext shardingContext) { String key = jobName+"_"+shardItem; JobStatus status = statusMap.get(key); status.killed = true; System.out.println(new Date() + "runing process killed:"+jobName+"; "+shardItem +";"+ shardParam); } }