动态线程池 改造

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

@ -3,8 +3,6 @@ package com.java3y.austin.support.config;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextClosedEvent; 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.stereotype.Component;
import org.springframework.util.CollectionUtils; 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 * awaitTermination
@ -36,14 +34,6 @@ public class ThreadPoolExecutorShutdownDefinition implements ApplicationListener
private final TimeUnit TIME_UNIT = TimeUnit.SECONDS; 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) { public void registryExecutor(ExecutorService executor) {
POOLS.add(executor); POOLS.add(executor);
} }

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

Loading…
Cancel
Save