package com.taobao.zeus.jobs.sub.tool; import java.util.Date; import net.sf.json.JSONObject; import org.springframework.context.ApplicationContext; import com.taobao.zeus.broadcast.notify.ZKResultNotify; import com.taobao.zeus.jobs.AbstractJob; import com.taobao.zeus.jobs.JobContext; import com.taobao.zeus.model.processer.ZooKeeperProcesser; public class ZooKeeperJob extends AbstractJob{ private ZKResultNotify zkResultNotify; private ZooKeeperProcesser processer; public ZooKeeperJob(JobContext jobContext,ZooKeeperProcesser processer,ApplicationContext applicationContext) { super(jobContext); this.processer=processer; this.zkResultNotify=(ZKResultNotify)applicationContext.getBean("zkResultNotify"); } @Override public Integer run() throws Exception { Integer exitCode=0; try { Boolean data=jobContext.getCoreExitCode()==0?true:false; if(processer==null){ JSONObject content=new JSONObject(); content.put("id",getJobContext().getJobHistory().getJobId()); content.put("historyId", getJobContext().getJobHistory().getId()); content.put("status", jobContext.getCoreExitCode()==0?true:false); content.put("time", new Date().getTime()); zkResultNotify.send(jobContext.getJobHistory().getId(), content.toString()); }else{ String host=processer.getHost(); String path=processer.getPath(); log("开始通知ZooKeeper host:"+host+",path:"+path); zkResultNotify.send(host, path, data.toString()); log("ZooKeeper通知完成"); } } catch (Exception e) { exitCode=-1; log("ZK通知发送失败"); log(e); } return exitCode; } @Override public void cancel() { canceled=true; } }