网上搜了一些dubbo线程池监控的资料, 没有一个好用的。
自己去翻源码, 分享一个拿到dubbo provider侧线程池的方法。
@Value("${dubbo.protocol.port:20880}") private Integer port;
public ThreadPoolExecutor getDubboThreadPool(){ ExecutorRepository executorRepository = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension(); URL url = new URL(null, null, port); ExecutorService executor = executorRepository.getExecutor(url); if(null == executor) return null; return (ThreadPoolExecutor) executor; }
核心都在getExecutor里, 有兴趣自己看看,没兴趣就直接用吧。
需要注意的是,应用启动的时候 这个方法可能返回 null。