Package com.taobao.zeus.broadcast.alarm

Source Code of com.taobao.zeus.broadcast.alarm.AbstractZeusAlarm

package com.taobao.zeus.broadcast.alarm;

import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import com.taobao.zeus.model.JobHistory;
import com.taobao.zeus.model.JobStatus.TriggerType;
import com.taobao.zeus.schedule.mvc.JobFailListener.ChainException;
import com.taobao.zeus.store.FollowManager;
import com.taobao.zeus.store.GroupManager;
import com.taobao.zeus.store.JobHistoryManager;
import com.taobao.zeus.store.UserManager;

public abstract class AbstractZeusAlarm implements ZeusAlarm{
  protected static Logger log=LoggerFactory.getLogger(AbstractZeusAlarm.class);
  @Autowired
  protected JobHistoryManager jobHistoryManager;
  @Autowired
  @Qualifier("followManager")
  protected FollowManager followManager;
  @Autowired
  @Qualifier("groupManager")
  protected GroupManager groupManager;
  @Autowired
  @Qualifier("userManager")
  protected UserManager userManager;
  @Override
  public void alarm(String historyId, String title, String content,ChainException chain)
      throws Exception {
    JobHistory history=jobHistoryManager.findJobHistory(historyId);
    TriggerType type=history.getTriggerType();
    String jobId=history.getJobId();
    List<String> users=new ArrayList<String>();
    if(type==TriggerType.SCHEDULE){
      users=followManager.findActualJobFollowers(jobId);
    }else{
      users.add(groupManager.getJobDescriptor(jobId).getX().getOwner());
      if(history.getOperator()!=null){
        if(!users.contains(history.getOperator())){
          users.add(history.getOperator());
        }
      }
    }
    List<String> result=new ArrayList<String>();
    if(chain==null){
      result=users;
    }else{
      for(String uid:users){
        Integer count=chain.getUserCountMap().get(uid);
        if(count==null){
          count=1;
          chain.getUserCountMap().put(uid, count);
        }
        if(count<20){//一个job失败,最多发给同一个人20个报警
          chain.getUserCountMap().put(uid, ++count);
          result.add(uid);
        }
      }
    }
    alarm(result, title, content);
  }
 
  @Override
  public void alarm(String historyId, String title, String content)
      throws Exception {
    alarm(historyId, title, content, null);
  }
  /**
   *
   * @param users 用户域账号id
   * @param title
   * @param content
   * @throws Exception
   */
  public abstract void alarm(List<String> users,String title,String content) throws Exception;

}
TOP

Related Classes of com.taobao.zeus.broadcast.alarm.AbstractZeusAlarm

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.