dromara / dynamic-tp

🔥🔥🔥轻量级动态线程池,内置监控告警功能,集成三方中间件线程池管理,基于主流配置中心(已支持Nacos、Apollo,Zookeeper、Consul、Etcd,可通过SPI自定义实现)。Lightweight dynamic threadpool, with monitoring and alarming functions, base on popular config centers (already support Nacos、Apollo、Zookeeper、Consul, can be customized through SPI).
https://dynamictp.cn
Apache License 2.0
3.87k stars 775 forks source link

线程池未注册成功 #242

Closed sweetcard closed 1 year ago

sweetcard commented 1 year ago

首先感谢您使用 DynamicTp,如果使用过程中有任何问题,请按照下述模板反馈问题,建议使用 Markdown 语法

版本信息

问题描述

文字描述、截图、粘代码方式

解决办法: 把构造函数的线程池依赖设置为@Lazy或者改为@Resource依赖。 或者将DtpPostProcessor的优先级提到PriorityOrdered(未验证)

复现步骤

  1. 使用构造函数注入,打开监控;
  2. 查看监控信息,或者通过DtpRegistry.getDtpExecutor("asyncExecutor")获取;
  3. demo请参考: https://github.com/sweetcard/dptbugdemo

其他信息

  1. xxx
  2. xxx
yanhom1314 commented 1 year ago

感谢反馈,可以补充下复现步骤

sweetcard commented 1 year ago

感谢反馈,可以补充下复现步骤

在代码描述里面比较清楚。看看有没有哪些需要补充的

KamToHung commented 1 year ago

感谢反馈,可以补充下复现步骤

在代码描述里面比较清楚。看看有没有哪些需要补充的

可以补充个demo吗,附上链接

sweetcard commented 1 year ago

感谢反馈,可以补充下复现步骤

在代码描述里面比较清楚。看看有没有哪些需要补充的

可以补充个demo吗,附上链接 https://github.com/sweetcard/dptbugdemo

具体原因进一步搞清楚了。 是因为一个Aop Advisor间接依赖于线程池asyncExecutor。导致了该线程池被提升了优先级,提前被初始化了。 Aop的优先级是Ordered.HIGHEST_PRECEDENCE,所以线程池也被提前初始化了。

可能的解决办法:

KamToHung commented 1 year ago

@yanhom1314 @sweetcard see pr #245