SpringBoot2_Nacos_DynamicTp教程

🚀 Spring Boot 2.x 集成 DynamicTp + Nacos 实现动态线程池管理(超详细教程)

完整代码参考gitee:https://gitee.com/xizhyu66/dynamictp-lab

📖 一、什么是 DynamicTp

DynamicTp(Dynamic Thread Pool) 是 Dromara 社区开源的一款 动态可监控线程池框架
它可以在系统运行时通过配置中心(如 Nacos、Apollo 等)动态调整线程池参数,
并支持 监控、报警、可视化 管理,适合企业级应用中需要稳定性与灵活运维的场景。

核心能力:

  • ✅ 动态修改线程池参数(coreSize、maxSize、队列容量、拒绝策略等)
  • ✅ 线程池运行时监控与指标采集(Micrometer/Logging/Endpoint)
  • ✅ 告警通知(钉钉 / 飞书 / 企业微信 / 邮件)
  • ✅ 支持第三方组件线程池:Dubbo、RocketMQ、Tomcat、Netty 等
  • ✅ 无缝集成 Spring Boot + Nacos

🧩 二、Maven 依赖引入

在项目的 pom.xml 中引入 DynamicTp 相关依赖。

⚠️ 注意:Spring Boot 2.x 使用 1.2.2 版本,Spring Boot 3.x 请使用 1.2.2-x

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.dromara.dynamictp</groupId>
      <artifactId>dynamic-tp-dependencies</artifactId>
      <version>1.2.2</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <!-- Nacos 集成版本 -->
  <dependency>
    <groupId>org.dromara.dynamictp</groupId>
    <artifactId>dynamic-tp-spring-boot-starter-nacos</artifactId>
  </dependency>
  
  <!-- 可选:监控指标(Prometheus) -->
  <!--
  <dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
  </dependency>
  -->
</dependencies>

⚙️ 三、在 Nacos 中创建线程池配置

新建一个配置文件(dataId 示例):

Data ID: user-center-dtp-dev.yml
Group: DEFAULT_GROUP

内容如下(可直接复制):

dynamictp:
  enabled: true
  enabledCollect: true
  collectorTypes: micrometer,logging
  logPath: /home/logs/dynamictp/user-center/
  monitorInterval: 5   # 秒,监控周期

  # === 告警通知配置 ===
  platforms:
    - platform: wechat
      platformId: 1
      urlKey: <your-wecom-webhook-key>
      receivers: zhangsan,lisi
    - platform: ding
      platformId: 2
      urlKey: <your-dingtalk-access-token>
      secret: <ding-secret>
      receivers: 18800000000
    - platform: email
      platformId: 3
      receivers: a@xx.com,b@xx.com

  # === 全局默认线程池参数(可被具体线程池覆盖)===
  globalExecutorProps:
    rejectedHandlerType: CallerRunsPolicy
    queueType: VariableLinkedBlockingQueue
    waitForTasksToCompleteOnShutdown: true
    awaitTerminationSeconds: 3
    taskWrapperNames: ["ttl", "mdc"]
    queueTimeout: 300
    runTimeout: 300

  # === 线程池实例定义 ===
  executors:
    - threadPoolName: dtpExecutor1
      threadPoolAliasName: 订单核心池
      executorType: common
      corePoolSize: 6
      maximumPoolSize: 12
      queueCapacity: 2000
      queueType: VariableLinkedBlockingQueue
      rejectedHandlerType: CallerRunsPolicy
      keepAliveTime: 60
      threadNamePrefix: order-core
      allowCoreThreadTimeOut: false
      awaitTerminationSeconds: 5
      preStartAllCoreThreads: false
      runTimeout: 200
      queueTimeout: 100
      tryInterrupt: false
      taskWrapperNames: ["ttl","mdc"]
      notifyEnabled: true
      platformIds: [1,2,3]

🧾 四、应用配置 application.yml

在你的 Spring Boot 配置文件中加入 Nacos 拉取配置:

nacos:
  config:
    server-addr: 127.0.0.1:8848
    type: yaml
    data-ids: user-center-dev.yml,user-center-dtp-dev.yml
    auto-refresh: true
    group: DEFAULT_GROUP
    bootstrap:
      enable: true
      log-enable: true

🧠 五、启用 DynamicTp

在启动类上添加注解:

@SpringBootApplication
@EnableDynamicTp
public class AppApplication {
    public static void main(String[] args) {
        SpringApplication.run(AppApplication.class, args);
    }
}

在业务中使用线程池:

@Resource
private ThreadPoolExecutor dtpExecutor1;

public void placeOrder() {
    dtpExecutor1.execute(() -> {
        // your task
        System.out.println("订单处理逻辑...");
    });
}

📊 六、监控与告警

DynamicTp 支持多种监控方式:

监控类型说明
Micrometer集成 Prometheus / Grafana
Logging写入本地 JSON 日志文件
EndpointHTTP 接口实时查看(/actuator/dynamictp

你可在 Nacos 中配置:

collectorTypes: micrometer,logging,endpoint

然后在浏览器中访问:
http://localhost:8080/actuator/dynamictp 查看线程池运行状态。


🧯 七、常见问题与排查

问题原因解决方案
配置未生效dataId 未加载或 auto-refresh 未启用确认 bootstrap.enable=true
无法动态调整参数使用了普通 ThreadPoolExecutor 未纳管使用 @EnableDynamicTp 托管或注册 DtpExecutor
告警未发送webhook 配置错误检查 platform.urlKey
动态修改报错使用 LinkedBlockingQueue改为 VariableLinkedBlockingQueue

✅ 八、总结

DynamicTp 让线程池的运行参数、监控、告警全面可控,结合 Nacos 配置中心可实现线程池热更新 + 可视化管理,极大提升系统的可运维性与稳定性。

建议在生产环境中:

  • 使用 Prometheus + Grafana 监控池指标
  • 打开钉钉/微信告警,及时发现线程池阻塞问题
  • 为不同业务模块单独定义线程池,避免互相影响

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值