package io.anyway.hera.collector; import io.anyway.hera.service.NonMetricService; import org.springframework.beans.factory.DisposableBean; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import java.util.List; import java.util.Timer; import java.util.TimerTask; /** * Created by yangzz on 16/8/19. */ import org.springframework.stereotype.Component; @NonMetricService public class MetricCollectorTimer extends TimerTask implements ApplicationListener<ContextRefreshedEvent>,DisposableBean { private Timer timer; private int delay= 5000; private int period= 5000; private List<MetricCollector> collectors; public void setDelay(int delay) { this.delay = delay; } public void setPeriod(int period) { this.period = period; } public void setCollectors(List<MetricCollector> collectors){ this.collectors= collectors; } @Override public void run(){ for (MetricCollector each : collectors) { try { each.doCollect(); }catch(Throwable e){ //continue; } } } @Override public void destroy() throws Exception { if(timer!=null) { timer.cancel(); } } @Override public void onApplicationEvent(ContextRefreshedEvent event) { if(timer== null) { timer = new Timer(); //系统初始化完毕自动采集监控信息 timer.schedule(this, delay, period); } } }