From faa63c322f77cd6ce736aceee26a08373e3c3f59 Mon Sep 17 00:00:00 2001 From: mytang0 Date: Thu, 25 Apr 2024 10:30:22 +0800 Subject: [PATCH] Optimize configuration acquisition method --- .../xyz/mytang0/brook/core/FlowExecutor.java | 19 +++++---- .../brook/core/service/FlowLogService.java | 7 +--- .../controller/FlowMetadataController.java | 7 +--- .../metadata/http/HTTPMetadataConfig.java | 2 + .../metadata/http/HTTPMetadataService.java | 16 +++---- .../xyz/mytang0/brook/task/http/HTTPTask.java | 42 ++++++++++--------- .../brook/task/http/HTTPTaskConfig.java | 2 + .../brook/spi/config/ConfiguratorFacade.java | 20 +++++++++ 8 files changed, 69 insertions(+), 46 deletions(-) create mode 100644 brook-spi/src/main/java/xyz/mytang0/brook/spi/config/ConfiguratorFacade.java diff --git a/brook-core/src/main/java/xyz/mytang0/brook/core/FlowExecutor.java b/brook-core/src/main/java/xyz/mytang0/brook/core/FlowExecutor.java index 17a59ff..c16ffff 100644 --- a/brook-core/src/main/java/xyz/mytang0/brook/core/FlowExecutor.java +++ b/brook-core/src/main/java/xyz/mytang0/brook/core/FlowExecutor.java @@ -41,7 +41,7 @@ import xyz.mytang0.brook.spi.cache.FlowCache; import xyz.mytang0.brook.spi.cache.FlowCacheFactory; import xyz.mytang0.brook.spi.computing.EngineActuator; -import xyz.mytang0.brook.spi.config.Configurator; +import xyz.mytang0.brook.spi.config.ConfiguratorFacade; import xyz.mytang0.brook.spi.execution.ExecutionDAO; import xyz.mytang0.brook.spi.executor.ExecutorFactory; import xyz.mytang0.brook.spi.metadata.MetadataService; @@ -111,17 +111,14 @@ public class FlowExecutor { public FlowExecutor(FlowTaskRegistry flowTaskRegistry) { - Configurator configurator = ExtensionDirector - .getExtensionLoader(Configurator.class) - .getDefaultExtension(); this.flowLockFacade = new FlowLockFacade( - configurator.getConfig(LockProperties.class) + ConfiguratorFacade.getConfig(LockProperties.class) ); this.flowTaskRegistry = flowTaskRegistry; this.flowAspect = new FlowAspect(); this.taskAspect = new TaskAspect(); this.metadataService = new MetadataFacade( - configurator.getConfig(MetadataProperties.class) + ConfiguratorFacade.getConfig(MetadataProperties.class) ); this.engineActuator = ExtensionDirector .getExtensionLoader(EngineActuator.class) @@ -133,9 +130,13 @@ public FlowExecutor(FlowTaskRegistry flowTaskRegistry) { .getExtensionLoader(ExecutorFactory.class) .getDefaultExtension() .getExecutor(FLOW_STARTER); - this.queueProperties = configurator.getConfig(QueueProperties.class); - this.executionProperties = configurator.getConfig(ExecutionProperties.class); - this.delayedTaskMonitorProperties = configurator.getConfig(DelayedTaskMonitorProperties.class); + this.queueProperties = + ConfiguratorFacade.getConfig(QueueProperties.class); + this.executionProperties = + ConfiguratorFacade.getConfig(ExecutionProperties.class); + this.delayedTaskMonitorProperties = + ConfiguratorFacade.getConfig(DelayedTaskMonitorProperties.class); + DelayedTaskMonitor.init(this, flowLockFacade, delayedTaskMonitorProperties); } diff --git a/brook-core/src/main/java/xyz/mytang0/brook/core/service/FlowLogService.java b/brook-core/src/main/java/xyz/mytang0/brook/core/service/FlowLogService.java index 73bbf99..6960828 100644 --- a/brook-core/src/main/java/xyz/mytang0/brook/core/service/FlowLogService.java +++ b/brook-core/src/main/java/xyz/mytang0/brook/core/service/FlowLogService.java @@ -3,9 +3,8 @@ import lombok.Data; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.SystemUtils; -import xyz.mytang0.brook.common.extension.ExtensionDirector; import xyz.mytang0.brook.spi.config.ConfigProperties; -import xyz.mytang0.brook.spi.config.Configurator; +import xyz.mytang0.brook.spi.config.ConfiguratorFacade; import java.nio.file.Paths; @@ -16,9 +15,7 @@ public class FlowLogService { private final FlowLogProperties properties; public FlowLogService() { - this.properties = ExtensionDirector - .getExtensionLoader(Configurator.class) - .getDefaultExtension() + this.properties = ConfiguratorFacade .getConfig(FlowLogProperties.class); } diff --git a/brook-demo/brook-demo-spring/src/main/java/xyz/mytang0/brook/demo/controller/FlowMetadataController.java b/brook-demo/brook-demo-spring/src/main/java/xyz/mytang0/brook/demo/controller/FlowMetadataController.java index 7d4822c..89bfb21 100644 --- a/brook-demo/brook-demo-spring/src/main/java/xyz/mytang0/brook/demo/controller/FlowMetadataController.java +++ b/brook-demo/brook-demo-spring/src/main/java/xyz/mytang0/brook/demo/controller/FlowMetadataController.java @@ -8,11 +8,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import xyz.mytang0.brook.common.extension.ExtensionDirector; import xyz.mytang0.brook.common.metadata.definition.FlowDef; import xyz.mytang0.brook.core.metadata.MetadataFacade; import xyz.mytang0.brook.core.metadata.MetadataProperties; -import xyz.mytang0.brook.spi.config.Configurator; +import xyz.mytang0.brook.spi.config.ConfiguratorFacade; import javax.validation.Valid; @@ -24,9 +23,7 @@ public class FlowMetadataController { public FlowMetadataController() { this.metadataFacade = new MetadataFacade( - ExtensionDirector - .getExtensionLoader(Configurator.class) - .getDefaultExtension() + ConfiguratorFacade .getConfig(MetadataProperties.class) ); } diff --git a/brook-spi-extensions/brook-metadata-extensions/brook-metadata-http/src/main/java/xyz/mytang0/brook/metadata/http/HTTPMetadataConfig.java b/brook-spi-extensions/brook-metadata-extensions/brook-metadata-http/src/main/java/xyz/mytang0/brook/metadata/http/HTTPMetadataConfig.java index ba7db2e..9a16071 100644 --- a/brook-spi-extensions/brook-metadata-extensions/brook-metadata-http/src/main/java/xyz/mytang0/brook/metadata/http/HTTPMetadataConfig.java +++ b/brook-spi-extensions/brook-metadata-extensions/brook-metadata-http/src/main/java/xyz/mytang0/brook/metadata/http/HTTPMetadataConfig.java @@ -2,9 +2,11 @@ import xyz.mytang0.brook.common.utils.StringUtils; import lombok.Data; +import xyz.mytang0.brook.spi.config.ConfigProperties; import java.time.Duration; +@ConfigProperties(prefix = "brook.metadata.http") @Data public class HTTPMetadataConfig { diff --git a/brook-spi-extensions/brook-metadata-extensions/brook-metadata-http/src/main/java/xyz/mytang0/brook/metadata/http/HTTPMetadataService.java b/brook-spi-extensions/brook-metadata-extensions/brook-metadata-http/src/main/java/xyz/mytang0/brook/metadata/http/HTTPMetadataService.java index bbed241..5cb94db 100644 --- a/brook-spi-extensions/brook-metadata-extensions/brook-metadata-http/src/main/java/xyz/mytang0/brook/metadata/http/HTTPMetadataService.java +++ b/brook-spi-extensions/brook-metadata-extensions/brook-metadata-http/src/main/java/xyz/mytang0/brook/metadata/http/HTTPMetadataService.java @@ -1,11 +1,5 @@ package xyz.mytang0.brook.metadata.http; -import xyz.mytang0.brook.common.constants.Delimiter; -import xyz.mytang0.brook.common.extension.Disposable; -import xyz.mytang0.brook.common.extension.Selected; -import xyz.mytang0.brook.common.metadata.definition.FlowDef; -import xyz.mytang0.brook.common.utils.JsonUtils; -import xyz.mytang0.brook.spi.metadata.MetadataService; import com.fasterxml.jackson.core.type.TypeReference; import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; @@ -20,6 +14,13 @@ import org.apache.http.impl.nio.reactor.IOReactorConfig; import org.apache.http.protocol.HttpContext; import org.apache.http.util.EntityUtils; +import xyz.mytang0.brook.common.constants.Delimiter; +import xyz.mytang0.brook.common.extension.Disposable; +import xyz.mytang0.brook.common.extension.Selected; +import xyz.mytang0.brook.common.metadata.definition.FlowDef; +import xyz.mytang0.brook.common.utils.JsonUtils; +import xyz.mytang0.brook.spi.config.ConfiguratorFacade; +import xyz.mytang0.brook.spi.metadata.MetadataService; import java.io.IOException; import java.io.Serializable; @@ -57,7 +58,8 @@ public void cancelled() { private volatile Cache cache; public HTTPMetadataService() { - + this(ConfiguratorFacade + .getConfig(HTTPMetadataConfig.class)); } public HTTPMetadataService(final HTTPMetadataConfig config) { diff --git a/brook-spi-extensions/brook-task-extensions/brook-task-http/src/main/java/xyz/mytang0/brook/task/http/HTTPTask.java b/brook-spi-extensions/brook-task-extensions/brook-task-http/src/main/java/xyz/mytang0/brook/task/http/HTTPTask.java index 7fdae00..335773c 100644 --- a/brook-spi-extensions/brook-task-extensions/brook-task-http/src/main/java/xyz/mytang0/brook/task/http/HTTPTask.java +++ b/brook-spi-extensions/brook-task-extensions/brook-task-http/src/main/java/xyz/mytang0/brook/task/http/HTTPTask.java @@ -1,19 +1,5 @@ package xyz.mytang0.brook.task.http; -import xyz.mytang0.brook.common.configuration.ConfigOption; -import xyz.mytang0.brook.common.configuration.ConfigOptions; -import xyz.mytang0.brook.common.configuration.Configuration; -import xyz.mytang0.brook.common.constants.Delimiter; -import xyz.mytang0.brook.common.extension.Disposable; -import xyz.mytang0.brook.common.metadata.definition.TaskDef; -import xyz.mytang0.brook.common.metadata.enums.TaskStatus; -import xyz.mytang0.brook.common.metadata.instance.TaskInstance; -import xyz.mytang0.brook.common.utils.ExceptionUtils; -import xyz.mytang0.brook.common.utils.JsonUtils; -import xyz.mytang0.brook.common.utils.StringUtils; -import xyz.mytang0.brook.common.utils.token.TokenHandler; -import xyz.mytang0.brook.common.utils.token.TokenParser; -import xyz.mytang0.brook.spi.task.FlowTask; import org.apache.commons.collections4.MapUtils; import org.apache.http.Header; import org.apache.http.HttpEntity; @@ -40,6 +26,21 @@ import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HttpContext; import org.apache.http.util.EntityUtils; +import xyz.mytang0.brook.common.configuration.ConfigOption; +import xyz.mytang0.brook.common.configuration.ConfigOptions; +import xyz.mytang0.brook.common.configuration.Configuration; +import xyz.mytang0.brook.common.constants.Delimiter; +import xyz.mytang0.brook.common.extension.Disposable; +import xyz.mytang0.brook.common.metadata.definition.TaskDef; +import xyz.mytang0.brook.common.metadata.enums.TaskStatus; +import xyz.mytang0.brook.common.metadata.instance.TaskInstance; +import xyz.mytang0.brook.common.utils.ExceptionUtils; +import xyz.mytang0.brook.common.utils.JsonUtils; +import xyz.mytang0.brook.common.utils.StringUtils; +import xyz.mytang0.brook.common.utils.token.TokenHandler; +import xyz.mytang0.brook.common.utils.token.TokenParser; +import xyz.mytang0.brook.spi.config.ConfiguratorFacade; +import xyz.mytang0.brook.spi.task.FlowTask; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; @@ -58,6 +59,8 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; +import static org.apache.http.entity.ContentType.APPLICATION_FORM_URLENCODED; +import static org.apache.http.entity.ContentType.APPLICATION_JSON; import static xyz.mytang0.brook.task.http.HTTPTask.Options.BODY; import static xyz.mytang0.brook.task.http.HTTPTask.Options.CHARSET; import static xyz.mytang0.brook.task.http.HTTPTask.Options.HEADERS; @@ -67,8 +70,6 @@ import static xyz.mytang0.brook.task.http.HTTPTask.Options.STATUS_CODE; import static xyz.mytang0.brook.task.http.HTTPTask.Options.URI; import static xyz.mytang0.brook.task.http.HTTPTask.Options.VARIABLES; -import static org.apache.http.entity.ContentType.APPLICATION_FORM_URLENCODED; -import static org.apache.http.entity.ContentType.APPLICATION_JSON; public class HTTPTask implements FlowTask, Disposable { @@ -100,14 +101,15 @@ public void cancelled() { } }; - private volatile boolean uninitialized = true; + private final HTTPTaskConfig config; - private volatile HTTPTaskConfig config; + private volatile boolean uninitialized = true; private volatile CloseableHttpAsyncClient httpAsyncClient; - public void setConfig(HTTPTaskConfig config) { - this.config = config; + public HTTPTask() { + this.config = ConfiguratorFacade + .getConfig(HTTPTaskConfig.class); } @Override diff --git a/brook-spi-extensions/brook-task-extensions/brook-task-http/src/main/java/xyz/mytang0/brook/task/http/HTTPTaskConfig.java b/brook-spi-extensions/brook-task-extensions/brook-task-http/src/main/java/xyz/mytang0/brook/task/http/HTTPTaskConfig.java index 8246fd7..dd5242d 100644 --- a/brook-spi-extensions/brook-task-extensions/brook-task-http/src/main/java/xyz/mytang0/brook/task/http/HTTPTaskConfig.java +++ b/brook-spi-extensions/brook-task-extensions/brook-task-http/src/main/java/xyz/mytang0/brook/task/http/HTTPTaskConfig.java @@ -1,7 +1,9 @@ package xyz.mytang0.brook.task.http; import lombok.Data; +import xyz.mytang0.brook.spi.config.ConfigProperties; +@ConfigProperties(prefix = "brook.task.http") @Data public class HTTPTaskConfig { diff --git a/brook-spi/src/main/java/xyz/mytang0/brook/spi/config/ConfiguratorFacade.java b/brook-spi/src/main/java/xyz/mytang0/brook/spi/config/ConfiguratorFacade.java new file mode 100644 index 0000000..0133b1f --- /dev/null +++ b/brook-spi/src/main/java/xyz/mytang0/brook/spi/config/ConfiguratorFacade.java @@ -0,0 +1,20 @@ +package xyz.mytang0.brook.spi.config; + +import xyz.mytang0.brook.common.extension.ExtensionDirector; + +public class ConfiguratorFacade { + + public static T getConfig(Class type) { + return ExtensionDirector + .getExtensionLoader(Configurator.class) + .getDefaultExtension() + .getConfig(type); + } + + public static T refreshConfig(Class type) { + return ExtensionDirector + .getExtensionLoader(Configurator.class) + .getDefaultExtension() + .refreshConfig(type); + } +}