动态线程池 改造

pull/6/head
3y 2 years ago
parent 24c933275e
commit 3155dd9d76

@ -1,34 +0,0 @@
package com.java3y.austin.handler.config;
import cn.hutool.core.thread.ExecutorBuilder;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* 线
*
* @author 3y
*/
public class ThreadPoolConfig {
/**
* @param coreSize
* @param maxSize
* @param queueSize CallerRunsPolicy
* @return
*/
public static ExecutorService getThreadPool(Integer coreSize, Integer maxSize, Integer queueSize) {
return ExecutorBuilder.create()
.setCorePoolSize(coreSize)
.setMaxPoolSize(maxSize)
.setKeepAliveTime(60, TimeUnit.SECONDS)
.setWorkQueue(new LinkedBlockingQueue<>(queueSize))
.setHandler(new ThreadPoolExecutor.CallerRunsPolicy())
.build();
}
}

@ -1,6 +1,7 @@
package com.java3y.austin.handler.pending;
import com.dtp.common.em.QueueTypeEnum;
import com.dtp.common.em.RejectedTypeEnum;
import com.dtp.core.DtpRegistry;
import com.dtp.core.thread.DtpExecutor;
import com.dtp.core.thread.ThreadPoolBuilder;
@ -14,11 +15,11 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
/**
* TaskPending
*
* @author 3y
*/
@Component
@ -27,18 +28,12 @@ public class TaskPendingHolder {
@Autowired
private ThreadPoolExecutorShutdownDefinition threadPoolExecutorShutdownDefinition;
@Autowired
private SpringUtils springUtils;
@Autowired
private DtpRegistry dtpRegistry;
/**
* 线
* 线()
*/
private Integer coreSize = 3;
private Integer maxSize = 3;
private Integer coreSize = 2;
private Integer maxSize = 2;
private Integer queueSize = 100;
private Map<String, ExecutorService> taskPendingHolder = new HashMap<>(32);
@ -46,30 +41,35 @@ public class TaskPendingHolder {
* groupId
*/
private static List<String> groupIds = GroupIdMappingUtils.getAllGroupIds();
/**
* 线
*
* TODO groupId 线
*
*/
@PostConstruct
public void init() {
/**
* example ThreadPoolName:austin-im.notice
*
* apollodynamic-tp-apollo-dtp.yml 线
*/
for (String groupId : groupIds) {
DtpExecutor dtpExecutor = ThreadPoolBuilder.newBuilder()
.threadPoolName("austin-" + groupId)
.corePoolSize(10)
.maximumPoolSize(15)
.keepAliveTime(15000)
.timeUnit(TimeUnit.MILLISECONDS)
.workQueue(QueueTypeEnum.SYNCHRONOUS_QUEUE.getName(), null, false)
.corePoolSize(coreSize)
.maximumPoolSize(maxSize)
.workQueue(QueueTypeEnum.LINKED_BLOCKING_QUEUE.getName(), queueSize, false)
.rejectedExecutionHandler(RejectedTypeEnum.CALLER_RUNS_POLICY.getName())
.buildDynamic();
DtpRegistry.register(dtpExecutor, "beanPostProcessor");
threadPoolExecutorShutdownDefinition.registryExecutor(dtpExecutor);
taskPendingHolder.put(groupId, dtpExecutor);
}
}
/**
* 线
*
* @param groupId
* @return
*/

@ -3,8 +3,6 @@ package com.java3y.austin.support.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
@ -28,7 +26,7 @@ public class ThreadPoolExecutorShutdownDefinition implements ApplicationListener
/**
* 线 线
*/
private final long AWAIT_TERMINATION = 60;
private final long AWAIT_TERMINATION = 20;
/**
* awaitTermination
@ -36,14 +34,6 @@ public class ThreadPoolExecutorShutdownDefinition implements ApplicationListener
private final TimeUnit TIME_UNIT = TimeUnit.SECONDS;
public void registryExecutor(ThreadPoolTaskExecutor threadPoolTaskExecutor) {
POOLS.add(threadPoolTaskExecutor.getThreadPoolExecutor());
}
public void registryExecutor(ThreadPoolTaskScheduler threadPoolTaskExecutor) {
POOLS.add(threadPoolTaskExecutor.getScheduledThreadPoolExecutor());
}
public void registryExecutor(ExecutorService executor) {
POOLS.add(executor);
}

@ -80,7 +80,7 @@ xxl.job.accessToken=
##################### apollo #####################
app.id=austin
apollo.bootstrap.enabled=true
apollo.bootstrap.namespaces=boss.austin
apollo.bootstrap.namespaces=boss.austin,dynamic-tp-apollo-dtp.yml
##################### httpUtils properties #####################
ok.http.connect-timeout=30

Loading…
Cancel
Save