背景
最近项目的一个需求,要求新建一个演练任务向某个主机发起调用攻击指令,同时等待对方主机告警信息同步到本机数据库表上后,将当前演练任务必须关联上告警信息id
思考
因为涉及多个动作,且中间等待对方主机同步告警信息,这个过程有可能需要1分钟左右,如果串行多个方法,前端很可能就需要1分钟才得到返回结果,然后才弹出的提示框提示“操作成功”,这正常人肯定是不会这样子做的。所以这需要一个异步处理,将发起攻击指令为一个动作,然后等待告警信息同步且关联这一动作放进一个线程里面去
例子
public void callURL(param1,param2,...){
attackMethod();//发起攻击函数
//启动获取关联告警信息的id和alertid线程
ReheaserseThread thread = new ReheaserseThread(rehearseHome.getIpAddress(),rehearseHome.getId(),account);
Thread t1 = new Thread(thread);
t1.start();
}
//线程类
public class ReheaserseThread implements Runnable {
private Long id;
private String ip;
private String account;
public ReheaserseThread(String ip,Long id,String account) {
this.id = id;
this.ip = ip;
this.account = account;
}
public void run() {
getAlertListIdAndAlertId(ip,id,account);
}
}
扩展思路
等待告警信息同步且关联这一步可以写一个定时器获取刚同步的告警信息,然后关联,并且修改告警信息状态为已关联