mirror of https://github.com/ZhongFuCheng3y/austin
2. 优化cron模块线程池相关代码 3. cron模块当读取完文件后,释放单线程池资源(后续可做通知模块) 4. 注册动态线程池/spring管理工具类pull/6/head
parent
ecaedf8cd5
commit
9ed6b06343
@ -1,116 +0,0 @@
|
|||||||
package com.java3y.austin.cron.config;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import org.springframework.boot.autoconfigure.task.TaskExecutionProperties;
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import java.util.concurrent.RejectedExecutionHandler;
|
|
||||||
import java.util.concurrent.ThreadPoolExecutor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @program: austin
|
|
||||||
* @description: spring 自定义线程池配置类
|
|
||||||
* @author: WhyWhatHow
|
|
||||||
* @create: 2022-02-27 09:41
|
|
||||||
* @see TaskExecutionProperties
|
|
||||||
**/
|
|
||||||
@Data
|
|
||||||
@ConfigurationProperties("austin.async.task")
|
|
||||||
public class AsyncExecutionProperties {
|
|
||||||
/**
|
|
||||||
* 核心线程数,默认数量当前cpu核心线程数
|
|
||||||
*/
|
|
||||||
int coreSize;
|
|
||||||
/**
|
|
||||||
* 最大线程数 ,默认coreSize*2
|
|
||||||
*/
|
|
||||||
int maxSize;
|
|
||||||
/**
|
|
||||||
* 线程名前缀 eg: "austinAsyncExecutor-"
|
|
||||||
*/
|
|
||||||
private String threadNamePrefix = "austinAsyncExecutor-";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* queue capacity
|
|
||||||
*/
|
|
||||||
private int queueCapacity = 1000;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 线程最大存活时间,单位s
|
|
||||||
*/
|
|
||||||
private int keepAlive = 60;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否允许核心线程超时
|
|
||||||
*/
|
|
||||||
private boolean allowCoreThreadTimeout = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 拒绝策略 ,默认callRun
|
|
||||||
*/
|
|
||||||
private RejectedEnum rejectedHandler = RejectedEnum.CALLRUNSPOLICY;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否在关机时等待任务完成 ,默认为true
|
|
||||||
*/
|
|
||||||
private boolean waitForTasksToCompleteOnShutDown = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 阻止关机的最大秒数 ,默认10s
|
|
||||||
*/
|
|
||||||
private int awaitTerminationSeconds = 10;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化 核心线程数, 最大线程数, 以用户配置为主
|
|
||||||
*/
|
|
||||||
@PostConstruct
|
|
||||||
void init() {
|
|
||||||
if (coreSize <= 0) {
|
|
||||||
this.coreSize = Runtime.getRuntime().availableProcessors();
|
|
||||||
}
|
|
||||||
if (maxSize <= 0) {
|
|
||||||
this.maxSize = coreSize << 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 拒绝策略枚举
|
|
||||||
*/
|
|
||||||
public enum RejectedEnum {
|
|
||||||
/**
|
|
||||||
* 直接抛出异常
|
|
||||||
*/
|
|
||||||
ABORTPOLICY(new ThreadPoolExecutor.AbortPolicy()),
|
|
||||||
/**
|
|
||||||
* 交给当前run_thread 运行
|
|
||||||
*/
|
|
||||||
CALLRUNSPOLICY(new ThreadPoolExecutor.CallerRunsPolicy()),
|
|
||||||
/***
|
|
||||||
* 直接丢掉
|
|
||||||
*/
|
|
||||||
DISCARDPOLICY(new ThreadPoolExecutor.DiscardPolicy()),
|
|
||||||
/**
|
|
||||||
* 丢掉队列中排队时间最久的任务
|
|
||||||
*/
|
|
||||||
DISCARDOLDESTPOLICY(new ThreadPoolExecutor.DiscardOldestPolicy());
|
|
||||||
/**
|
|
||||||
* 线程池默认拒绝策略
|
|
||||||
*/
|
|
||||||
private RejectedExecutionHandler handler;
|
|
||||||
|
|
||||||
RejectedEnum(RejectedExecutionHandler handler) {
|
|
||||||
this.handler = handler;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public RejectedExecutionHandler getHandler() {
|
|
||||||
return handler;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHandler(RejectedExecutionHandler handler) {
|
|
||||||
this.handler = handler;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.java3y.austin.cron.csv;
|
||||||
|
|
||||||
|
import cn.hutool.core.text.csv.CsvRow;
|
||||||
|
import cn.hutool.core.text.csv.CsvRowHandler;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 3y
|
||||||
|
* @date 2022/3/10
|
||||||
|
* 统计当前文件有多少行
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CountFileRowHandler implements CsvRowHandler {
|
||||||
|
|
||||||
|
private long rowSize;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(CsvRow row) {
|
||||||
|
rowSize++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getRowSize() {
|
||||||
|
return rowSize;
|
||||||
|
}
|
||||||
|
}
|
@ -1,36 +0,0 @@
|
|||||||
package com.java3y.austin.support.config;
|
|
||||||
|
|
||||||
import com.dtp.common.em.QueueTypeEnum;
|
|
||||||
import com.dtp.core.support.ThreadPoolCreator;
|
|
||||||
import com.dtp.core.thread.DtpExecutor;
|
|
||||||
import com.dtp.core.thread.ThreadPoolBuilder;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
import java.util.concurrent.ThreadPoolExecutor;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Redick01
|
|
||||||
*/
|
|
||||||
@Configuration
|
|
||||||
public class ThreadPoolConfiguration {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public DtpExecutor dtpExecutor() {
|
|
||||||
|
|
||||||
return ThreadPoolCreator.createDynamicFast("dynamic-tp-test-1");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public ThreadPoolExecutor threadPoolExecutor() {
|
|
||||||
return ThreadPoolBuilder.newBuilder()
|
|
||||||
.threadPoolName("dynamic-tp-test-2")
|
|
||||||
.corePoolSize(10)
|
|
||||||
.maximumPoolSize(15)
|
|
||||||
.keepAliveTime(15000)
|
|
||||||
.timeUnit(TimeUnit.MILLISECONDS)
|
|
||||||
.workQueue(QueueTypeEnum.SYNCHRONOUS_QUEUE.getName(), null, false)
|
|
||||||
.buildDynamic();
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in new issue