package guang.crawler.siteManager; import guang.crawler.centerConfig.CenterConfig; import guang.crawler.centerConfig.siteManagers.SiteManagerInfo; import guang.crawler.centerConfig.sitesConfig.SiteInfo; import guang.crawler.localConfig.LocalConfig; import guang.crawler.util.PropertiesHelper; import java.io.File; /** * 从站点管理器的本地配置文件中读取相关属性 * * @author sun * */ public class SiteConfig extends LocalConfig { private static SiteConfig config; public static SiteConfig me() { if (SiteConfig.config == null) { SiteConfig.config = new SiteConfig(); } return SiteConfig.config; } /** * 当前节点是否被分配了爬取的站点 */ private boolean dispatched = false; /** * 采集点 */ private SiteInfo siteToHandle; /** * 当前站点管理器的工作目录 */ private String workDir; /** * 作业超时的时间 */ private long jobTimeout = 5 * 60 * 1000; /** * 作业重试的次数 */ private int jobTryTime = 3; /** * 工作队列的清理时间间隔 */ private long queueCleanerPeriod = 100000; private boolean backTime = false; /** * 备份的版本号 */ private int backupVersion; /** * 备份的时间,默认设置为1个小时 */ private long backupPeriod = 3600000; private SiteManagerInfo siteManagerInfo; /** * json server的线程数量 */ private int jsonserverThreadNum = 20; private SiteConfig() { } public long getBackupPeriod() { return this.backupPeriod; } public int getBackupVersion() { return this.backupVersion; } @Override protected String[] getConfigResources() { return new String[] { "/conf/site-manager/site-manager.config" }; } public long getJobTimeout() { return this.jobTimeout; } public int getJobTryTime() { return this.jobTryTime; } public int getJsonserverThreadNum() { return this.jsonserverThreadNum; } public long getQueueCleanerPeriod() { return this.queueCleanerPeriod; } public SiteManagerInfo getSiteManagerInfo() { return this.siteManagerInfo; } public SiteInfo getSiteToHandle() { return this.siteToHandle; } public String getWorkDir() { return this.workDir; } public SiteConfig init() throws SiteManagerException { this.initWorkDir(); try { CenterConfig.me() .init(this.getZookeeperQuorum()); } catch (Exception e) { throw new SiteManagerException("No site to handle", e); } return this; } @Override protected void initProperties() { super.initProperties(); this.jobTimeout = PropertiesHelper.readLong(this.configProperties, "crawler.site-manager.job.timeout", this.jobTimeout); this.jobTryTime = PropertiesHelper.readInt(this.configProperties, "crawler.site-manager.job.tryTime", this.jobTryTime); this.queueCleanerPeriod = PropertiesHelper.readLong(this.configProperties, "crawler.site-manager.queue.cleaner.period", this.queueCleanerPeriod); this.backupPeriod = PropertiesHelper.readLong(this.configProperties, "crawler.site-manager.backuper.backup.period", this.backupPeriod); this.jsonserverThreadNum = PropertiesHelper.readInt(this.configProperties, "crawler.site-manager.jsonserver.threadNum", this.jsonserverThreadNum); } private void initWorkDir() { this.workDir = this.getCrawlerHome() + "/work"; File workdirFile = new File(this.workDir); workdirFile.mkdirs(); } public boolean isBackupTime() { return this.backTime; } public boolean isDispatched() { return this.dispatched; } public void setBackTime(final boolean backTime) { this.backTime = backTime; } public void setBackupVersion(final int backupVersion) { this.backupVersion = backupVersion; } public void setDispatched(final boolean isDispatched) { this.dispatched = isDispatched; } public void setSiteManagerInfo(final SiteManagerInfo siteManagerInfo) { this.siteManagerInfo = siteManagerInfo; } public void setSiteToHandle(final SiteInfo siteToHandle) { this.siteToHandle = siteToHandle; } }