diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/health/HealthExecutor.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/health/HealthExecutor.java
index be21f14f..c43bc984 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/health/HealthExecutor.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/health/HealthExecutor.java
@@ -50,6 +50,8 @@ public class HealthExecutor {
public void execute(AbstractHealthCheckService service) {
final long startTime = System.currentTimeMillis();
+ //TODO: execute is called by a ScheduledThreadPoolExecutor,
+ // when called, it should check if current service should doCheck(check service check rate can be dynamically configured).
try {
memoryCache.update(service.getConfig().getHealthCheckResourceType(), service.getConfig().getInstanceId(), HealthCheckStatus.CHECKING, "",
null, service.getConfig());
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/health/HealthService.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/health/HealthService.java
index 69eaf171..d8b395d5 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/health/HealthService.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/health/HealthService.java
@@ -17,6 +17,8 @@
package org.apache.eventmesh.dashboard.console.health;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
import org.apache.eventmesh.dashboard.console.health.annotation.HealthCheckType;
import org.apache.eventmesh.dashboard.console.health.check.AbstractHealthCheckService;
import org.apache.eventmesh.dashboard.console.health.check.config.HealthCheckObjectConfig;
@@ -36,8 +38,8 @@
/**
* HealthService is the manager of all health check services. It is responsible for creating, deleting and executing health check services.
In
- * this class has a {@link HealthExecutor} which is used to execute health check services, and also a map to store all health check services. when the
- * function executeAll is called, health check service will be executed by {@link HealthExecutor}.
+ * this class there is a {@link HealthExecutor} which is used to execute health check services, and also a map to store all health check services.
+ * when the function executeAll is called, health check service will be executed by {@link HealthExecutor}.
*/
@Slf4j
public class HealthService {
@@ -67,6 +69,8 @@ private static void setClassCache(Class> clazz) {
*/
private Map> checkServiceMap = new ConcurrentHashMap<>();
+ private ScheduledThreadPoolExecutor scheduledExecutor;
+
public void insertCheckService(List configList) {
configList.forEach(this::insertCheckService);
}
@@ -141,4 +145,23 @@ private AbstractHealthCheckService createCheckService(Class> clazz, HealthChec
Constructor> constructor = clazz.getConstructor(HealthCheckObjectConfig.class);
return (AbstractHealthCheckService) constructor.newInstance(config);
}
+
+ /**
+ * start scheduled execution of health check services
+ *
+ * @param initialDelay unit is second
+ * @param period unit is second
+ */
+ public void startScheduledExecution(long initialDelay, long period) {
+ if (scheduledExecutor == null) {
+ scheduledExecutor = new ScheduledThreadPoolExecutor(1);
+ }
+ scheduledExecutor.scheduleAtFixedRate(this::executeAll, initialDelay, period, TimeUnit.SECONDS);
+ }
+
+ public void stopScheduledExecution() {
+ if (scheduledExecutor != null) {
+ scheduledExecutor.shutdown();
+ }
+ }
}
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/spring/support/FunctionManager.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/spring/support/FunctionManager.java
new file mode 100644
index 00000000..7535c95f
--- /dev/null
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/spring/support/FunctionManager.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.eventmesh.dashboard.console.spring.support;
+
+import lombok.Getter;
+import org.apache.eventmesh.dashboard.console.health.CheckResultCache;
+import org.apache.eventmesh.dashboard.console.health.HealthService;
+import org.apache.eventmesh.dashboard.console.service.health.HealthDataService;
+
+import lombok.Setter;
+
+/**
+ * FunctionManager is in charge of tasks such as scheduled health checks
+ */
+public class FunctionManager {
+
+ @Setter
+ private FunctionManagerProperties properties;
+
+ @Getter
+ private HealthService healthService;
+
+ @Setter
+ private HealthDataService healthDataService;
+
+ public void initFunctionManager() {
+ // HealthService Initialization
+ healthService = new HealthService();
+ CheckResultCache checkResultCache = new CheckResultCache();
+ healthService.createExecutor(healthDataService, checkResultCache);
+ healthService.startScheduledExecution(5, 5);
+ }
+}
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/spring/support/FunctionManagerBean.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/spring/support/FunctionManagerBean.java
new file mode 100644
index 00000000..a149479c
--- /dev/null
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/spring/support/FunctionManagerBean.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.eventmesh.dashboard.console.spring.support;
+
+import javax.annotation.PostConstruct;
+import org.apache.eventmesh.dashboard.console.health.HealthService;
+import org.apache.eventmesh.dashboard.console.service.health.HealthDataService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+@Component
+public class FunctionManagerBean {
+
+ private FunctionManager functionManager;
+
+ private FunctionManagerProperties properties;
+
+ @Autowired
+ private HealthDataService healthDataService;
+
+ @Bean
+ public HealthService getHealthService() {
+ return functionManager.getHealthService();
+ }
+
+ @PostConstruct
+ void initManager() {
+ functionManager = new FunctionManager();
+ functionManager.setProperties(properties);
+ functionManager.setHealthDataService(healthDataService);
+ functionManager.initFunctionManager();
+ }
+}
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/spring/support/FunctionManagerProperties.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/spring/support/FunctionManagerProperties.java
new file mode 100644
index 00000000..5709dc1f
--- /dev/null
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/spring/support/FunctionManagerProperties.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.eventmesh.dashboard.console.spring.support;
+
+public class FunctionManagerProperties {
+
+}