动态配置线程池参数 - dynamic-tp

官网接入指南:

https://dynamictp.cn/guide/use/quick-start.html

1.新建一个spirng boot项目

java
复制代码
<properties> // jdk 版本为 1.8 <java.version>1.8</java.version> // spring boot版本为2.6.13 <spring-boot.version>2.6.13</spring-boot.version> </properties>

2.导入dynamictp依赖

java
复制代码
// SpringBoot1x、2x 用此依赖 <dependency> <groupId>org.dromara.dynamictp</groupId> <artifactId>dynamic-tp-spring-boot-starter-adapter-rocketmq</artifactId> <version>1.1.9.1</version> </dependency>

3.在启动类中开启dynamictp

java
复制代码
package com.example.demo; import org.dromara.dynamictp.core.spring.EnableDynamicTp; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication // 开启自动配置线程池参数 @EnableDynamicTp public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
java
复制代码
2024-12-13 23:20:17.924 INFO 14024 --- [ main] org.dromara.dynamictp.core.DtpRegistry : DynamicTp register executor: TpMainFields(threadPoolName=dtpExecutor1, corePoolSize=20, maxPoolSize=40, keepAliveTime=60, queueType=VariableLinkedBlockingQueue, queueCapacity=1000, rejectType=CallerRunsPolicy, allowCoreThreadTimeOut=false), source: beanPostProcessor 2024-12-13 23:20:17.925 INFO 14024 --- [ main] org.dromara.dynamictp.core.DtpRegistry : DynamicTp register executor: TpMainFields(threadPoolName=threadPoolTaskExecutor, corePoolSize=20, maxPoolSize=40, keepAliveTime=400, queueType=VariableLinkedBlockingQueue, queueCapacity=1000, rejectType=CallerRunsPolicy, allowCoreThreadTimeOut=false), source: beanPostProcessor 2024-12-13 23:20:17.942 INFO 14024 --- [ main] o.d.d.core.support.DtpBannerPrinter : | __ (_) |__ __| | | | |_ _ _ __ __ _ _ __ ___ _ ___| |_ __ | | | | | | | '_ / _` | '_ ` _ | |/ __| | '_ | |__| | |_| | | | | (_| | | | | | | | (__| | |_) | |_____/ __, |_| |_|__,_|_| |_| |_|_|___|_| .__/ __/ | | | |___/ |_| :: Dynamic Thread Pool :: :: 1.1.9.1 :: :: https://dynamictp.cn :: :: https://github.com/dromara/dynamic-tp :: :: https://gitee.com/dromara/dynamic-tp ::

看见dynamictp 的启动帧栈信息和banner图代表启动成功

4.修改application.yml文件

java
复制代码
server: port: 8080 #优雅停机 shutdown: graceful spring: dynamic: tp: #全局线程池配置 globalExecutorProps: #线程池的拒绝策略 rejectedHandlerType: CallerRunsPolicy #线程池的阻塞队列 这里使用的是LinkedBlockingQueue克隆版本具体可看源码注释 queueType: VariableLinkedBlockingQueue #线程池关闭后是否等待现有任务完成后关闭线程池 waitForTasksToCompleteOnShutdown: true # 线程池等待所有任务完成(或超时)的最长等待时间(以秒为单位) awaitTerminationSeconds: 3 executors: - threadPoolName: dtpExecutor1 corePoolSize: 20 maximumPoolSize: 40 queueCapacity: 1000

在yml配置了哪些东西

1.globalExecutorProps:为了简化,线程池配置,dynamictp在globalExecutorProps里面可以配置全局的线程池配置。配置的优先级为线程池配置 > 全局配置 > 字段默认值

2.executors:自定义线程池配置,在里面初始化一个dtpExecutor1线程池

单元测试:

java
复制代码
package com.example.demo; import org.dromara.dynamictp.core.executor.DtpExecutor; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; import java.util.concurrent.TimeUnit; @SpringBootTest class DemoApplicationTests { @Resource private DtpExecutor dtpExecutor1; @Test void test() { System.out.println("以配置文件的方式创建的自定义线程池"); System.out.println(dtpExecutor1.getThreadPoolName()); System.out.println(dtpExecutor1.getCorePoolSize()); System.out.println(dtpExecutor1.getMaximumPoolSize()); System.out.println(dtpExecutor1.getQueueCapacity()); } }

控制台输出

java
复制代码
以配置文件的方式创建的自定义线程池 dtpExecutor1 20 40 1000

关于更多dynamic-tp可参考

https://dynamictp.cn/guide/introduction/background.html

https://gitee.com/dromara/dynamic-tp

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP