Open shanhm1991 opened 3 months ago
首先感谢您使用 DynamicTp,如果对项目有好的想法建议,请按照下述模板提议讨论,建议使用 Markdown 语法。
解析DynamicTp时对bean这里做过滤,能不能直接支持Executor,不然使用 TtlExecutors.getTtlExecutor(taskExecutor); 装饰的线程池就被忽略了
@Override public Object postProcessAfterInitialization(@NonNull Object bean, @NonNull String beanName) throws BeansException { if (!(bean instanceof ThreadPoolExecutor) && !(bean instanceof ThreadPoolTaskExecutor)) { return bean; } if (bean instanceof DtpExecutor) { return registerAndReturnDtp(bean); } // register juc ThreadPoolExecutor or ThreadPoolTaskExecutor return registerAndReturnCommon(bean, beanName); }
如果想使用ttl,可以通过dynamic-top的包装器包装,支持TtlTaskWrapper
感谢回复,这个问题暂时规避了,改成了只包装里面的Runnable
public void execute(Runnable task) {
super.execute(TtlRunnable.get(task, false, true));
}
另外感觉有个问题,在DtpRunnable执行run时是不是应该将跟踪id值设置一下 MDC.put(TRACE_ID, traceId);
这里加了一个自己需要的跟踪id,不然任务线程打印日志中获取不到
感谢回复,这个问题暂时规避了,改成了只包装里面的Runnable
public void execute(Runnable task) { super.execute(TtlRunnable.get(task, false, true)); }
另外感觉有个问题,在DtpRunnable执行run时是不是应该将跟踪id值设置一下
MDC.put(TRACE_ID, traceId);
这里加了一个自己需要的跟踪id,不然任务线程打印日志中获取不到
MDC也有个包装器,MdcTaskWrapper可以使用,MDC.put应该属于业务处理,可以在execute之前put
这里是不是返回proxy更好(直接返回bean,虽然可以注入ThreadPoolTaskExecutor,但已经是一个被Terminated的实例)
本地话将返回改成了proxy,注入类型换成ThreadPoolExecutor,简单规避掉了问题
这里是不是返回proxy更好(直接返回bean,虽然可以注入ThreadPoolTaskExecutor,但已经是一个被Terminated的实例)
本地话将返回改成了proxy,注入类型换成ThreadPoolExecutor,简单规避掉了问题
Terminated 的是bean里面的threadPoolExecutor,返回之前已经通过反射将proxy设置到bean里了,所以返回bean没问题。而且proxy是个ThreadPoolExecutor,直接返回,原始类型是ThreadPoolTaskExecutor,会报类型转换错误
首先感谢您使用 DynamicTp,如果对项目有好的想法建议,请按照下述模板提议讨论,建议使用 Markdown 语法。
解析DynamicTp时对bean这里做过滤,能不能直接支持Executor,不然使用 TtlExecutors.getTtlExecutor(taskExecutor); 装饰的线程池就被忽略了