From fff5c0121a677e6dee7a760904ba306ce2b65a9e Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Sat, 15 Apr 2023 03:43:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=5Fsolon=5Fplugin=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=EF=BC=8C=E5=BC=95=E5=85=A5solon-plugins=E5=A4=96?= =?UTF-8?q?=E9=83=A8=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _solon_plugin/job-solon-plugin/pom.xml | 39 ---- .../solon/extend/job/CustomThreadFactory.java | 34 ---- .../asgc/solon/extend/job/IJobCallback.java | 17 -- .../asgc/solon/extend/job/IJobExecutor.java | 34 ---- .../asgc/solon/extend/job/IJobHandler.java | 16 -- .../fun/asgc/solon/extend/job/IJobSource.java | 17 -- .../fun/asgc/solon/extend/job/JobBean.java | 26 --- .../fun/asgc/solon/extend/job/JobInfo.java | 23 --- .../fun/asgc/solon/extend/job/XPluginImp.java | 45 ----- .../extend/job/annotation/EnableJob.java | 16 -- .../extend/job/annotation/JobHandler.java | 20 -- .../extend/job/impl/DefaultJobCallback.java | 23 --- .../extend/job/impl/DefaultJobSource.java | 44 ----- .../solon/extend/job/impl/JobExecutor.java | 175 ------------------ .../asgc/solon/extend/job/package-info.java | 1 - .../fun.asgc.solon.extend.job.properties | 2 - _solon_plugin/orika-solon-plugin/pom.xml | 30 --- .../asgc/solon/extend/orika/XPluginImp.java | 33 ---- .../asgc/solon/extend/orika/package-info.java | 1 - .../fun.asgc.solon.extend.orika.properties | 2 - neutrino-proxy-server/pom.xml | 14 +- .../neutrinoproxy/server/ProxyServer.java | 2 +- .../server/job/DataCleanJob.java | 4 +- .../neutrinoproxy/server/job/DemoJob.java | 4 +- .../server/job/FlowReportForDayJob.java | 4 +- .../server/job/FlowReportForHourJob.java | 4 +- .../server/job/FlowReportForMinuteJob.java | 4 +- .../server/job/FlowReportForMonthJob.java | 4 +- .../server/service/JobInfoService.java | 48 +++-- .../server/service/JobLogService.java | 4 +- pom.xml | 18 +- 31 files changed, 71 insertions(+), 637 deletions(-) delete mode 100644 _solon_plugin/job-solon-plugin/pom.xml delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/CustomThreadFactory.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobCallback.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobExecutor.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobHandler.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobSource.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobBean.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobInfo.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/XPluginImp.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/EnableJob.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/JobHandler.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobCallback.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobSource.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/JobExecutor.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/package-info.java delete mode 100644 _solon_plugin/job-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.job.properties delete mode 100644 _solon_plugin/orika-solon-plugin/pom.xml delete mode 100644 _solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/XPluginImp.java delete mode 100644 _solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/package-info.java delete mode 100644 _solon_plugin/orika-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.orika.properties diff --git a/_solon_plugin/job-solon-plugin/pom.xml b/_solon_plugin/job-solon-plugin/pom.xml deleted file mode 100644 index 22cec567..00000000 --- a/_solon_plugin/job-solon-plugin/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - 4.0.0 - - - org.noear - solon-parent - 2.2.2 - - - fun.asgc - job-solon-plugin - jar - - - - org.noear - solon - - - org.projectlombok - lombok - - - - org.quartz-scheduler - quartz - 2.3.1 - - - - cn.hutool - hutool-core - 5.8.15 - - - \ No newline at end of file diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/CustomThreadFactory.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/CustomThreadFactory.java deleted file mode 100644 index 2e099423..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/CustomThreadFactory.java +++ /dev/null @@ -1,34 +0,0 @@ -package fun.asgc.solon.extend.job; - -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.atomic.AtomicInteger; - -/** - * - * @author: aoshiguchen - * @date: 2022/9/4 - */ -public class CustomThreadFactory implements ThreadFactory { - private final ThreadGroup group; - private final AtomicInteger threadNumber = new AtomicInteger(1); - private final String namePrefix; - - public CustomThreadFactory(String prefix) { - SecurityManager s = System.getSecurityManager(); - group = (s != null) ? s.getThreadGroup() : - Thread.currentThread().getThreadGroup(); - namePrefix = prefix + "-thread-"; - } - - @Override - public Thread newThread(Runnable r) { - Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0); - if (t.isDaemon()) { - t.setDaemon(false); - } - if (t.getPriority() != Thread.NORM_PRIORITY) { - t.setPriority(Thread.NORM_PRIORITY); - } - return t; - } -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobCallback.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobCallback.java deleted file mode 100644 index 8283475d..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobCallback.java +++ /dev/null @@ -1,17 +0,0 @@ -package fun.asgc.solon.extend.job; - -/** - * - * @author: aoshiguchen - * @date: 2022/9/4 - */ -public interface IJobCallback { - - /** - * 执行日志 - * @param jobInfo - * @param param - * @param throwable - */ - void executeLog(JobInfo jobInfo, String param, Throwable throwable); -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobExecutor.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobExecutor.java deleted file mode 100644 index 127a4344..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobExecutor.java +++ /dev/null @@ -1,34 +0,0 @@ -package fun.asgc.solon.extend.job; - -/** - * - * @author: aoshiguchen - * @date: 2022/9/4 - */ -public interface IJobExecutor { - - /** - * 初始化 - * @throws JobException - */ - void init() throws Exception; - - /** - * 新增job - * @param jobInfo - */ - void add(JobInfo jobInfo); - - /** - * 删除job - * @param jobName - */ - void remove(String jobName); - - /** - * 触发 - * @param jobName - * @param param - */ - void trigger(String jobName, String param); -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobHandler.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobHandler.java deleted file mode 100644 index a712f570..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobHandler.java +++ /dev/null @@ -1,16 +0,0 @@ -package fun.asgc.solon.extend.job; - -/** - * @author: aoshiguchen - * @date: 2022/9/4 - */ -public interface IJobHandler { - - /** - * job执行 - * @param param - * @throws Exception - */ - void execute(String param) throws Exception; - -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobSource.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobSource.java deleted file mode 100644 index c9f805ad..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobSource.java +++ /dev/null @@ -1,17 +0,0 @@ -package fun.asgc.solon.extend.job; - -import java.util.List; - -/** - * - * @author: aoshiguchen - * @date: 2022/9/4 - */ -public interface IJobSource { - - /** - * 获取所有job列表 - * @return - */ - List sourceList(); -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobBean.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobBean.java deleted file mode 100644 index 9763e69f..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobBean.java +++ /dev/null @@ -1,26 +0,0 @@ -package fun.asgc.solon.extend.job; - -import fun.asgc.solon.extend.job.impl.JobExecutor; -import lombok.extern.slf4j.Slf4j; -import org.noear.solon.Solon; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -/** - * - * @author: aoshiguchen - * @date: 2022/9/4 - */ -@Slf4j -public class JobBean implements Job { - - @Override - public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - JobExecutor jobExecutor = Solon.context().getBean(JobExecutor.class); - if (null != jobExecutor) { - jobExecutor.execute(jobExecutionContext); - } - } - -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobInfo.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobInfo.java deleted file mode 100644 index db51ec15..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobInfo.java +++ /dev/null @@ -1,23 +0,0 @@ -package fun.asgc.solon.extend.job; - -import lombok.Data; -import lombok.experimental.Accessors; - -import java.util.Map; - -/** - * - * @author: aoshiguchen - * @date: 2022/9/4 - */ -@Accessors(chain = true) -@Data -public class JobInfo { - private String id; - private String name; - private String desc; - private String cron; - private String param; - private boolean enable; - private Map extension; -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/XPluginImp.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/XPluginImp.java deleted file mode 100644 index cdab50b4..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/XPluginImp.java +++ /dev/null @@ -1,45 +0,0 @@ -package fun.asgc.solon.extend.job; - -import fun.asgc.solon.extend.job.annotation.EnableJob; -import fun.asgc.solon.extend.job.impl.DefaultJobCallback; -import fun.asgc.solon.extend.job.impl.DefaultJobSource; -import fun.asgc.solon.extend.job.impl.JobExecutor; -import org.noear.solon.Solon; -import org.noear.solon.core.AopContext; -import org.noear.solon.core.Plugin; -import org.noear.solon.core.event.AppLoadEndEvent; - -/** - * @author: aoshiguchen - * @date: 2023/3/11 - */ -public class XPluginImp implements Plugin { - - @Override - public void start(AopContext context) throws Throwable { - EnableJob enableJob = Solon.app().source().getAnnotation(EnableJob.class); - if (null == enableJob || !enableJob.value()) { - return; - } - - //应用加载完后,再启动任务 - Solon.app().onEvent(AppLoadEndEvent.class, e -> { - IJobSource jobSource = context.getBean(IJobSource.class); - IJobCallback jobCallback = context.getBean(IJobCallback.class); - if (null == jobSource) { - jobSource = new DefaultJobSource(); - } - if (null == jobCallback) { - jobCallback = new DefaultJobCallback(); - } - - JobExecutor jobExecutor = new JobExecutor(); - jobExecutor.setJobSource(jobSource); - jobExecutor.setJobCallback(jobCallback); - jobExecutor.start(); - - context.wrapAndPut(JobExecutor.class, jobExecutor); - }); - } - -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/EnableJob.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/EnableJob.java deleted file mode 100644 index b5c929a3..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/EnableJob.java +++ /dev/null @@ -1,16 +0,0 @@ -package fun.asgc.solon.extend.job.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author: aoshiguchen - * @date: 2023/3/12 - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -public @interface EnableJob { - boolean value() default true; -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/JobHandler.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/JobHandler.java deleted file mode 100644 index add2cfda..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/JobHandler.java +++ /dev/null @@ -1,20 +0,0 @@ -package fun.asgc.solon.extend.job.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * - * @author: aoshiguchen - * @date: 2022/9/4 - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -public @interface JobHandler { - String name(); - String desc() default ""; - String cron(); - String param() default ""; -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobCallback.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobCallback.java deleted file mode 100644 index 9226e437..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobCallback.java +++ /dev/null @@ -1,23 +0,0 @@ -package fun.asgc.solon.extend.job.impl; - -import fun.asgc.solon.extend.job.IJobCallback; -import fun.asgc.solon.extend.job.JobInfo; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: aoshiguchen - * @date: 2023/3/12 - */ -@Slf4j -public class DefaultJobCallback implements IJobCallback { - - @Override - public void executeLog(JobInfo jobInfo, String param, Throwable throwable) { - if (null == throwable) { - log.debug("[Solon Plugin Job] Job执行 id:{} name:{} desc:{} param:{}", jobInfo.getId(), jobInfo.getName(), jobInfo.getDesc(), param); - } else { - log.error("[Solon Plugin Job] Job执行 id:{} name:{} desc:{} param:{}", jobInfo.getId(), jobInfo.getName(), jobInfo.getDesc(), param, throwable); - } - } - -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobSource.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobSource.java deleted file mode 100644 index 48116b1a..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobSource.java +++ /dev/null @@ -1,44 +0,0 @@ -package fun.asgc.solon.extend.job.impl; - -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.util.StrUtil; -import fun.asgc.solon.extend.job.IJobHandler; -import fun.asgc.solon.extend.job.IJobSource; -import fun.asgc.solon.extend.job.annotation.JobHandler; -import fun.asgc.solon.extend.job.JobInfo; -import org.noear.solon.Solon; - -import java.util.List; - -/** - * - * @author: aoshiguchen - * @date: 2022/9/4 - */ -public class DefaultJobSource implements IJobSource { - - @Override - public List sourceList() { - List jobHandlerList = Solon.context().getBeansOfType(IJobHandler.class); - if (CollectionUtil.isEmpty(jobHandlerList)) { - return CollectionUtil.newArrayList(); - } - List jobInfoList = CollectionUtil.newArrayList(); - for (IJobHandler jobHandler : jobHandlerList) { - JobHandler handler = jobHandler.getClass().getAnnotation(JobHandler.class); - if (null == handler || StrUtil.isEmpty(handler.name()) || StrUtil.isEmpty(handler.cron())) { - continue; - } - jobInfoList.add(new JobInfo() - .setId(handler.name()) - .setName(handler.name()) - .setDesc(handler.desc()) - .setCron(handler.cron()) - .setParam(handler.param()) - .setEnable(true) - ); - } - return jobInfoList; - } - -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/JobExecutor.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/JobExecutor.java deleted file mode 100644 index bffdf6c3..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/JobExecutor.java +++ /dev/null @@ -1,175 +0,0 @@ -package fun.asgc.solon.extend.job.impl; - -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.util.StrUtil; -import fun.asgc.solon.extend.job.*; -import fun.asgc.solon.extend.job.annotation.JobHandler; -import org.noear.solon.Solon; -import org.quartz.*; -import org.quartz.impl.StdSchedulerFactory; - -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -/** - * Job执行器 - * @author: aoshiguchen - * @date: 2022/9/4 - */ -public class JobExecutor implements IJobExecutor { - private IJobSource jobSource; - private ThreadPoolExecutor threadPoolExecutor; - private Map jobInfoMap = new ConcurrentHashMap<>(); - private SchedulerFactory schedulerFactory; - private Scheduler scheduler; - private Map jobHandlerMap = new ConcurrentHashMap<>(); - private Set runJobSet = CollectionUtil.newHashSet(); - private IJobCallback jobCallback; - private Map triggerKeyMap = new ConcurrentHashMap<>(); - - public void start() { - if (null == threadPoolExecutor) { - threadPoolExecutor = new ThreadPoolExecutor(5, 20, 10L, TimeUnit.SECONDS, - new LinkedBlockingQueue<>(), new CustomThreadFactory("SolonJob")); - } - - List jobHandlerList = Solon.context().getBeansOfType(IJobHandler.class); - if (!CollectionUtil.isEmpty(jobHandlerList)) { - for (IJobHandler item : jobHandlerList) { - JobHandler jobHandler = item.getClass().getAnnotation(JobHandler.class); - if (null == jobHandler) { - continue; - } - jobHandlerMap.put(jobHandler.name(), item); - } - } - - try { - this.schedulerFactory = new StdSchedulerFactory(); - this.scheduler = schedulerFactory.getScheduler(); - this.init(); - } catch (Exception e){ - throw new RuntimeException("job初始化异常"); - } - } - - public void setJobSource(IJobSource jobSource) { - this.jobSource = jobSource; - } - - public void setThreadPoolExecutor(ThreadPoolExecutor threadPoolExecutor) { - this.threadPoolExecutor = threadPoolExecutor; - } - - public void setJobCallback(IJobCallback jobCallback) { - this.jobCallback = jobCallback; - } - - @Override - public void init() throws Exception { - List jobInfoList = jobSource.sourceList(); - if (CollectionUtil.isEmpty(jobInfoList)) { - return; - } - - for (JobInfo jobInfo : jobInfoList) { - add(jobInfo); - } - } - - @Override - public void add(JobInfo jobInfo) { - if (null == jobInfo || StrUtil.isEmpty(jobInfo.getId()) || StrUtil.isEmpty(jobInfo.getName()) || - StrUtil.isEmpty(jobInfo.getCron())) { - return; - } - synchronized (jobInfo.getId()) { - runJobSet.add(jobInfo.getName()); - jobInfoMap.put(jobInfo.getId(), jobInfo); - - TriggerKey triggerKey = TriggerKey.triggerKey(jobInfo.getId()); - triggerKeyMap.put(jobInfo.getId(), triggerKey); - JobKey jobKey = new JobKey(jobInfo.getName()); - - CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobInfo.getCron()).withMisfireHandlingInstructionDoNothing(); - CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build(); - JobDetail jobDetail = JobBuilder.newJob(JobBean.class).withIdentity(jobKey).build(); - - try { - if (jobInfo.isEnable()) { - scheduler.scheduleJob(jobDetail, cronTrigger); - scheduler.start(); - } - } catch (Exception e) { - throw new RuntimeException(String.format("新增job[name=%s]异常", jobInfo.getName())); - } - } - } - - @Override - public void remove(String jobId) { - JobInfo jobInfo = jobInfoMap.get(jobId); - if (null == jobInfo) { - return; - } - synchronized (jobId) { - runJobSet.remove(jobInfo.getName()); - unscheduleJob(jobId); - } - } - - @Override - public void trigger(String jobId, String param) { - doExecute(jobId, param); - } - - public void execute(JobExecutionContext context) throws JobExecutionException { - if (null == context || null == context.getTrigger()) { - return; - } - String jobId = context.getTrigger().getKey().getName(); - JobInfo jobInfo = jobInfoMap.get(jobId); - if (null == jobInfo) { - unscheduleJob(jobId); - return; - } - doExecute(jobId, jobInfo.getParam()); - } - - private void unscheduleJob(String jobId) { - TriggerKey triggerKey = triggerKeyMap.get(jobId); - if (null != triggerKey) { - try { - scheduler.unscheduleJob(triggerKey); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - private void doExecute(String jobId, String param) { - JobInfo jobInfo = jobInfoMap.get(jobId); - if (null == jobInfo) { - return; - } - IJobHandler jobHandler =jobHandlerMap.get(jobInfo.getName()); - if (null == jobHandler) { - return; - } - threadPoolExecutor.submit(() -> { - try { - jobHandler.execute(param); - if (null != jobCallback) { - jobCallback.executeLog(jobInfo, param, null); - } - } catch (Throwable e) { - jobCallback.executeLog(jobInfo, param, e); - } - }); - } -} diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/package-info.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/package-info.java deleted file mode 100644 index 2a228d94..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package fun.asgc.solon.extend.job; \ No newline at end of file diff --git a/_solon_plugin/job-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.job.properties b/_solon_plugin/job-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.job.properties deleted file mode 100644 index 2f207886..00000000 --- a/_solon_plugin/job-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.job.properties +++ /dev/null @@ -1,2 +0,0 @@ -solon.plugin=fun.asgc.solon.extend.job.XPluginImp -solon.plugin.priority=2 \ No newline at end of file diff --git a/_solon_plugin/orika-solon-plugin/pom.xml b/_solon_plugin/orika-solon-plugin/pom.xml deleted file mode 100644 index 1a236975..00000000 --- a/_solon_plugin/orika-solon-plugin/pom.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - 4.0.0 - - - org.noear - solon-parent - 2.2.2 - - - fun.asgc - orika-solon-plugin - jar - - - - org.noear - solon - - - - - ma.glasnost.orika - orika-core - 1.5.4 - - - \ No newline at end of file diff --git a/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/XPluginImp.java b/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/XPluginImp.java deleted file mode 100644 index 36642da2..00000000 --- a/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/XPluginImp.java +++ /dev/null @@ -1,33 +0,0 @@ -package fun.asgc.solon.extend.orika; - -import ma.glasnost.orika.CustomConverter; -import ma.glasnost.orika.Mapper; -import ma.glasnost.orika.MapperFacade; -import ma.glasnost.orika.MapperFactory; -import ma.glasnost.orika.impl.DefaultMapperFactory; -import ma.glasnost.orika.metadata.ClassMapBuilder; -import org.noear.solon.core.AopContext; -import org.noear.solon.core.Plugin; - -/** - * @author: aoshiguchen - * @date: 2023/3/11 - */ -public class XPluginImp implements Plugin { - @Override - public void start(AopContext context) throws Throwable { - DefaultMapperFactory factory = new DefaultMapperFactory.Builder().build(); - context.subBeansOfType(CustomConverter.class, bean -> { - factory.getConverterFactory().registerConverter(bean); - }); - context.subBeansOfType(Mapper.class, bean -> { - factory.registerMapper(bean); - }); - context.subBeansOfType(ClassMapBuilder.class, bean -> { - factory.registerClassMap((ClassMapBuilder) bean); - }); - context.wrapAndPut(MapperFactory.class, factory); - context.wrapAndPut(MapperFacade.class, factory.getMapperFacade()); - } - -} diff --git a/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/package-info.java b/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/package-info.java deleted file mode 100644 index 43d711cd..00000000 --- a/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package fun.asgc.solon.extend.orika; \ No newline at end of file diff --git a/_solon_plugin/orika-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.orika.properties b/_solon_plugin/orika-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.orika.properties deleted file mode 100644 index b43ff7ab..00000000 --- a/_solon_plugin/orika-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.orika.properties +++ /dev/null @@ -1,2 +0,0 @@ -solon.plugin=fun.asgc.solon.extend.orika.XPluginImp -solon.plugin.priority=1 \ No newline at end of file diff --git a/neutrino-proxy-server/pom.xml b/neutrino-proxy-server/pom.xml index 87c4110e..5f93a05a 100644 --- a/neutrino-proxy-server/pom.xml +++ b/neutrino-proxy-server/pom.xml @@ -30,17 +30,13 @@ org.noear activerecord-solon-plugin - - fun.asgc - orika-solon-plugin - 2.2.2 - - - - fun.asgc + org.dromara.solon-plugins job-solon-plugin - 2.2.2 + + + org.dromara.solon-plugins + orika-solon-plugin org.dromara.neutrino-proxy diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/ProxyServer.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/ProxyServer.java index 5ec01b9b..f9924e1a 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/ProxyServer.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/ProxyServer.java @@ -1,6 +1,6 @@ package org.dromara.neutrinoproxy.server; -import fun.asgc.solon.extend.job.annotation.EnableJob; +import org.dromara.solonplugins.job.annotation.EnableJob; import org.noear.solon.Solon; import org.noear.solon.annotation.SolonMain; import org.noear.solon.web.cors.CrossFilter; diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DataCleanJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DataCleanJob.java index e917525e..fb18839d 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DataCleanJob.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DataCleanJob.java @@ -3,12 +3,12 @@ package org.dromara.neutrinoproxy.server.job; import com.alibaba.fastjson.JSONObject; import org.dromara.neutrinoproxy.core.util.DateUtil; import org.dromara.neutrinoproxy.server.dal.*; -import fun.asgc.solon.extend.job.IJobHandler; -import fun.asgc.solon.extend.job.annotation.JobHandler; import lombok.Data; import lombok.experimental.Accessors; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.dromara.solonplugins.job.IJobHandler; +import org.dromara.solonplugins.job.annotation.JobHandler; import org.noear.solon.annotation.Component; import org.noear.solon.annotation.Inject; diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DemoJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DemoJob.java index 58567546..687e623b 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DemoJob.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DemoJob.java @@ -1,8 +1,8 @@ package org.dromara.neutrinoproxy.server.job; -import fun.asgc.solon.extend.job.IJobHandler; -import fun.asgc.solon.extend.job.annotation.JobHandler; import lombok.extern.slf4j.Slf4j; +import org.dromara.solonplugins.job.IJobHandler; +import org.dromara.solonplugins.job.annotation.JobHandler; import org.noear.solon.annotation.Component; /** diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForDayJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForDayJob.java index 3346dedf..3046bbed 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForDayJob.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForDayJob.java @@ -30,10 +30,10 @@ import org.dromara.neutrinoproxy.server.dal.LicenseMapper; import org.dromara.neutrinoproxy.server.dal.entity.FlowReportDayDO; import org.dromara.neutrinoproxy.server.dal.entity.FlowReportHourDO; import org.dromara.neutrinoproxy.server.service.FlowReportService; -import fun.asgc.solon.extend.job.IJobHandler; -import fun.asgc.solon.extend.job.annotation.JobHandler; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.dromara.solonplugins.job.IJobHandler; +import org.dromara.solonplugins.job.annotation.JobHandler; import org.noear.solon.annotation.Component; import org.noear.solon.annotation.Inject; diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForHourJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForHourJob.java index 57cb5666..a52d6e76 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForHourJob.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForHourJob.java @@ -8,10 +8,10 @@ import org.dromara.neutrinoproxy.server.dal.LicenseMapper; import org.dromara.neutrinoproxy.server.dal.entity.FlowReportHourDO; import org.dromara.neutrinoproxy.server.dal.entity.FlowReportMinuteDO; import org.dromara.neutrinoproxy.server.service.FlowReportService; -import fun.asgc.solon.extend.job.IJobHandler; -import fun.asgc.solon.extend.job.annotation.JobHandler; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.dromara.solonplugins.job.IJobHandler; +import org.dromara.solonplugins.job.annotation.JobHandler; import org.noear.solon.annotation.Component; import org.noear.solon.annotation.Inject; diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMinuteJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMinuteJob.java index 8ae002c9..2615cccf 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMinuteJob.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMinuteJob.java @@ -7,9 +7,9 @@ import org.dromara.neutrinoproxy.server.dal.LicenseMapper; import org.dromara.neutrinoproxy.server.dal.entity.FlowReportMinuteDO; import org.dromara.neutrinoproxy.server.dal.entity.LicenseDO; import org.dromara.neutrinoproxy.server.service.FlowReportService; -import fun.asgc.solon.extend.job.IJobHandler; -import fun.asgc.solon.extend.job.annotation.JobHandler; import lombok.extern.slf4j.Slf4j; +import org.dromara.solonplugins.job.IJobHandler; +import org.dromara.solonplugins.job.annotation.JobHandler; import org.noear.solon.annotation.Component; import org.noear.solon.annotation.Inject; diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMonthJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMonthJob.java index d2ede262..3347674f 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMonthJob.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMonthJob.java @@ -6,10 +6,10 @@ import org.dromara.neutrinoproxy.server.dal.*; import org.dromara.neutrinoproxy.server.dal.entity.FlowReportDayDO; import org.dromara.neutrinoproxy.server.dal.entity.FlowReportMonthDO; import org.dromara.neutrinoproxy.server.service.FlowReportService; -import fun.asgc.solon.extend.job.IJobHandler; -import fun.asgc.solon.extend.job.annotation.JobHandler; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.dromara.solonplugins.job.IJobHandler; +import org.dromara.solonplugins.job.annotation.JobHandler; import org.noear.solon.annotation.Component; import org.noear.solon.annotation.Inject; diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobInfoService.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobInfoService.java index 7e043841..bd9c5798 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobInfoService.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobInfoService.java @@ -19,19 +19,24 @@ import org.dromara.neutrinoproxy.server.controller.res.system.JobInfoUpdateEnabl import org.dromara.neutrinoproxy.server.controller.res.system.JobInfoUpdateRes; import org.dromara.neutrinoproxy.server.dal.JobInfoMapper; import org.dromara.neutrinoproxy.server.dal.entity.JobInfoDO; +import org.dromara.neutrinoproxy.server.job.*; import org.dromara.neutrinoproxy.server.util.ParamCheckUtil; -import fun.asgc.solon.extend.job.IJobSource; -import fun.asgc.solon.extend.job.JobInfo; -import fun.asgc.solon.extend.job.impl.JobExecutor; import lombok.extern.slf4j.Slf4j; import ma.glasnost.orika.MapperFacade; import org.apache.ibatis.solon.annotation.Db; +import org.dromara.solonplugins.job.IJobHandler; +import org.dromara.solonplugins.job.IJobSource; +import org.dromara.solonplugins.job.JobInfo; +import org.dromara.solonplugins.job.impl.JobExecutor; import org.noear.solon.Solon; import org.noear.solon.annotation.Component; +import org.noear.solon.annotation.Init; import org.noear.solon.annotation.Inject; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @@ -45,6 +50,29 @@ public class JobInfoService implements IJobSource { private MapperFacade mapperFacade; @Db private JobInfoMapper jobInfoMapper; + @Inject + private DataCleanJob dataCleanJob; + @Inject + private DemoJob demoJob; + @Inject + private FlowReportForDayJob flowReportForDayJob; + @Inject + private FlowReportForHourJob flowReportForHourJob; + @Inject + private FlowReportForMinuteJob flowReportForMinuteJob; + @Inject + private FlowReportForMonthJob flowReportForMonthJob; + private Map jobHandlerMap = new HashMap<>(); + + @Init + public void init() { + jobHandlerMap.put("DataCleanJob", dataCleanJob); + jobHandlerMap.put("DemoJob", demoJob); + jobHandlerMap.put("FlowReportForDayJob", flowReportForDayJob); + jobHandlerMap.put("FlowReportForHourJob", flowReportForHourJob); + jobHandlerMap.put("FlowReportForMinuteJob", flowReportForMinuteJob); + jobHandlerMap.put("FlowReportForMonthJob", flowReportForMonthJob); + } public PageInfo page(PageQuery pageQuery, JobInfoListReq req) { Page result = PageHelper.startPage(pageQuery.getCurrent(), pageQuery.getSize()); @@ -65,22 +93,15 @@ public class JobInfoService implements IJobSource { ParamCheckUtil.checkNotNull(jobInfoDO, ExceptionConstant.JOB_INFO_NOT_EXIST); jobInfoMapper.updateEnableStatus(req.getId(), req.getEnable(), new Date()); if (EnableStatusEnum.ENABLE.getStatus().equals(req.getEnable())) { - Solon.context().getBean(JobExecutor.class).add(new JobInfo() - .setId(String.valueOf(jobInfoDO.getId())) - .setName(jobInfoDO.getHandler()) - .setDesc(jobInfoDO.getDesc()) - .setCron(jobInfoDO.getCron()) - .setParam(jobInfoDO.getParam()) - .setEnable(true) - ); + Solon.context().getBean(JobExecutor.class).startById(String.valueOf(req.getId())); } else { - Solon.context().getBean(JobExecutor.class).remove(String.valueOf(req.getId())); + Solon.context().getBean(JobExecutor.class).stopById(String.valueOf(req.getId())); } return new JobInfoUpdateEnableStatusRes(); } public JobInfoExecuteRes execute(JobInfoExecuteReq req) { - Solon.context().getBean(JobExecutor.class).trigger(String.valueOf(req.getId()), req.getParam()); + Solon.context().getBean(JobExecutor.class).triggerById(String.valueOf(req.getId()), req.getParam()); return new JobInfoExecuteRes(); } @@ -99,6 +120,7 @@ public class JobInfoService implements IJobSource { .setCron(item.getCron()) .setParam(item.getParam()) .setEnable(EnableStatusEnum.ENABLE.getStatus().equals(item.getEnable())) + .setJobHandler(jobHandlerMap.get(item.getHandler())) ); } diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobLogService.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobLogService.java index 08f6baf5..7b9f321c 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobLogService.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobLogService.java @@ -30,12 +30,12 @@ import org.dromara.neutrinoproxy.server.controller.req.log.JobLogListReq; import org.dromara.neutrinoproxy.server.controller.res.log.JobLogListRes; import org.dromara.neutrinoproxy.server.dal.JobLogMapper; import org.dromara.neutrinoproxy.server.dal.entity.JobLogDO; -import fun.asgc.solon.extend.job.IJobCallback; -import fun.asgc.solon.extend.job.JobInfo; import lombok.extern.slf4j.Slf4j; import ma.glasnost.orika.MapperFacade; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.ibatis.solon.annotation.Db; +import org.dromara.solonplugins.job.IJobCallback; +import org.dromara.solonplugins.job.JobInfo; import org.noear.solon.annotation.Component; import org.noear.solon.annotation.Inject; diff --git a/pom.xml b/pom.xml index 05cd8558..57a840a7 100644 --- a/pom.xml +++ b/pom.xml @@ -20,8 +20,6 @@ neutrino-proxy-core neutrino-proxy-client neutrino-proxy-server - _solon_plugin/job-solon-plugin - _solon_plugin/orika-solon-plugin @@ -104,6 +102,22 @@ HikariCP 4.0.3 + + org.dromara.solon-plugins + job-solon-plugin + 0.0.4 + + + cn.hutool + hutool-core + + + + + org.dromara.solon-plugins + orika-solon-plugin + 0.0.4 +