123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 |
- //package com.xxl.job.admin.core.schedule;
- //
- //import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
- //import com.xxl.job.admin.core.jobbean.RemoteHttpJobBean;
- //import com.xxl.job.admin.core.model.XxlJobInfo;
- //import com.xxl.job.admin.core.thread.JobFailMonitorHelper;
- //import com.xxl.job.admin.core.thread.JobRegistryMonitorHelper;
- //import com.xxl.job.admin.core.thread.JobTriggerPoolHelper;
- //import com.xxl.job.admin.core.util.I18nUtil;
- //import com.xxl.job.core.biz.AdminBiz;
- //import com.xxl.job.core.biz.ExecutorBiz;
- //import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
- //import com.xxl.rpc.remoting.invoker.XxlRpcInvokerFactory;
- //import com.xxl.rpc.remoting.invoker.call.CallType;
- //import com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean;
- //import com.xxl.rpc.remoting.invoker.route.LoadBalance;
- //import com.xxl.rpc.remoting.net.NetEnum;
- //import com.xxl.rpc.remoting.net.impl.servlet.server.ServletServerHandler;
- //import com.xxl.rpc.remoting.provider.XxlRpcProviderFactory;
- //import com.xxl.rpc.serialize.Serializer;
- //import org.quartz.*;
- //import org.quartz.Trigger.TriggerState;
- //import org.quartz.impl.triggers.CronTriggerImpl;
- //import org.slf4j.Logger;
- //import org.slf4j.LoggerFactory;
- //import org.springframework.util.Assert;
- //
- //import javax.servlet.ServletException;
- //import javax.servlet.http.HttpServletRequest;
- //import javax.servlet.http.HttpServletResponse;
- //import java.io.IOException;
- //import java.util.Date;
- //import java.util.concurrent.ConcurrentHashMap;
- //
- ///**
- // * base quartz scheduler util
- // * @author xuxueli 2015-12-19 16:13:53
- // */
- //public final class XxlJobDynamicScheduler {
- // private static final Logger logger = LoggerFactory.getLogger(XxlJobDynamicScheduler_old.class);
- //
- // // ---------------------- param ----------------------
- //
- // // scheduler
- // private static Scheduler scheduler;
- // public void setScheduler(Scheduler scheduler) {
- // XxlJobDynamicScheduler_old.scheduler = scheduler;
- // }
- //
- //
- // // ---------------------- init + destroy ----------------------
- // public void start() throws Exception {
- // // valid
- // Assert.notNull(scheduler, "quartz scheduler is null");
- //
- // // init i18n
- // initI18n();
- //
- // // admin registry monitor run
- // JobRegistryMonitorHelper.getInstance().start();
- //
- // // admin monitor run
- // JobFailMonitorHelper.getInstance().start();
- //
- // // admin-server
- // initRpcProvider();
- //
- // logger.info(">>>>>>>>> init xxl-job admin success.");
- // }
- //
- //
- // public void destroy() throws Exception {
- // // admin trigger pool stop
- // JobTriggerPoolHelper.toStop();
- //
- // // admin registry stop
- // JobRegistryMonitorHelper.getInstance().toStop();
- //
- // // admin monitor stop
- // JobFailMonitorHelper.getInstance().toStop();
- //
- // // admin-server
- // stopRpcProvider();
- // }
- //
- //
- // // ---------------------- I18n ----------------------
- //
- // private void initI18n(){
- // for (ExecutorBlockStrategyEnum item:ExecutorBlockStrategyEnum.values()) {
- // item.setTitle(I18nUtil.getString("jobconf_block_".concat(item.name())));
- // }
- // }
- //
- //
- // // ---------------------- admin rpc provider (no server version) ----------------------
- // private static ServletServerHandler servletServerHandler;
- // private void initRpcProvider(){
- // // init
- // XxlRpcProviderFactory xxlRpcProviderFactory = new XxlRpcProviderFactory();
- // xxlRpcProviderFactory.initConfig(
- // NetEnum.NETTY_HTTP,
- // Serializer.SerializeEnum.HESSIAN.getSerializer(),
- // null,
- // 0,
- // XxlJobAdminConfig.getAdminConfig().getAccessToken(),
- // null,
- // null);
- //
- // // add services
- // xxlRpcProviderFactory.addService(AdminBiz.class.getName(), null, XxlJobAdminConfig.getAdminConfig().getAdminBiz());
- //
- // // servlet handler
- // servletServerHandler = new ServletServerHandler(xxlRpcProviderFactory);
- // }
- // private void stopRpcProvider() throws Exception {
- // XxlRpcInvokerFactory.getInstance().stop();
- // }
- // public static void invokeAdminService(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
- // servletServerHandler.handle(null, request, response);
- // }
- //
- //
- // // ---------------------- executor-client ----------------------
- // private static ConcurrentHashMap<String, ExecutorBiz> executorBizRepository = new ConcurrentHashMap<String, ExecutorBiz>();
- // public static ExecutorBiz getExecutorBiz(String address) throws Exception {
- // // valid
- // if (address==null || address.trim().length()==0) {
- // return null;
- // }
- //
- // // load-cache
- // address = address.trim();
- // ExecutorBiz executorBiz = executorBizRepository.get(address);
- // if (executorBiz != null) {
- // return executorBiz;
- // }
- //
- // // set-cache
- // executorBiz = (ExecutorBiz) new XxlRpcReferenceBean(
- // NetEnum.NETTY_HTTP,
- // Serializer.SerializeEnum.HESSIAN.getSerializer(),
- // CallType.SYNC,
- // LoadBalance.ROUND,
- // ExecutorBiz.class,
- // null,
- // 5000,
- // address,
- // XxlJobAdminConfig.getAdminConfig().getAccessToken(),
- // null,
- // null).getObject();
- //
- // executorBizRepository.put(address, executorBiz);
- // return executorBiz;
- // }
- //
- //
- // // ---------------------- schedule util ----------------------
- //
- // /**
- // * fill job info
- // *
- // * @param jobInfo
- // */
- // public static void fillJobInfo(XxlJobInfo jobInfo) {
- //
- // String name = String.valueOf(jobInfo.getId());
- //
- // // trigger key
- // TriggerKey triggerKey = TriggerKey.triggerKey(name);
- // try {
- //
- // // trigger cron
- // Trigger trigger = scheduler.getTrigger(triggerKey);
- // if (trigger!=null && trigger instanceof CronTriggerImpl) {
- // String cronExpression = ((CronTriggerImpl) trigger).getCronExpression();
- // jobInfo.setJobCron(cronExpression);
- // }
- //
- // // trigger state
- // TriggerState triggerState = scheduler.getTriggerState(triggerKey);
- // if (triggerState!=null) {
- // jobInfo.setJobStatus(triggerState.name());
- // }
- //
- // //JobKey jobKey = new JobKey(jobInfo.getJobName(), String.valueOf(jobInfo.getJobGroup()));
- // //JobDetail jobDetail = scheduler.getJobDetail(jobKey);
- // //String jobClass = jobDetail.getJobClass().getName();
- //
- // } catch (SchedulerException e) {
- // logger.error(e.getMessage(), e);
- // }
- // }
- //
- //
- // /**
- // * add trigger + job
- // *
- // * @param jobName
- // * @param cronExpression
- // * @return
- // * @throws SchedulerException
- // */
- // public static boolean addJob(String jobName, String cronExpression) throws SchedulerException {
- // // 1、job key
- // TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
- // JobKey jobKey = new JobKey(jobName);
- //
- // // 2、valid
- // if (scheduler.checkExists(triggerKey)) {
- // return true; // PASS
- // }
- //
- // // 3、corn trigger
- // CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing(); // withMisfireHandlingInstructionDoNothing 忽略掉调度终止过程中忽略的调度
- // CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
- //
- // // 4、job detail
- // Class<? extends Job> jobClass_ = RemoteHttpJobBean.class; // Class.forName(jobInfo.getJobClass());
- // JobDetail jobDetail = JobBuilder.newJob(jobClass_).withIdentity(jobKey).build();
- //
- // /*if (jobInfo.getJobData()!=null) {
- // JobDataMap jobDataMap = jobDetail.getJobDataMap();
- // jobDataMap.putAll(JacksonUtil.readValue(jobInfo.getJobData(), Map.class));
- // // JobExecutionContext context.getMergedJobDataMap().get("mailGuid");
- // }*/
- //
- // // 5、schedule job
- // Date date = scheduler.scheduleJob(jobDetail, cronTrigger);
- //
- // logger.info(">>>>>>>>>>> addJob success(quartz), jobDetail:{}, cronTrigger:{}, date:{}", jobDetail, cronTrigger, date);
- // return true;
- // }
- //
- //
- // /**
- // * remove trigger + job
- // *
- // * @param jobName
- // * @return
- // * @throws SchedulerException
- // */
- // public static boolean removeJob(String jobName) throws SchedulerException {
- //
- // JobKey jobKey = new JobKey(jobName);
- // scheduler.deleteJob(jobKey);
- //
- // /*TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
- // if (scheduler.checkExists(triggerKey)) {
- // scheduler.unscheduleJob(triggerKey); // trigger + job
- // }*/
- //
- // logger.info(">>>>>>>>>>> removeJob success(quartz), jobKey:{}", jobKey);
- // return true;
- // }
- //
- //
- // /**
- // * updateJobCron
- // *
- // * @param jobName
- // * @param cronExpression
- // * @return
- // * @throws SchedulerException
- // */
- // public static boolean updateJobCron(String jobName, String cronExpression) throws SchedulerException {
- //
- // // 1、job key
- // TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
- //
- // // 2、valid
- // if (!scheduler.checkExists(triggerKey)) {
- // return true; // PASS
- // }
- //
- // CronTrigger oldTrigger = (CronTrigger) scheduler.getTrigger(triggerKey);
- //
- // // 3、avoid repeat cron
- // String oldCron = oldTrigger.getCronExpression();
- // if (oldCron.equals(cronExpression)){
- // return true; // PASS
- // }
- //
- // // 4、new cron trigger
- // CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
- // oldTrigger = oldTrigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
- //
- // // 5、rescheduleJob
- // scheduler.rescheduleJob(triggerKey, oldTrigger);
- //
- // /*
- // JobKey jobKey = new JobKey(jobName);
- //
- // // old job detail
- // JobDetail jobDetail = scheduler.getJobDetail(jobKey);
- //
- // // new trigger
- // HashSet<Trigger> triggerSet = new HashSet<Trigger>();
- // triggerSet.add(cronTrigger);
- // // cover trigger of job detail
- // scheduler.scheduleJob(jobDetail, triggerSet, true);*/
- //
- // logger.info(">>>>>>>>>>> resumeJob success, JobName:{}", jobName);
- // return true;
- // }
- //
- //
- // /**
- // * pause
- // *
- // * @param jobName
- // * @return
- // * @throws SchedulerException
- // */
- // /*public static boolean pauseJob(String jobName) throws SchedulerException {
- //
- // TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
- //
- // boolean result = false;
- // if (scheduler.checkExists(triggerKey)) {
- // scheduler.pauseTrigger(triggerKey);
- // result = true;
- // }
- //
- // logger.info(">>>>>>>>>>> pauseJob {}, triggerKey:{}", (result?"success":"fail"),triggerKey);
- // return result;
- // }*/
- //
- //
- // /**
- // * resume
- // *
- // * @param jobName
- // * @return
- // * @throws SchedulerException
- // */
- // /*public static boolean resumeJob(String jobName) throws SchedulerException {
- //
- // TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
- //
- // boolean result = false;
- // if (scheduler.checkExists(triggerKey)) {
- // scheduler.resumeTrigger(triggerKey);
- // result = true;
- // }
- //
- // logger.info(">>>>>>>>>>> resumeJob {}, triggerKey:{}", (result?"success":"fail"), triggerKey);
- // return result;
- // }*/
- //
- //
- // /**
- // * run
- // *
- // * @param jobName
- // * @return
- // * @throws SchedulerException
- // */
- // /*public static boolean triggerJob(String jobName) throws SchedulerException {
- // // TriggerKey : name + group
- // JobKey jobKey = new JobKey(jobName);
- // TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
- //
- // boolean result = false;
- // if (scheduler.checkExists(triggerKey)) {
- // scheduler.triggerJob(jobKey);
- // result = true;
- // logger.info(">>>>>>>>>>> runJob success, jobKey:{}", jobKey);
- // } else {
- // logger.info(">>>>>>>>>>> runJob fail, jobKey:{}", jobKey);
- // }
- // return result;
- // }*/
- //
- //
- // /**
- // * finaAllJobList
- // *
- // * @return
- // *//*
- // @Deprecated
- // public static List<Map<String, Object>> finaAllJobList(){
- // List<Map<String, Object>> jobList = new ArrayList<Map<String,Object>>();
- //
- // try {
- // if (scheduler.getJobGroupNames()==null || scheduler.getJobGroupNames().size()==0) {
- // return null;
- // }
- // String groupName = scheduler.getJobGroupNames().get(0);
- // Set<JobKey> jobKeys = scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName));
- // if (jobKeys!=null && jobKeys.size()>0) {
- // for (JobKey jobKey : jobKeys) {
- // TriggerKey triggerKey = TriggerKey.triggerKey(jobKey.getName(), Scheduler.DEFAULT_GROUP);
- // Trigger trigger = scheduler.getTrigger(triggerKey);
- // JobDetail jobDetail = scheduler.getJobDetail(jobKey);
- // TriggerState triggerState = scheduler.getTriggerState(triggerKey);
- // Map<String, Object> jobMap = new HashMap<String, Object>();
- // jobMap.put("TriggerKey", triggerKey);
- // jobMap.put("Trigger", trigger);
- // jobMap.put("JobDetail", jobDetail);
- // jobMap.put("TriggerState", triggerState);
- // jobList.add(jobMap);
- // }
- // }
- //
- // } catch (SchedulerException e) {
- // logger.error(e.getMessage(), e);
- // return null;
- // }
- // return jobList;
- // }*/
- //
- //}
|