-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TTL 装饰的线程池无法执行等待任务完成插件 #990
Comments
这种外部引用被 spring 管理,但是内部的引用没有被 spring 管理的情况应该都会导致关闭的时候不能自动等待任务完成。不知其他第三方适配的线程池是否也存在这个问题? |
该功能是为了适配创建线程池 Bean时,可以在声明返回类型时使用 TTL 修饰或者 Spring 线程池,接口实现参考 :
|
我的描述可能存在一点问题,我重新理解然后组织一下语言。 首先,这个问题的直接原因,可能是外部对象被 spring 管理,但是内部的 我的意思是,如果确实是因为这个原因的话,其他像 |
将动态线程池注册为bean并不是很好的方法,因为内部的线程池并不应该被强制加入到容器中,这会导致容器中出现用户无法第一时间感知的数据 |
我也觉得这或许不是一个好的想法,换个角度,如果只是为了销毁外部 bean 的时候仍然能保证内部对象依然能够触发 比如我们现在有一个被 spring 管理的 不知道这个方案是否可行? |
方案我是觉得没问题的,实施起来怎么样呢?尽量不要过多侵入原有流程。 |
这周有时间我提个 pr 试试吧,如果后处理器这个方案可行,应该是完全不会影响到现有流程的 |
貌似发现了另一个问题。
解决方案目前最简单粗暴的就是直接让 |
可以的。不过我提供另外一种思路,看看是否可行。 既然已经是尽可能执行任务,那么是否报警是否还有必要。如果认为没有必要, 可以看下两种方案哪种可行。 |
感觉你说的这个方案改动量比较小,前一个方案可能还得考虑一下告警那边的问题,出于保险先用直接 catch 一下吧 |
创建线程池代码如下:
该代码只是把 TTL 对应的
TtlExecutors.getTtlExecutor
创建为 SpringBean,内部的动态线程池并没有注册为 SpringBean,导致无法执行等待任务完成插件。修改建议:
将 TTL 内部持有的动态线程池对象注册为 SpringBean。
The text was updated successfully, but these errors were encountered: