package com.sohu.cache.init; import com.sohu.cache.dao.MachineDao; import com.sohu.cache.entity.MachineInfo; import com.sohu.cache.machine.MachineCenter; import com.sohu.cache.util.ConstUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.Assert; import java.util.List; /** * 初始化,加载所有的host * * User: lingguo * Date: 14-6-12 * Time: 下午12:40 */ public class MachineInitLoad extends AsyncLoad{ private final Logger logger = LoggerFactory.getLogger(MachineInitLoad.class); private MachineCenter machineCenter; private MachineDao machineDao; public void init() { if (ConstUtils.IS_DEBUG) { logger.warn("isDebug=true return"); return; } executorService.submit(new Runnable() { @Override public void run() { try { initAsync(); } catch (Exception e) { logger.error(e.getMessage(), e); } } }); } /** * 为机器部署trigger,主要两类:统计机器的信息以及监控机器的状态 */ public void initAsync() { List<MachineInfo> machineInfoList = machineDao.getAllMachines(); for (MachineInfo machineInfo : machineInfoList) { long hostId = machineInfo.getId(); String ip = machineInfo.getIp(); Assert.hasText(ip); Assert.isTrue(hostId > 0); machineCenter.deployMachineCollection(hostId, ip); machineCenter.deployMachineMonitor(hostId, ip); if(machineInfo.getCollect() == 1) { machineCenter.deployServerCollection(hostId, ip); } } logger.info("init deploy all host and monitor done."); } public void setMachineCenter(MachineCenter machineCenter) { this.machineCenter = machineCenter; } public void setMachineDao(MachineDao machineDao) { this.machineDao = machineDao; } }