From d94476b65ffebe493ae03e11d565addd389e3f3b Mon Sep 17 00:00:00 2001 From: CaptainB Date: Thu, 21 Apr 2022 12:08:01 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BF=AE=E6=94=B9=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=AD=90=E7=B1=BB=E7=9A=84=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/consumer/LoadTestConsumer.java | 14 ++++++++++++-- .../performance/engine/EngineFactory.java | 12 +++++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/io/metersphere/commons/consumer/LoadTestConsumer.java b/backend/src/main/java/io/metersphere/commons/consumer/LoadTestConsumer.java index 97038f96b2..e1013c56a2 100644 --- a/backend/src/main/java/io/metersphere/commons/consumer/LoadTestConsumer.java +++ b/backend/src/main/java/io/metersphere/commons/consumer/LoadTestConsumer.java @@ -18,11 +18,12 @@ import java.util.Set; public class LoadTestConsumer { public static final String CONSUME_ID = "load-test-data"; + private static Set> subTypes; + @KafkaListener(id = CONSUME_ID, topics = "${kafka.test.topic}", groupId = "${spring.kafka.consumer.group-id}") public void consume(ConsumerRecord record) { LoadTestReport loadTestReport = JSON.parseObject(record.value(), LoadTestReport.class); - Reflections reflections = new Reflections(Application.class); - Set> subTypes = reflections.getSubTypesOf(LoadTestFinishEvent.class); + Set> subTypes = getClasses(); subTypes.forEach(s -> { try { CommonBeanFactory.getBean(s).execute(loadTestReport); @@ -31,4 +32,13 @@ public class LoadTestConsumer { } }); } + + private Set> getClasses() { + if (subTypes != null) { + return subTypes; + } + Reflections reflections = new Reflections(Application.class); + subTypes = reflections.getSubTypesOf(LoadTestFinishEvent.class); + return subTypes; + } } diff --git a/backend/src/main/java/io/metersphere/performance/engine/EngineFactory.java b/backend/src/main/java/io/metersphere/performance/engine/EngineFactory.java index c0af7b8b76..05ff5df1bc 100644 --- a/backend/src/main/java/io/metersphere/performance/engine/EngineFactory.java +++ b/backend/src/main/java/io/metersphere/performance/engine/EngineFactory.java @@ -31,7 +31,6 @@ import org.reflections8.Reflections; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -47,8 +46,10 @@ public class EngineFactory { private static TestResourcePoolService testResourcePoolService; private static Class kubernetesTestEngineClass; - @PostConstruct - public void init() { + public static Class getKubernetesTestEngineClass() { + if (kubernetesTestEngineClass != null) { + return kubernetesTestEngineClass; + } Reflections reflections = new Reflections(Application.class); Set> implClass = reflections.getSubTypesOf(KubernetesTestEngine.class); for (Class aClass : implClass) { @@ -56,6 +57,7 @@ public class EngineFactory { // 第一个 break; } + return kubernetesTestEngineClass; } public static Engine createEngine(LoadTestReportWithBLOBs loadTestReport) { @@ -79,7 +81,7 @@ public class EngineFactory { } if (type == ResourcePoolTypeEnum.K8S) { try { - return (Engine) ConstructorUtils.invokeConstructor(kubernetesTestEngineClass, loadTestReport); + return (Engine) ConstructorUtils.invokeConstructor(getKubernetesTestEngineClass(), loadTestReport); } catch (Exception e) { LogUtil.error(e); return null; @@ -90,7 +92,7 @@ public class EngineFactory { public static Engine createApiEngine(JmeterRunRequestDTO runRequest) { try { - return (Engine) ConstructorUtils.invokeConstructor(kubernetesTestEngineClass, runRequest); + return (Engine) ConstructorUtils.invokeConstructor(getKubernetesTestEngineClass(), runRequest); } catch (Exception e) { LogUtil.error(e); MSException.throwException(e.getMessage());