網上搜了一些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。