lyhzzz 1 year ago
parent
commit
77ed056476

+ 8 - 0
README.md

@@ -0,0 +1,8 @@
+计算优先级规则
+1.设置四个计算队列,A,B,C,D 。
+2.A为常驻队列,B,C,D皆为弹性伸缩队列
+3.C,D计算优先级最高,无需排队,立即计算。其次是B,最后是A。
+4.可以自由调配未计算中的场景计算优先级,默认是B
+5.B每五分钟检测排队中的场景是否大于3个。是-开启一台新机器加入计算,否不进行操作。
+6.B,C每分钟进行一次检测,将(常驻机器数量-A待计算场景数量数量) 放置A中计算
+7.D为特殊队列,当app设置为128G场景时,和手动设置进入,无其他方式

+ 1 - 0
src/main/java/com/fdkankan/mqcontroller/service/IMqEcsService.java

@@ -23,4 +23,5 @@ public interface IMqEcsService extends IService<MqEcs> {
 
     void updateMqEcs(MqEcs mqEcs);
 
+    List<MqEcs> getNotUpEcs();
 }

+ 7 - 1
src/main/java/com/fdkankan/mqcontroller/service/impl/MqEcsServiceImpl.java

@@ -77,5 +77,11 @@ public class MqEcsServiceImpl extends ServiceImpl<IMqEcsMapper, MqEcs> implement
         this.update(wrapper);
     }
 
-
+    @Override
+    public List<MqEcs> getNotUpEcs() {
+        LambdaQueryWrapper<MqEcs> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(MqEcs::getIsScaling,1);
+        wrapper.isNull(MqEcs::getEcsName);
+        return this.list(wrapper);
+    }
 }

+ 7 - 0
src/main/java/com/fdkankan/mqcontroller/task/TaskService.java

@@ -226,6 +226,13 @@ public class TaskService {
                 countMap.merge(mqQueueConfig.getQueueName(), 1, Integer::sum);
 
                 log.info("openEcsList--开启弹性伸缩数量:{},{}",key,openList.size());
+                List<MqEcs> mqEcsList = mqEcsService.getNotUpEcs();
+                log.info("openEcsList--启动中的ecs数量为:{}",mqEcsList.size());
+                if(!mqEcsList.isEmpty()){
+                    log.info("openEcsList--有启动中的ecs,等待启动完毕执行。。。");
+                    openList.offer(take);
+                    return;
+                }
                 Boolean flag = createEcs( take.getMqScalingConfig());
                 if(flag){
                     mqEcsService.add(take.getQueueName());