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