动态配置线程池参数 - 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可参考
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
