You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eventmesh.apache.org by mi...@apache.org on 2025/02/07 04:32:04 UTC
(eventmesh) 04/27: EventMesh function connector runtime (#4858)
This is an automated email from the ASF dual-hosted git repository.
mikexue pushed a commit to branch eventmesh-function
in repository https://gitbox.apache.org/repos/asf/eventmesh.git
commit b64606b51550ef9860a5c6f3640d806ebc32d3fc
Author: mike_xwm <mi...@126.com>
AuthorDate: Mon Apr 22 17:14:26 2024 +0800
EventMesh function connector runtime (#4858)
* [ISSUE #4812] Set up Admin Endpoints v2 (#4813)
* Remove redundant overloaded methods
* Simplify write() result param
* Add writeJson(); Add PUT; Add JavaDoc
* Rename EventHttpHandler to EventMeshHttpHandler
* Correct server thread name
* Clean up messy & non-hierarchical overloading
* No need to set headers manually any more
* Set up v1&v2 endpoints
* Set up v1&v2 response dto
* Introduce fastjson2
* Fix fastjson2 "level too large : 2048" error caused by IPAddress
* Correct @ConfigField naming
* Return properties format json key
* Add format option to query string
* Introduce Result
* Reduce duplicate builder code
* Fix all checkstyle warnings in eventmesh-runtime
* Add known dependency
* [ISSUE #4814] Migrate from fastjson 1.2.83 to fastjson2 (#4819)
* [Enhancement] Migrate from fastjson 1.2.83 to fastjson2 #4814
* fix_dependencies_problem
* fix_check
* [ISSUE #4551] modify the logic of time-consumption statistics (#4822)
* init connector runtime v2
* [ISSUE #4804] Fix SubStreamHandler exception loop by closeOnError (#4807)
* Handle exception loop by closeOnError
* Lombok optimization
* some format optimization
* Avoid closing multiple times
* Remove redundant set null
* Revert "Avoid closing multiple times"
This reverts commit 767bc59aa37ab7dc9c6862af916e4ab889d30461.
* Use synchronized latch to keep senderOnComplete called once
* Use boolean to prevent latch called by somebody else
* Remove the unique callee/caller close() of onCompleted()
* [ISSUE #4838] Deprecate unused `eventMesh.connector.plugin.type` etc. properties (#4839)
* Remove all references of `eventMesh.connector.plugin.type`
* Deprecate `eventMesh.connector.plugin.type` and sort properties
* Remove misconfigured & not-used `registerIntervalInMills`, `fetchRegistryAddrIntervalInMills`
* Remove 'defibus' related un-used usages
* Supplement https://github.com/apache/eventmesh/pull/4809 for `null != object`
* [ISSUE #4832] Downgrade stale bot to v8 to resolve state cache reserving error (#4833)
* Revert stale bot to v8 to resolve state cache reserving error
* Reduce operations-per-run to default value to ease pressure
* Unify yaml to yml
* [ISSUE #4820] Bug fix EventHandler not return json (#4821)
* bug fix
* bug fix
* bug fix
* update runtime v2
* update connector runtime
* update connector runtime
* update connector runtime
* update connector runtime
* update connector runtime
---------
Co-authored-by: Pil0tXia <xi...@apache.org>
Co-authored-by: Zaki <91...@users.noreply.github.com>
Co-authored-by: Karson <ka...@hotmail.com>
---
.github/workflows/{docker.yaml => docker.yml} | 0
.github/workflows/stale.yml | 3 +-
build.gradle | 2 +-
eventmesh-common/build.gradle | 2 +
.../eventmesh/common/EventMeshThreadFactory.java | 4 +-
.../common/config/CommonConfiguration.java | 65 +++--
.../config/{ConfigFiled.java => ConfigField.java} | 2 +-
.../common/config/convert/ConvertValue.java | 10 +-
.../common/config/convert/ConverterMap.java | 6 +-
.../config/convert/converter/ObjectConverter.java | 36 +--
.../convert/converter/PropertiesConverter.java | 4 +-
.../common/config/CommonConfigurationTest.java | 4 -
.../eventmesh/common/utils/SystemUtilsTest.java | 4 +-
.../src/test/resources/configuration.properties | 3 -
.../dialect/AbstractGeneralDatabaseDialect.java | 2 +-
.../mysql/listener/CreateTableParserListener.java | 2 +-
.../source/dialect/cdc/mysql/MysqlCdcEngine.java | 6 +-
.../connector/jdbc/table/catalog/Table.java | 2 +-
.../connector/lark/sink/ImServiceHandler.java | 4 +-
.../eventmesh-connector-prometheus/build.gradle | 2 +-
.../connector/PrometheusSourceConnector.java | 4 +-
.../connector/rabbitmq/client/RabbitmqClient.java | 4 +-
.../sink/connector/RocketMQSinkConnector.java | 8 +-
.../source/connector/RocketMQSourceConnector.java | 8 +-
.../eventmesh-connector-wechat/build.gradle | 2 +-
.../wechat/sink/connector/WeChatSinkConnector.java | 4 +-
.../meta/consul/config/ConsulTLSConfig.java | 12 +-
.../meta/consul/service/ConsulMetaService.java | 2 +-
.../config/NacosMetaStorageConfiguration.java | 20 +-
.../zookeeper/config/ZKRegistryConfiguration.java | 24 +-
.../zookeeper/service/ZookeeperMetaService.java | 2 +-
.../prometheus/config/PrometheusConfiguration.java | 4 +-
.../api/factory/ConnectorPluginFactory.java | 29 ++-
.../eventmesh/openconnect/util/ConfigUtil.java | 6 +
.../config/samples/eventmesh_v1_runtime.yaml | 14 +-
.../protocol/http/HttpProtocolAdaptor.java | 2 +-
eventmesh-runtime-v2/build.gradle | 26 ++
.../java/org/apache/eventmesh/runtime/Runtime.java | 11 +
.../apache/eventmesh/runtime/RuntimeFactory.java | 9 +
.../eventmesh/runtime/RuntimeInstanceConfig.java | 33 +++
.../eventmesh/runtime/boot/RuntimeInstance.java | 100 ++++++++
.../runtime/boot/RuntimeInstanceStarter.java | 54 ++++
.../runtime/connector/ConnectorRuntime.java | 115 +++++++++
.../runtime/connector/ConnectorRuntimeConfig.java | 26 ++
.../runtime/connector/ConnectorRuntimeFactory.java | 23 ++
.../runtime/function/FunctionRuntime.java | 21 ++
.../runtime/function/FunctionRuntimeConfig.java | 4 +
.../runtime/function/FunctionRuntimeFactory.java | 24 ++
.../runtime/manager/ConnectorManager.java | 4 +
.../eventmesh/runtime/manager/FunctionManager.java | 4 +
.../eventmesh/runtime/manager/MeshManager.java | 4 +
.../apache/eventmesh/runtime/mesh/MeshRuntime.java | 21 ++
.../eventmesh/runtime/mesh/MeshRuntimeConfig.java | 4 +
.../eventmesh/runtime/mesh/MeshRuntimeFactory.java | 24 ++
.../apache/eventmesh/runtime/meta/MetaStorage.java | 148 +++++++++++
.../runtime/rpc/AdminBiStreamServiceGrpc.java | 260 +++++++++++++++++++
.../eventmesh/runtime/rpc/AdminServiceGrpc.java | 276 +++++++++++++++++++++
.../runtime/rpc}/EventMeshAdminService.java | 8 +-
.../apache/eventmesh/runtime/rpc}/Metadata.java | 6 +-
.../eventmesh/runtime/rpc}/MetadataOrBuilder.java | 2 +-
.../org/apache/eventmesh/runtime/rpc}/Payload.java | 2 +-
.../eventmesh/runtime/rpc}/PayloadOrBuilder.java | 2 +-
.../apache/eventmesh/runtime/util/BannerUtil.java | 69 ++++++
.../eventmesh/runtime/util/RuntimeUtils.java | 4 +
.../src/main/proto/event_mesh_admin_service.proto | 25 ++
.../src/main/resources/runtime.yaml | 20 ++
eventmesh-runtime/build.gradle | 2 +-
eventmesh-runtime/conf/eventmesh.properties | 22 +-
.../runtime/admin/handler/AbstractHttpHandler.java | 135 +++++-----
.../runtime/admin/handler/AdminHandlerManager.java | 39 ++-
.../ConfigurationHandlerV1.java} | 32 +--
.../{ => v1}/DeleteWebHookConfigHandler.java | 14 +-
.../admin/handler/{ => v1}/EventHandler.java | 20 +-
.../admin/handler/{ => v1}/GrpcClientHandler.java | 31 +--
.../admin/handler/{ => v1}/HTTPClientHandler.java | 31 +--
.../{ => v1}/InsertWebHookConfigHandler.java | 15 +-
.../admin/handler/{ => v1}/MetaHandler.java | 32 +--
.../admin/handler/{ => v1}/MetricsHandler.java | 25 +-
.../{ => v1}/QueryRecommendEventMeshHandler.java | 12 +-
.../{ => v1}/QueryWebHookConfigByIdHandler.java | 25 +-
.../QueryWebHookConfigByManufacturerHandler.java | 25 +-
.../{ => v1}/RedirectClientByIpPortHandler.java | 23 +-
.../{ => v1}/RedirectClientByPathHandler.java | 27 +-
.../{ => v1}/RedirectClientBySubSystemHandler.java | 20 +-
.../handler/{ => v1}/RejectAllClientHandler.java | 18 +-
.../{ => v1}/RejectClientByIpPortHandler.java | 17 +-
.../{ => v1}/RejectClientBySubSystemHandler.java | 16 +-
.../{ => v1}/ShowClientBySystemHandler.java | 15 +-
.../admin/handler/{ => v1}/ShowClientHandler.java | 12 +-
.../{ => v1}/ShowListenClientByTopicHandler.java | 11 +-
.../admin/handler/{ => v1}/TCPClientHandler.java | 32 +--
.../admin/handler/{ => v1}/TopicHandler.java | 32 +--
.../{ => v1}/UpdateWebHookConfigHandler.java | 13 +-
.../admin/handler/v2/ConfigurationHandler.java | 179 +++++++++++++
.../admin/response/{Error.java => Result.java} | 33 ++-
.../admin/response/{ => v1}/GetClientResponse.java | 2 +-
.../{ => v1}/GetConfigurationResponse.java | 2 +-
.../response/{ => v1}/GetMetricsResponse.java | 2 +-
.../response/{ => v1}/GetRegistryResponse.java | 2 +-
.../response/v2/GetConfigurationResponse.java | 26 +-
.../runtime/admin/utils/HttpExchangeUtils.java | 41 ---
.../eventmesh/runtime/boot/AbstractHTTPServer.java | 4 +-
.../runtime/boot/EventMeshAdminServer.java | 18 +-
.../eventmesh/runtime/boot/EventMeshServer.java | 6 +-
.../runtime/boot/HTTPThreadPoolGroup.java | 5 +-
...tHttpHandler.java => EventMeshHttpHandler.java} | 2 +-
.../configuration/EventMeshGrpcConfiguration.java | 50 ++--
.../configuration/EventMeshHTTPConfiguration.java | 66 ++---
.../configuration/EventMeshTCPConfiguration.java | 66 ++---
.../runtime/constants/EventMeshConstants.java | 4 -
.../runtime/core/plugin/MQProducerWrapper.java | 1 -
.../eventmesh/runtime/core/plugin/MQWrapper.java | 18 --
.../http/processor/CreateTopicProcessor.java | 4 +-
.../http/processor/DeleteTopicProcessor.java | 4 +-
.../protocol/http/processor/HandlerService.java | 23 +-
.../core/protocol/producer/EventMeshProducer.java | 1 -
.../tcp/client/group/ClientGroupWrapper.java | 1 -
.../core/protocol/tcp/client/session/Session.java | 6 +-
.../eventmesh/runtime/util/HttpRequestUtil.java | 50 +++-
.../eventmesh/runtime/util/HttpResponseUtils.java | 60 ++---
.../eventmesh/runtime/util/HttpTinyClient.java | 4 +-
.../runtime/admin/handler/EventHandlerTest.java | 151 +++++++++++
.../runtime/boot/EventMeshServerTest.java | 1 -
.../runtime/client/common/UserAgentUtils.java | 6 +-
.../EventMeshGrpcConfigurationTest.java | 1 -
.../EventMeshHTTPConfigurationTest.java | 1 -
.../EventMeshTCPConfigurationTest.java | 1 -
.../eventmesh/runtime/mock/MockCloudEvent.java | 92 +++++++
.../src/test/resources/configuration.properties | 3 -
.../grpc/consumer/EventMeshGrpcConsumer.java | 46 +---
.../client/grpc/consumer/SubStreamHandler.java | 4 +-
.../grpc/util/EventMeshCloudEventBuilder.java | 2 +-
.../auth/http/basic/config/AuthConfigs.java | 6 +-
.../storage/kafka/config/ClientConfiguration.java | 38 +--
.../storage/pulsar/config/ClientConfiguration.java | 10 +-
.../storage/rabbitmq/client/RabbitmqClient.java | 4 +-
.../rabbitmq/config/ConfigurationHolder.java | 26 +-
.../storage/redis/config/RedisProperties.java | 12 +-
.../rocketmq/config/ClientConfiguration.java | 34 +--
.../trace/api/config/ExporterConfiguration.java | 10 +-
.../trace/jaeger/config/JaegerConfiguration.java | 6 +-
.../pinpoint/config/PinpointConfiguration.java | 10 +-
.../trace/zipkin/config/ZipkinConfiguration.java | 6 +-
.../webhook/config/AdminConfiguration.java | 8 +-
.../receive/config/ReceiveConfiguration.java | 10 +-
settings.gradle | 1 +
tools/dependency-check/known-dependencies.txt | 3 +-
tools/third-party-licenses/LICENSE | 2 +-
148 files changed, 2532 insertions(+), 975 deletions(-)
diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yml
similarity index 100%
rename from .github/workflows/docker.yaml
rename to .github/workflows/docker.yml
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index 728d32adf..33f64c5cc 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -31,7 +31,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- - uses: actions/stale@v9
+ - uses: actions/stale@v8
with:
days-before-issue-stale: 90
days-before-pr-stale: 60
@@ -47,3 +47,4 @@ jobs:
exempt-issue-labels: 'pinned,discussion,help wanted,WIP,weopen-star,GLCC,summer of code'
exempt-pr-labels: 'help wanted,dependencies'
exempt-all-milestones: true # Exempt all issues/PRs with milestones from stale
+ operations-per-run: 30
diff --git a/build.gradle b/build.gradle
index f55ef5acf..de0602f08 100644
--- a/build.gradle
+++ b/build.gradle
@@ -569,7 +569,7 @@ subprojects {
dependency "org.projectlombok:lombok:1.18.22"
dependency "com.github.seancfoley:ipaddress:5.3.3"
dependency "javax.annotation:javax.annotation-api:1.3.2"
- dependency "com.alibaba:fastjson:1.2.83"
+ dependency "com.alibaba.fastjson2:fastjson2:2.0.48"
dependency "software.amazon.awssdk:s3:2.20.29"
dependency "com.github.rholder:guava-retrying:2.0.0"
diff --git a/eventmesh-common/build.gradle b/eventmesh-common/build.gradle
index fd7a6e1ee..a6dc2cd26 100644
--- a/eventmesh-common/build.gradle
+++ b/eventmesh-common/build.gradle
@@ -30,6 +30,8 @@ dependencies {
api "io.cloudevents:cloudevents-core"
api "io.cloudevents:cloudevents-json-jackson"
+ api "com.alibaba.fastjson2:fastjson2"
+
implementation "org.apache.logging.log4j:log4j-api"
implementation "org.apache.logging.log4j:log4j-core"
implementation "org.apache.logging.log4j:log4j-slf4j2-impl"
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/EventMeshThreadFactory.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/EventMeshThreadFactory.java
index 0442ef128..d18ec5a04 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/EventMeshThreadFactory.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/EventMeshThreadFactory.java
@@ -67,12 +67,12 @@ public class EventMeshThreadFactory implements ThreadFactory {
public Thread newThread(@Nonnull final Runnable runnable) {
StringBuilder threadName = new StringBuilder(threadNamePrefix);
- if (null != threadIndex) {
+ if (threadIndex != null) {
threadName.append("-").append(threadIndex.incrementAndGet());
}
Thread thread = new Thread(runnable, threadName.toString());
thread.setDaemon(daemon);
- if (null != priority) {
+ if (priority != null) {
thread.setPriority(priority);
}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java
index ca20e2b33..688f82860 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java
@@ -34,94 +34,85 @@ import static org.apache.eventmesh.common.Constants.HTTP;
@Config(prefix = "eventMesh")
public class CommonConfiguration {
- @ConfigFiled(field = "sysid", beNumber = true, notEmpty = true)
+ @ConfigField(field = "sysid", beNumber = true, notEmpty = true)
private String sysID = "5477";
- @ConfigFiled(field = "server.env", notEmpty = true)
+ @ConfigField(field = "server.env", notEmpty = true)
private String eventMeshEnv = "P";
- @ConfigFiled(field = "server.idc", notEmpty = true)
+ @ConfigField(field = "server.idc", notEmpty = true)
private String eventMeshIDC = "FT";
- @ConfigFiled(field = "server.name", notEmpty = true)
+ @ConfigField(field = "server.name", notEmpty = true)
private String eventMeshName = "";
- @ConfigFiled(field = "server.cluster", notEmpty = true)
+ @ConfigField(field = "server.cluster", notEmpty = true)
private String eventMeshCluster = "LS";
- @ConfigFiled(field = "server.hostIp", reload = true)
+ @ConfigField(field = "server.hostIp", reload = true)
private String eventMeshServerIp = null;
- @ConfigFiled(field = "metaStorage.plugin.server-addr", notEmpty = true)
+ @ConfigField(field = "metaStorage.plugin.server-addr", notEmpty = true)
private String metaStorageAddr = "";
- @ConfigFiled(field = "metaStorage.plugin.type", notEmpty = true)
+ @ConfigField(field = "metaStorage.plugin.type", notEmpty = true)
private String eventMeshMetaStoragePluginType = "nacos";
- @ConfigFiled(field = "metaStorage.plugin.username")
+ @ConfigField(field = "metaStorage.plugin.username")
private String eventMeshMetaStoragePluginUsername = "";
- @ConfigFiled(field = "metaStorage.plugin.password")
+ @ConfigField(field = "metaStorage.plugin.password")
private String eventMeshMetaStoragePluginPassword = "";
- @ConfigFiled(field = "metaStorage.plugin.metaStorageIntervalInMills")
- private Integer eventMeshMetaStorageIntervalInMills = 10 * 1000;
-
- @ConfigFiled(field = "metaStorage.plugin.fetchMetaStorageAddrIntervalInMills")
- private Integer eventMeshFetchMetaStorageAddrInterval = 10 * 1000;
-
- @ConfigFiled(field = "metaStorage.plugin.enabled")
+ @ConfigField(field = "metaStorage.plugin.enabled")
private boolean eventMeshServerMetaStorageEnable = false;
- @ConfigFiled(field = "trace.plugin", notEmpty = true)
+ @ConfigField(field = "trace.plugin", notEmpty = true)
private String eventMeshTracePluginType;
- @ConfigFiled(field = "metrics.plugin", notEmpty = true)
+ @ConfigField(field = "metrics.plugin", notEmpty = true)
private List<String> eventMeshMetricsPluginType;
- @ConfigFiled(field = "security.plugin.type", notEmpty = true)
+ @ConfigField(field = "security.plugin.type", notEmpty = true)
private String eventMeshSecurityPluginType = "security";
- @ConfigFiled(field = "connector.plugin.type", notEmpty = true)
- private String eventMeshConnectorPluginType = "rocketmq";
-
- @ConfigFiled(field = "storage.plugin.type", notEmpty = true)
- private String eventMeshStoragePluginType = "rocketmq";
+ @ConfigField(field = "storage.plugin.type", notEmpty = true)
+ private String eventMeshStoragePluginType = "standalone";
- @ConfigFiled(field = "security.validation.type.token", notEmpty = true)
+ @ConfigField(field = "security.validation.type.token", notEmpty = true)
private boolean eventMeshSecurityValidateTypeToken = false;
- @ConfigFiled(field = "server.trace.enabled")
+ @ConfigField(field = "server.trace.enabled")
private boolean eventMeshServerTraceEnable = false;
- @ConfigFiled(field = "server.security.enabled")
+ @ConfigField(field = "server.security.enabled")
private boolean eventMeshServerSecurityEnable = false;
- @ConfigFiled(field = "security.publickey")
+ @ConfigField(field = "security.publickey")
private String eventMeshSecurityPublickey = "";
- @ConfigFiled(field = "server.provide.protocols", reload = true)
+ @ConfigField(field = "server.provide.protocols", reload = true)
private List<String> eventMeshProvideServerProtocols;
- @ConfigFiled(reload = true)
+ @ConfigField(reload = true)
private String eventMeshWebhookOrigin;
- @ConfigFiled(reload = true)
+ @ConfigField(reload = true)
private String meshGroup;
- @ConfigFiled(field = "server.retry.plugin.type")
+ @ConfigField(field = "server.retry.plugin.type")
private String eventMeshRetryPluginType = Constants.DEFAULT;
- @ConfigFiled(field = "registry.plugin.server-addr", notEmpty = true)
+ @ConfigField(field = "registry.plugin.server-addr", notEmpty = true)
private String registryAddr = "";
- @ConfigFiled(field = "registry.plugin.type", notEmpty = true)
+ @ConfigField(field = "registry.plugin.type", notEmpty = true)
private String eventMeshRegistryPluginType = "nacos";
- @ConfigFiled(field = "registry.plugin.username")
+ @ConfigField(field = "registry.plugin.username")
private String eventMeshRegistryPluginUsername = "";
- @ConfigFiled(field = "registry.plugin.password")
+ @ConfigField(field = "registry.plugin.password")
private String eventMeshRegistryPluginPassword = "";
public void reload() {
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigFiled.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigField.java
similarity index 98%
rename from eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigFiled.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigField.java
index d7c398e2d..aecdf2300 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigFiled.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigField.java
@@ -29,7 +29,7 @@ import java.lang.annotation.Target;
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
-public @interface ConfigFiled {
+public @interface ConfigField {
/**
* @return The key name of the configuration file
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConvertValue.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConvertValue.java
index e3870759d..8b1372199 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConvertValue.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConvertValue.java
@@ -17,7 +17,7 @@
package org.apache.eventmesh.common.config.convert;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import org.apache.commons.lang3.StringUtils;
@@ -44,7 +44,7 @@ public interface ConvertValue<T> {
/**
* @return The value converter needs
*/
- default Object processFieldValue(ConvertInfo convertInfo, String key, ConfigFiled configFiled) {
+ default Object processFieldValue(ConvertInfo convertInfo, String key, ConfigField configField) {
Properties properties = convertInfo.getProperties();
String value = properties.getProperty(key);
@@ -54,14 +54,14 @@ public interface ConvertValue<T> {
value = value.trim();
- boolean findEnv = configFiled.findEnv();
- String fieldName = configFiled.field();
+ boolean findEnv = configField.findEnv();
+ String fieldName = configField.field();
if (StringUtils.isBlank(value) && !StringUtils.isBlank(fieldName) && findEnv) {
value = Optional.ofNullable(System.getProperty(fieldName)).orElse(System.getenv(fieldName));
}
- if (StringUtils.isBlank(value) && configFiled.notEmpty()) {
+ if (StringUtils.isBlank(value) && configField.notEmpty()) {
throw new RuntimeException(key + " can't be empty!");
}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConverterMap.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConverterMap.java
index 1fa1bced5..48d8c83ee 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConverterMap.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConverterMap.java
@@ -17,7 +17,7 @@
package org.apache.eventmesh.common.config.convert;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import org.apache.eventmesh.common.config.convert.converter.BaseDataTypeConverter;
import org.apache.eventmesh.common.config.convert.converter.DateConverter;
import org.apache.eventmesh.common.config.convert.converter.EnumConverter;
@@ -96,9 +96,9 @@ public class ConverterMap {
*/
public static ConvertValue<?> getFieldConverter(Field field) {
Class<?> clazz = field.getType();
- ConfigFiled configFiled = field.getAnnotation(ConfigFiled.class);
+ ConfigField configField = field.getAnnotation(ConfigField.class);
- Class<?> converter1 = configFiled.converter();
+ Class<?> converter1 = configField.converter();
if (!converter1.equals(ConvertValue.DefaultConverter.class)) {
if (!classToConverter.containsKey(converter1)) {
try {
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/ObjectConverter.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/ObjectConverter.java
index 6e118851e..3c91ee069 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/ObjectConverter.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/ObjectConverter.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.common.config.convert.converter;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import org.apache.eventmesh.common.config.ConfigInfo;
import org.apache.eventmesh.common.config.convert.ConvertInfo;
import org.apache.eventmesh.common.config.convert.ConvertValue;
@@ -110,18 +110,18 @@ public class ObjectConverter implements ConvertValue<Object> {
field.setAccessible(true);
ConvertInfo convertInfo = this.convertInfo;
- ConfigFiled configFiled = field.getAnnotation(ConfigFiled.class);
- if (Objects.isNull(configFiled)) {
+ ConfigField configField = field.getAnnotation(ConfigField.class);
+ if (Objects.isNull(configField)) {
continue;
}
- String key = this.buildKey(configFiled);
- needReload = this.checkNeedReload(needReload, configFiled);
+ String key = this.buildKey(configField);
+ needReload = this.checkNeedReload(needReload, configField);
ConvertValue<?> convertValue = ConverterMap.getFieldConverter(field);
- Object fieldValue = convertValue.processFieldValue(convertInfo, key, configFiled);
+ Object fieldValue = convertValue.processFieldValue(convertInfo, key, configField);
- if (!checkFieldValueBefore(configFiled, key, convertValue, fieldValue)) {
+ if (!checkFieldValueBefore(configField, key, convertValue, fieldValue)) {
continue;
}
convertInfo.setValue(fieldValue);
@@ -129,7 +129,7 @@ public class ObjectConverter implements ConvertValue<Object> {
convertInfo.setKey(key);
Object convertedValue = convertValue.convert(convertInfo);
- if (!checkFieldValueAfter(configFiled, key, convertedValue)) {
+ if (!checkFieldValueAfter(configField, key, convertedValue)) {
continue;
}
field.set(object, convertedValue);
@@ -155,16 +155,16 @@ public class ObjectConverter implements ConvertValue<Object> {
}
}
- private boolean checkFieldValueAfter(ConfigFiled configFiled, String key, Object convertedValue) {
+ private boolean checkFieldValueAfter(ConfigField configField, String key, Object convertedValue) {
if (Objects.isNull(convertedValue)) {
- if (configFiled.notNull()) {
+ if (configField.notNull()) {
throw new RuntimeException(key + " can not be null!");
}
return false;
}
- if (configFiled.beNumber()) {
+ if (configField.beNumber()) {
if (!StringUtils.isNumeric(String.valueOf(convertedValue))) {
throw new RuntimeException(key + " must be number!");
}
@@ -173,9 +173,9 @@ public class ObjectConverter implements ConvertValue<Object> {
return true;
}
- private boolean checkFieldValueBefore(ConfigFiled configFiled, String key, ConvertValue<?> convertValue, Object fieldValue) {
+ private boolean checkFieldValueBefore(ConfigField configField, String key, ConvertValue<?> convertValue, Object fieldValue) {
if (Objects.isNull(fieldValue) && !convertValue.canHandleNullValue()) {
- if (configFiled.notNull()) {
+ if (configField.notNull()) {
throw new RuntimeException(key + " can not be null!");
}
@@ -185,8 +185,8 @@ public class ObjectConverter implements ConvertValue<Object> {
return true;
}
- private boolean checkNeedReload(boolean needReload, ConfigFiled configFiled) {
- if (!needReload && configFiled != null && configFiled.reload()) {
+ private boolean checkNeedReload(boolean needReload, ConfigField configField) {
+ if (!needReload && configField != null && configField.reload()) {
needReload = Boolean.TRUE;
}
@@ -201,14 +201,14 @@ public class ObjectConverter implements ConvertValue<Object> {
return needReload;
}
- private String buildKey(ConfigFiled configFiled) {
+ private String buildKey(ConfigField configField) {
String key;
StringBuilder keyPrefix = new StringBuilder(Objects.isNull(prefix) ? "" : prefix);
- if (configFiled == null || configFiled.field().isEmpty() && keyPrefix.length() > 0) {
+ if (configField == null || configField.field().isEmpty() && keyPrefix.length() > 0) {
key = keyPrefix.deleteCharAt(keyPrefix.length() - 1).toString();
} else {
- key = keyPrefix.append(configFiled.field()).toString();
+ key = keyPrefix.append(configField.field()).toString();
}
return key;
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/PropertiesConverter.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/PropertiesConverter.java
index e4dbf470d..7c58fccdc 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/PropertiesConverter.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/PropertiesConverter.java
@@ -17,7 +17,7 @@
package org.apache.eventmesh.common.config.convert.converter;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import org.apache.eventmesh.common.config.convert.ConvertInfo;
import org.apache.eventmesh.common.config.convert.ConvertValue;
import org.apache.eventmesh.common.utils.PropertiesUtils;
@@ -41,7 +41,7 @@ public class PropertiesConverter implements ConvertValue<Properties> {
}
@Override
- public Object processFieldValue(ConvertInfo convertInfo, String prefix, ConfigFiled configFiled) {
+ public Object processFieldValue(ConvertInfo convertInfo, String prefix, ConfigField configField) {
Properties properties = convertInfo.getProperties();
if (StringUtils.isBlank(prefix)) {
diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/config/CommonConfigurationTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/config/CommonConfigurationTest.java
index 11265522a..fb1ebc163 100644
--- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/config/CommonConfigurationTest.java
+++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/config/CommonConfigurationTest.java
@@ -45,7 +45,6 @@ public class CommonConfigurationTest {
Assertions.assertEquals("cluster-succeed!!!", config.getEventMeshCluster());
Assertions.assertEquals("name-succeed!!!", config.getEventMeshName());
Assertions.assertEquals("816", config.getSysID());
- // Assertions.assertEquals("connector-succeed!!!", config.getEventMeshConnectorPluginType());
Assertions.assertEquals("storage-succeed!!!", config.getEventMeshStoragePluginType());
Assertions.assertEquals("storage-succeed!!!", config.getEventMeshStoragePluginType());
Assertions.assertEquals("security-succeed!!!", config.getEventMeshSecurityPluginType());
@@ -55,9 +54,6 @@ public class CommonConfigurationTest {
Assertions.assertEquals("username-succeed!!!", config.getEventMeshMetaStoragePluginUsername());
Assertions.assertEquals("password-succeed!!!", config.getEventMeshMetaStoragePluginPassword());
- Assertions.assertEquals(Integer.valueOf(816), config.getEventMeshMetaStorageIntervalInMills());
- Assertions.assertEquals(Integer.valueOf(1816), config.getEventMeshFetchMetaStorageAddrInterval());
-
List<String> list = new ArrayList<>();
list.add("metrics-succeed1!!!");
list.add("metrics-succeed2!!!");
diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/SystemUtilsTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/SystemUtilsTest.java
index b941fee1d..32f4ae946 100644
--- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/SystemUtilsTest.java
+++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/SystemUtilsTest.java
@@ -24,7 +24,7 @@ public class SystemUtilsTest {
@Test
public void isLinuxPlatform() {
- if (null != SystemUtils.OS_NAME && SystemUtils.OS_NAME.toLowerCase().contains("linux")) {
+ if (SystemUtils.OS_NAME != null && SystemUtils.OS_NAME.toLowerCase().contains("linux")) {
Assertions.assertTrue(SystemUtils.isLinuxPlatform());
Assertions.assertFalse(SystemUtils.isWindowsPlatform());
}
@@ -32,7 +32,7 @@ public class SystemUtilsTest {
@Test
public void isWindowsPlatform() {
- if (null != SystemUtils.OS_NAME && SystemUtils.OS_NAME.toLowerCase().contains("windows")) {
+ if (SystemUtils.OS_NAME != null && SystemUtils.OS_NAME.toLowerCase().contains("windows")) {
Assertions.assertFalse(SystemUtils.isLinuxPlatform());
Assertions.assertTrue(SystemUtils.isWindowsPlatform());
}
diff --git a/eventmesh-common/src/test/resources/configuration.properties b/eventmesh-common/src/test/resources/configuration.properties
index f80bb7db0..f53a7680f 100644
--- a/eventmesh-common/src/test/resources/configuration.properties
+++ b/eventmesh-common/src/test/resources/configuration.properties
@@ -20,13 +20,10 @@ eventMesh.sysid=816
eventMesh.server.cluster=cluster-succeed!!!
eventMesh.server.name=name-succeed!!!
eventMesh.server.hostIp=hostIp-succeed!!!
-eventMesh.connector.plugin.type=connector-succeed!!!
eventMesh.storage.plugin.type=storage-succeed!!!
eventMesh.security.plugin.type=security-succeed!!!
eventMesh.metaStorage.plugin.type=metaStorage-succeed!!!
eventMesh.trace.plugin=trace-succeed!!!
-eventMesh.metaStorage.plugin.metaStorageIntervalInMills=816
-eventMesh.metaStorage.plugin.fetchMetaStorageAddrIntervalInMills=1816
eventMesh.metrics.plugin=metrics-succeed1!!!,metrics-succeed2!!!,metrics-succeed3!!!
eventMesh.metaStorage.plugin.server-addr=server-addr-succeed1!!!
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/dialect/AbstractGeneralDatabaseDialect.java b/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/dialect/AbstractGeneralDatabaseDialect.java
index 64bde4993..0a7463a18 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/dialect/AbstractGeneralDatabaseDialect.java
+++ b/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/dialect/AbstractGeneralDatabaseDialect.java
@@ -146,7 +146,7 @@ public abstract class AbstractGeneralDatabaseDialect<JC extends JdbcConnection,
@Override
public String getTypeName(Dialect hibernateDialect, Column<?> column) {
Type type = this.getType(column);
- if (null != type) {
+ if (type != null) {
return type.getTypeName(column);
}
Long length = Optional.ofNullable(column.getColumnLength()).orElse(0L);
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/dialect/antlr4/mysql/listener/CreateTableParserListener.java b/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/dialect/antlr4/mysql/listener/CreateTableParserListener.java
index c24f885d7..4e30da93f 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/dialect/antlr4/mysql/listener/CreateTableParserListener.java
+++ b/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/dialect/antlr4/mysql/listener/CreateTableParserListener.java
@@ -166,7 +166,7 @@ public class CreateTableParserListener extends TableBaseParserListener {
@Override
public void enterTableOptionAutoIncrement(TableOptionAutoIncrementContext ctx) {
DecimalLiteralContext decimalLiteralContext = ctx.decimalLiteral();
- if (null != decimalLiteralContext) {
+ if (decimalLiteralContext != null) {
String autoIncrementNumber = Antlr4Utils.getText(decimalLiteralContext);
this.tableEditor.withOption(MysqlTableOptions.AUTO_INCREMENT, autoIncrementNumber);
}
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/dialect/cdc/mysql/MysqlCdcEngine.java b/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/dialect/cdc/mysql/MysqlCdcEngine.java
index 645e5c9ec..5650c3d0c 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/dialect/cdc/mysql/MysqlCdcEngine.java
+++ b/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/dialect/cdc/mysql/MysqlCdcEngine.java
@@ -392,7 +392,7 @@ public class MysqlCdcEngine extends AbstractCdcEngine<MysqlAntlr4DdlParser, Mysq
EventMeshGtidSet purgedServerEventMeshGtidSet = new EventMeshGtidSet(purgedServerGtid);
EventMeshGtidSet filteredEventMeshGtidSet = filterGtidSet(context, executedEventMeshGtidSet, purgedServerEventMeshGtidSet);
- if (null != filteredEventMeshGtidSet) {
+ if (filteredEventMeshGtidSet != null) {
client.setGtidSet(filteredEventMeshGtidSet.toString());
this.context.completedGtidSet(filteredEventMeshGtidSet.toString());
localGtidSet = new com.github.shyiko.mysql.binlog.GtidSet(filteredEventMeshGtidSet.toString());
@@ -645,7 +645,7 @@ public class MysqlCdcEngine extends AbstractCdcEngine<MysqlAntlr4DdlParser, Mysq
schema.addKeys(tableSchema.getPrimaryKey().getColumnNames());
Pair<Serializable[], BitSet> beforePair = Optional.ofNullable(pair.getLeft()).orElse(new Pair<>());
Serializable[] beforeRows = beforePair.getLeft();
- if (null != beforeRows && beforeRows.length != 0) {
+ if (beforeRows != null && beforeRows.length != 0) {
BitSet includedColumns = beforePair.getRight();
Map<String, Object> beforeValues = new HashMap<>(beforeRows.length);
for (int index = 0; index < columnsSize; ++index) {
@@ -663,7 +663,7 @@ public class MysqlCdcEngine extends AbstractCdcEngine<MysqlAntlr4DdlParser, Mysq
Pair<Serializable[], BitSet> afterPair = Optional.ofNullable(pair.getRight()).orElse(new Pair<>());
Serializable[] afterRows = afterPair.getLeft();
- if (null != afterRows && afterRows.length != 0) {
+ if (afterRows != null && afterRows.length != 0) {
BitSet includedColumns = afterPair.getRight();
Map<String, Object> afterValues = new HashMap<>(afterRows.length);
for (int index = 0; index < columnsSize; ++index) {
diff --git a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/table/catalog/Table.java b/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/table/catalog/Table.java
index c47522724..158ffc81d 100644
--- a/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/table/catalog/Table.java
+++ b/eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/table/catalog/Table.java
@@ -48,7 +48,7 @@ public class Table {
this.primaryKey = primaryKey;
this.uniqueKeys = uniqueKeys;
this.comment = comment;
- if (null != options) {
+ if (options != null) {
this.options.putAll(options);
}
}
diff --git a/eventmesh-connectors/eventmesh-connector-lark/src/main/java/org/apache/eventmesh/connector/lark/sink/ImServiceHandler.java b/eventmesh-connectors/eventmesh-connector-lark/src/main/java/org/apache/eventmesh/connector/lark/sink/ImServiceHandler.java
index 4797d58ef..75e51e690 100644
--- a/eventmesh-connectors/eventmesh-connector-lark/src/main/java/org/apache/eventmesh/connector/lark/sink/ImServiceHandler.java
+++ b/eventmesh-connectors/eventmesh-connector-lark/src/main/java/org/apache/eventmesh/connector/lark/sink/ImServiceHandler.java
@@ -313,12 +313,12 @@ public class ImServiceHandler {
private boolean needAtAll(ConnectRecord connectRecord) {
String atAll = connectRecord.getExtension(ConnectRecordExtensionKeys.AT_ALL_4_LARK);
- return null != atAll && !"null".equals(atAll) && Boolean.parseBoolean(atAll);
+ return atAll != null && !"null".equals(atAll) && Boolean.parseBoolean(atAll);
}
private String needAtUser(ConnectRecord connectRecord) {
String atUsers = connectRecord.getExtension(ConnectRecordExtensionKeys.AT_USERS_4_LARK);
- return null != atUsers && !"null".equals(atUsers) ? atUsers : "";
+ return atUsers != null && !"null".equals(atUsers) ? atUsers : "";
}
/**
diff --git a/eventmesh-connectors/eventmesh-connector-prometheus/build.gradle b/eventmesh-connectors/eventmesh-connector-prometheus/build.gradle
index d92797a8c..965057580 100644
--- a/eventmesh-connectors/eventmesh-connector-prometheus/build.gradle
+++ b/eventmesh-connectors/eventmesh-connector-prometheus/build.gradle
@@ -19,7 +19,7 @@ dependencies {
implementation project(":eventmesh-openconnect:eventmesh-openconnect-java")
implementation 'org.apache.httpcomponents:httpclient'
implementation 'com.github.rholder:guava-retrying'
- implementation 'com.alibaba:fastjson'
+ implementation 'com.alibaba.fastjson2:fastjson2'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
\ No newline at end of file
diff --git a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/connector/PrometheusSourceConnector.java b/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/connector/PrometheusSourceConnector.java
index 0fe5c8757..2c75f394f 100644
--- a/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/connector/PrometheusSourceConnector.java
+++ b/eventmesh-connectors/eventmesh-connector-prometheus/src/main/java/org/apache/eventmesh/connector/prometheus/source/connector/PrometheusSourceConnector.java
@@ -44,8 +44,8 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
import com.github.rholder.retry.Attempt;
import com.github.rholder.retry.RetryListener;
import com.github.rholder.retry.Retryer;
diff --git a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/client/RabbitmqClient.java b/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/client/RabbitmqClient.java
index 34cda9620..1f324b584 100644
--- a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/client/RabbitmqClient.java
+++ b/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/client/RabbitmqClient.java
@@ -120,7 +120,7 @@ public class RabbitmqClient {
* @param connection connection
*/
public void closeConnection(Connection connection) {
- if (null != connection) {
+ if (connection != null) {
try {
connection.close();
} catch (Exception ex) {
@@ -135,7 +135,7 @@ public class RabbitmqClient {
* @param channel channel
*/
public void closeChannel(Channel channel) {
- if (null != channel) {
+ if (channel != null) {
try {
channel.close();
} catch (Exception ex) {
diff --git a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/sink/connector/RocketMQSinkConnector.java b/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/sink/connector/RocketMQSinkConnector.java
index a63d92d7f..9eb23f931 100644
--- a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/sink/connector/RocketMQSinkConnector.java
+++ b/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/sink/connector/RocketMQSinkConnector.java
@@ -18,6 +18,7 @@
package org.apache.eventmesh.connector.rocketmq.sink.connector;
import org.apache.eventmesh.connector.rocketmq.sink.config.RocketMQSinkConfig;
+import org.apache.eventmesh.openconnect.api.ConnectorCreateService;
import org.apache.eventmesh.openconnect.api.config.Config;
import org.apache.eventmesh.openconnect.api.connector.ConnectorContext;
import org.apache.eventmesh.openconnect.api.connector.SinkConnectorContext;
@@ -34,7 +35,7 @@ import java.util.List;
import lombok.extern.slf4j.Slf4j;
@Slf4j
-public class RocketMQSinkConnector implements Sink {
+public class RocketMQSinkConnector implements Sink, ConnectorCreateService<Sink> {
private RocketMQSinkConfig sinkConfig;
@@ -108,4 +109,9 @@ public class RocketMQSinkConnector implements Sink {
}
return message;
}
+
+ @Override
+ public Sink create() {
+ return new RocketMQSinkConnector();
+ }
}
diff --git a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/source/connector/RocketMQSourceConnector.java b/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/source/connector/RocketMQSourceConnector.java
index 8023be479..ab2bcd92a 100644
--- a/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/source/connector/RocketMQSourceConnector.java
+++ b/eventmesh-connectors/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/source/connector/RocketMQSourceConnector.java
@@ -18,6 +18,7 @@
package org.apache.eventmesh.connector.rocketmq.source.connector;
import org.apache.eventmesh.connector.rocketmq.source.config.RocketMQSourceConfig;
+import org.apache.eventmesh.openconnect.api.ConnectorCreateService;
import org.apache.eventmesh.openconnect.api.config.Config;
import org.apache.eventmesh.openconnect.api.connector.ConnectorContext;
import org.apache.eventmesh.openconnect.api.connector.SourceConnectorContext;
@@ -60,7 +61,7 @@ import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
@Slf4j
-public class RocketMQSourceConnector implements Source {
+public class RocketMQSourceConnector implements Source, ConnectorCreateService<Source> {
private RocketMQSourceConfig sourceConfig;
@@ -301,4 +302,9 @@ public class RocketMQSourceConnector implements Source {
commitOffset.add(new AtomicLong(nextBeginOffset));
prepareCommitOffset.put(mq, commitOffset);
}
+
+ @Override
+ public Source create() {
+ return new RocketMQSourceConnector();
+ }
}
diff --git a/eventmesh-connectors/eventmesh-connector-wechat/build.gradle b/eventmesh-connectors/eventmesh-connector-wechat/build.gradle
index c79152448..9a73345d1 100644
--- a/eventmesh-connectors/eventmesh-connector-wechat/build.gradle
+++ b/eventmesh-connectors/eventmesh-connector-wechat/build.gradle
@@ -26,7 +26,7 @@ dependencies {
implementation project(":eventmesh-sdks:eventmesh-sdk-java")
implementation project(":eventmesh-openconnect:eventmesh-openconnect-java")
- implementation 'com.alibaba:fastjson'
+ implementation 'com.alibaba.fastjson2:fastjson2'
implementation 'com.google.guava:guava'
implementation 'com.squareup.okhttp3:okhttp'
diff --git a/eventmesh-connectors/eventmesh-connector-wechat/src/main/java/org/apache/eventmesh/connector/wechat/sink/connector/WeChatSinkConnector.java b/eventmesh-connectors/eventmesh-connector-wechat/src/main/java/org/apache/eventmesh/connector/wechat/sink/connector/WeChatSinkConnector.java
index 1d1c3258c..ac66ec45c 100644
--- a/eventmesh-connectors/eventmesh-connector-wechat/src/main/java/org/apache/eventmesh/connector/wechat/sink/connector/WeChatSinkConnector.java
+++ b/eventmesh-connectors/eventmesh-connector-wechat/src/main/java/org/apache/eventmesh/connector/wechat/sink/connector/WeChatSinkConnector.java
@@ -32,8 +32,8 @@ import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
diff --git a/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/config/ConsulTLSConfig.java b/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/config/ConsulTLSConfig.java
index 1664a014d..f63e52086 100644
--- a/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/config/ConsulTLSConfig.java
+++ b/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/config/ConsulTLSConfig.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.meta.consul.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import org.apache.eventmesh.common.config.convert.converter.EnumConverter;
import com.ecwid.consul.transport.TLSConfig.KeyStoreInstanceType;
@@ -31,19 +31,19 @@ import lombok.NoArgsConstructor;
@Config(prefix = "eventMesh.registry.consul.tls")
public class ConsulTLSConfig {
- @ConfigFiled(field = "keyStoreInstanceType", converter = EnumConverter.class)
+ @ConfigField(field = "keyStoreInstanceType", converter = EnumConverter.class)
private KeyStoreInstanceType keyStoreInstanceType;
- @ConfigFiled(field = "certificatePath")
+ @ConfigField(field = "certificatePath")
private String certificatePath;
- @ConfigFiled(field = "certificatePassword")
+ @ConfigField(field = "certificatePassword")
private String certificatePassword;
- @ConfigFiled(field = "keyStorePath")
+ @ConfigField(field = "keyStorePath")
private String keyStorePath;
- @ConfigFiled(field = "keyStorePassword")
+ @ConfigField(field = "keyStorePassword")
private String keyStorePassword;
}
diff --git a/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/service/ConsulMetaService.java b/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/service/ConsulMetaService.java
index 2d9b921ef..a3849d2cc 100644
--- a/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/service/ConsulMetaService.java
+++ b/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/service/ConsulMetaService.java
@@ -72,7 +72,7 @@ public class ConsulMetaService implements MetaService {
if (initStatus.compareAndSet(false, true)) {
for (String key : ConfigurationContextUtil.KEYS) {
CommonConfiguration commonConfiguration = ConfigurationContextUtil.get(key);
- if (null != commonConfiguration) {
+ if (commonConfiguration != null) {
String metaStorageAddr = commonConfiguration.getMetaStorageAddr();
if (StringUtils.isBlank(metaStorageAddr)) {
throw new MetaException("namesrvAddr cannot be null");
diff --git a/eventmesh-meta/eventmesh-meta-nacos/src/main/java/org/apache/eventmesh/meta/nacos/config/NacosMetaStorageConfiguration.java b/eventmesh-meta/eventmesh-meta-nacos/src/main/java/org/apache/eventmesh/meta/nacos/config/NacosMetaStorageConfiguration.java
index 67e51d2d9..d6de51ca8 100644
--- a/eventmesh-meta/eventmesh-meta-nacos/src/main/java/org/apache/eventmesh/meta/nacos/config/NacosMetaStorageConfiguration.java
+++ b/eventmesh-meta/eventmesh-meta-nacos/src/main/java/org/apache/eventmesh/meta/nacos/config/NacosMetaStorageConfiguration.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.meta.nacos.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import com.alibaba.nacos.api.PropertyKeyConst;
import com.alibaba.nacos.client.naming.utils.UtilAndComs;
@@ -31,31 +31,31 @@ import lombok.NoArgsConstructor;
@Config(prefix = "eventMesh.metaStorage.nacos")
public class NacosMetaStorageConfiguration {
- @ConfigFiled(field = PropertyKeyConst.ENDPOINT)
+ @ConfigField(field = PropertyKeyConst.ENDPOINT)
private String endpoint;
- @ConfigFiled(field = PropertyKeyConst.ENDPOINT_PORT)
+ @ConfigField(field = PropertyKeyConst.ENDPOINT_PORT)
private String endpointPort;
- @ConfigFiled(field = PropertyKeyConst.ACCESS_KEY)
+ @ConfigField(field = PropertyKeyConst.ACCESS_KEY)
private String accessKey;
- @ConfigFiled(field = PropertyKeyConst.SECRET_KEY)
+ @ConfigField(field = PropertyKeyConst.SECRET_KEY)
private String secretKey;
- @ConfigFiled(field = PropertyKeyConst.CLUSTER_NAME)
+ @ConfigField(field = PropertyKeyConst.CLUSTER_NAME)
private String clusterName;
- @ConfigFiled(field = PropertyKeyConst.NAMESPACE)
+ @ConfigField(field = PropertyKeyConst.NAMESPACE)
private String namespace;
- @ConfigFiled(field = PropertyKeyConst.NAMING_POLLING_THREAD_COUNT)
+ @ConfigField(field = PropertyKeyConst.NAMING_POLLING_THREAD_COUNT)
private Integer pollingThreadCount = Runtime.getRuntime().availableProcessors() / 2 + 1;
- @ConfigFiled(field = UtilAndComs.NACOS_NAMING_LOG_NAME)
+ @ConfigField(field = UtilAndComs.NACOS_NAMING_LOG_NAME)
private String logFileName;
- @ConfigFiled(field = UtilAndComs.NACOS_NAMING_LOG_LEVEL)
+ @ConfigField(field = UtilAndComs.NACOS_NAMING_LOG_LEVEL)
private String logLevel;
}
diff --git a/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/config/ZKRegistryConfiguration.java b/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/config/ZKRegistryConfiguration.java
index bec8faae7..7e6f743c8 100644
--- a/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/config/ZKRegistryConfiguration.java
+++ b/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/config/ZKRegistryConfiguration.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.meta.zookeeper.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -28,38 +28,38 @@ import lombok.NoArgsConstructor;
@Config(prefix = "eventMesh.registry.zookeeper")
public class ZKRegistryConfiguration {
- @ConfigFiled(field = "scheme")
+ @ConfigField(field = "scheme")
private String scheme;
- @ConfigFiled(field = "auth")
+ @ConfigField(field = "auth")
private String auth;
- @ConfigFiled(field = "connectionTimeoutMs")
+ @ConfigField(field = "connectionTimeoutMs")
private Integer connectionTimeoutMs = 5000;
- @ConfigFiled(field = "sessionTimeoutMs")
+ @ConfigField(field = "sessionTimeoutMs")
private Integer sessionTimeoutMs = 40000;
// Fully qualified name of RetryPolicy implementation
- @ConfigFiled(field = "retryPolicy.class")
+ @ConfigField(field = "retryPolicy.class")
private String retryPolicyClass;
- @ConfigFiled(field = "retryPolicy.baseSleepTimeMs")
+ @ConfigField(field = "retryPolicy.baseSleepTimeMs")
private Integer baseSleepTimeMs = 1000;
- @ConfigFiled(field = "retryPolicy.maxRetries")
+ @ConfigField(field = "retryPolicy.maxRetries")
private Integer maxRetries = 5;
- @ConfigFiled(field = "retryPolicy.maxSleepTimeMs")
+ @ConfigField(field = "retryPolicy.maxSleepTimeMs")
private Integer maxSleepTimeMs = 5000;
- @ConfigFiled(field = "retryPolicy.retryIntervalMs")
+ @ConfigField(field = "retryPolicy.retryIntervalMs")
private Integer retryIntervalTimeMs = 1000;
- @ConfigFiled(field = "retryPolicy.nTimes")
+ @ConfigField(field = "retryPolicy.nTimes")
private Integer retryNTimes = 10;
- @ConfigFiled(field = "retryPolicy.sleepMsBetweenRetries")
+ @ConfigField(field = "retryPolicy.sleepMsBetweenRetries")
private Integer sleepMsBetweenRetries = 1000;
}
diff --git a/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/service/ZookeeperMetaService.java b/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/service/ZookeeperMetaService.java
index 359e7427f..18520feb4 100644
--- a/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/service/ZookeeperMetaService.java
+++ b/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/service/ZookeeperMetaService.java
@@ -175,7 +175,7 @@ public class ZookeeperMetaService implements MetaService {
if (!startStatus.compareAndSet(true, false)) {
return;
}
- if (null != zkClient) {
+ if (zkClient != null) {
zkClient.close();
}
log.info("ZookeeperRegistryService closed");
diff --git a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/config/PrometheusConfiguration.java b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/config/PrometheusConfiguration.java
index 63e568830..e2d684f04 100644
--- a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/config/PrometheusConfiguration.java
+++ b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/config/PrometheusConfiguration.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.metrics.prometheus.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import lombok.Data;
@@ -26,6 +26,6 @@ import lombok.Data;
@Config(prefix = "eventMesh.metrics.prometheus", path = "classPath://prometheus.properties")
public class PrometheusConfiguration {
- @ConfigFiled(field = "port")
+ @ConfigField(field = "port")
private int eventMeshPrometheusPort = 19090;
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventHttpHandler.java b/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/factory/ConnectorPluginFactory.java
similarity index 50%
copy from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventHttpHandler.java
copy to eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/factory/ConnectorPluginFactory.java
index 25c2bcbd5..7a6f2e0a9 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventHttpHandler.java
+++ b/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/api/factory/ConnectorPluginFactory.java
@@ -15,24 +15,27 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.common;
+package org.apache.eventmesh.openconnect.api.factory;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+import org.apache.eventmesh.openconnect.api.ConnectorCreateService;
+import org.apache.eventmesh.openconnect.api.connector.SinkConnector;
+import org.apache.eventmesh.openconnect.api.connector.SourceConnector;
+import org.apache.eventmesh.spi.EventMeshExtensionFactory;
-@Documented
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE})
-public @interface EventHttpHandler {
+
+/**
+ * The factory to get connector {@link SourceConnector} and {@link SinkConnector}
+ */
+public class ConnectorPluginFactory {
/**
- * request path
+ * Get ConnectorCreateService instance by plugin name
*
- * @return path
+ * @param connectorPluginName plugin name
+ * @return ConnectorCreateService instance
*/
- String path();
+ public static ConnectorCreateService<?> createConnector(String connectorPluginName) {
+ return EventMeshExtensionFactory.getExtension(ConnectorCreateService.class, connectorPluginName);
+ }
}
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/util/ConfigUtil.java b/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/util/ConfigUtil.java
index 93b2ba958..13f1d74f6 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/util/ConfigUtil.java
+++ b/eventmesh-openconnect/eventmesh-openconnect-java/src/main/java/org/apache/eventmesh/openconnect/util/ConfigUtil.java
@@ -25,6 +25,7 @@ import org.apache.eventmesh.openconnect.api.config.SourceConfig;
import java.io.File;
import java.io.FileNotFoundException;
import java.net.URL;
+import java.util.Map;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -67,6 +68,11 @@ public class ConfigUtil {
return objectMapper.readValue(url, c);
}
+ public static <T> T parse(Map<String, Object> map, Class<T> c) throws Exception {
+ ObjectMapper objectMapper = new ObjectMapper();
+ return objectMapper.convertValue(map, c);
+ }
+
private static Config parseSourceConfig(Class<? extends Config> c) throws Exception {
String configFile = System.getProperty(Constants.ENV_SOURCE_CONFIG_FILE, System.getenv(Constants.ENV_SOURCE_CONFIG_FILE));
if (configFile == null || configFile.isEmpty()) {
diff --git a/eventmesh-operator/config/samples/eventmesh_v1_runtime.yaml b/eventmesh-operator/config/samples/eventmesh_v1_runtime.yaml
index ee94d606f..fc640aa63 100644
--- a/eventmesh-operator/config/samples/eventmesh_v1_runtime.yaml
+++ b/eventmesh-operator/config/samples/eventmesh_v1_runtime.yaml
@@ -35,11 +35,13 @@ data:
eventMesh.server.cluster=COMMON
eventMesh.server.name=EVENTMESH-runtime
eventMesh.sysid=0000
+ eventMesh.server.tcp.port=10000
eventMesh.server.http.port=10105
eventMesh.server.grpc.port=10205
+ # HTTP Admin Server
+ eventMesh.server.admin.http.port=10106
########################## eventMesh tcp configuration ############################
eventMesh.server.tcp.enabled=true
- eventMesh.server.tcp.port=10000
eventMesh.server.tcp.readerIdleSeconds=120
eventMesh.server.tcp.writerIdleSeconds=120
eventMesh.server.tcp.allIdleSeconds=120
@@ -69,13 +71,6 @@ data:
eventMesh.server.retry.async.pushRetryDelayInMills=500
eventMesh.server.retry.sync.pushRetryDelayInMills=500
eventMesh.server.retry.pushRetryQueueSize=10000
- #admin
- eventMesh.server.admin.http.port=10106
- #metaStorage
- eventMesh.server.metaStorage.metaStorageIntervalInMills=10000
- eventMesh.server.metaStorage.fetchMetaStorageAddrIntervalInMills=20000
- #auto-ack
- #eventMesh.server.defibus.client.comsumeTimeoutInMin=5
#sleep interval between closing client of different group in server graceful shutdown
eventMesh.server.gracefulShutdown.sleepIntervalInMills=1000
@@ -85,9 +80,6 @@ data:
eventMesh.server.blacklist.ipv4=0.0.0.0/8,127.0.0.0/8,169.254.0.0/16,255.255.255.255/32
eventMesh.server.blacklist.ipv6=::/128,::1/128,ff00::/8
- #connector plugin
- eventMesh.connector.plugin.type=standalone
-
#storage plugin
eventMesh.storage.plugin.type=standalone
diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/HttpProtocolAdaptor.java b/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/HttpProtocolAdaptor.java
index a232781ff..08c471882 100644
--- a/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/HttpProtocolAdaptor.java
+++ b/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/HttpProtocolAdaptor.java
@@ -97,7 +97,7 @@ public class HttpProtocolAdaptor<T extends ProtocolTransportObject>
}
httpEventWrapper.setSysHeaderMap(sysHeaderMap);
// ce data
- if (null != cloudEvent.getData()) {
+ if (cloudEvent.getData() != null) {
Map<String, Object> dataContentMap = JsonUtils.parseTypeReferenceObject(
new String(Objects.requireNonNull(cloudEvent.getData()).toBytes(), Constants.DEFAULT_CHARSET),
new TypeReference<Map<String, Object>>() {
diff --git a/eventmesh-runtime-v2/build.gradle b/eventmesh-runtime-v2/build.gradle
new file mode 100644
index 000000000..a04d12711
--- /dev/null
+++ b/eventmesh-runtime-v2/build.gradle
@@ -0,0 +1,26 @@
+plugins {
+ id 'java'
+}
+
+group 'org.apache.eventmesh'
+version '1.10.0-release'
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ compileOnly 'org.projectlombok:lombok'
+ annotationProcessor 'org.projectlombok:lombok'
+
+ implementation project(":eventmesh-openconnect:eventmesh-openconnect-java")
+ implementation project(":eventmesh-common")
+ implementation project(":eventmesh-meta:eventmesh-meta-api")
+ implementation project(":eventmesh-meta:eventmesh-meta-nacos")
+
+ implementation "io.grpc:grpc-core"
+ implementation "io.grpc:grpc-protobuf"
+ implementation "io.grpc:grpc-stub"
+ implementation "io.grpc:grpc-netty"
+ implementation "io.grpc:grpc-netty-shaded"
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/Runtime.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/Runtime.java
new file mode 100644
index 000000000..dc372510d
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/Runtime.java
@@ -0,0 +1,11 @@
+package org.apache.eventmesh.runtime;
+
+public interface Runtime {
+
+ void init() throws Exception;
+
+ void start() throws Exception;
+
+ void stop() throws Exception;
+
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/RuntimeFactory.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/RuntimeFactory.java
new file mode 100644
index 000000000..ad2713329
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/RuntimeFactory.java
@@ -0,0 +1,9 @@
+package org.apache.eventmesh.runtime;
+
+public interface RuntimeFactory extends AutoCloseable {
+
+ void init() throws Exception;
+
+ Runtime createRuntime(RuntimeInstanceConfig runtimeInstanceConfig);
+
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/RuntimeInstanceConfig.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/RuntimeInstanceConfig.java
new file mode 100644
index 000000000..ab2938ac2
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/RuntimeInstanceConfig.java
@@ -0,0 +1,33 @@
+package org.apache.eventmesh.runtime;
+
+import org.apache.eventmesh.common.config.Config;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@Config(path = "classPath://runtime.yaml")
+public class RuntimeInstanceConfig {
+
+ private String registryServerAddr;
+
+ private String registryPluginType;
+
+ private String storagePluginType;
+
+ private String runtimeInstanceId;
+
+ private String runtimeInstanceName;
+
+ private String runtimeInstanceDesc;
+
+ private String runtimeInstanceType;
+
+ private String runtimeInstanceVersion;
+
+ private String runtimeInstanceConfig;
+
+ private String runtimeInstanceStatus;
+
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/boot/RuntimeInstance.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/boot/RuntimeInstance.java
new file mode 100644
index 000000000..9c481463a
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/boot/RuntimeInstance.java
@@ -0,0 +1,100 @@
+package org.apache.eventmesh.runtime.boot;
+
+import org.apache.eventmesh.runtime.Runtime;
+import org.apache.eventmesh.runtime.RuntimeFactory;
+import org.apache.eventmesh.runtime.RuntimeInstanceConfig;
+import org.apache.eventmesh.runtime.meta.MetaStorage;
+import org.apache.eventmesh.runtime.rpc.AdminBiStreamServiceGrpc;
+import org.apache.eventmesh.runtime.rpc.AdminBiStreamServiceGrpc.AdminBiStreamServiceStub;
+import org.apache.eventmesh.runtime.rpc.Payload;
+
+import io.grpc.ManagedChannel;
+import io.grpc.ManagedChannelBuilder;
+import io.grpc.stub.StreamObserver;
+
+import com.google.protobuf.Any;
+import com.google.protobuf.StringValue;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class RuntimeInstance {
+
+ private String adminServerAddr = "localhost";
+
+ private int adminServerPort = 50051;
+
+ private ManagedChannel channel;
+
+ private AdminBiStreamServiceStub adminStub;
+
+ StreamObserver<Payload> responseObserver;
+
+ StreamObserver<Payload> requestObserver;
+
+ private MetaStorage metaStorage;
+
+ private Runtime runtime;
+
+ private RuntimeFactory runtimeFactory;
+
+ private RuntimeInstanceConfig runtimeInstanceConfig;
+
+ public RuntimeInstance(RuntimeInstanceConfig runtimeInstanceConfig) {
+ this.runtimeInstanceConfig = runtimeInstanceConfig;
+ this.metaStorage = MetaStorage.getInstance(runtimeInstanceConfig.getRegistryPluginType());
+ }
+
+ public void init () {
+ metaStorage.init();
+
+ }
+
+ public void start() {
+ metaStorage.start();
+
+ // TODO:从registry发现admin server地址列表
+
+ // 创建gRPC通道
+ channel = ManagedChannelBuilder.forAddress(adminServerAddr, adminServerPort)
+ .usePlaintext()
+ .build();
+
+ adminStub = AdminBiStreamServiceGrpc.newStub(channel);
+
+ responseObserver = new StreamObserver<Payload>() {
+ @Override
+ public void onNext(Payload response) {
+ log.info("runtime receive message: {} ", response);
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ log.error("runtime receive error message: {}", t.getMessage());
+ }
+
+ @Override
+ public void onCompleted() {
+ log.info("runtime finished receive message and completed");
+ }
+ };
+
+ requestObserver = adminStub.invokeBiStream(responseObserver);
+ StringValue stringValue = StringValue.newBuilder().setValue("test").build();
+ Any test = Any.pack(stringValue);
+ // 发送请求
+ for (int i = 0; i < 10; i++) {
+ Payload request = Payload.newBuilder()
+ .setBody(test)
+ .build();
+ requestObserver.onNext(request);
+ }
+
+ }
+
+ public void shutdown(){
+ requestObserver.onCompleted();
+ channel.shutdown();
+ }
+
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/boot/RuntimeInstanceStarter.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/boot/RuntimeInstanceStarter.java
new file mode 100644
index 000000000..bea493b75
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/boot/RuntimeInstanceStarter.java
@@ -0,0 +1,54 @@
+package org.apache.eventmesh.runtime.boot;
+
+import org.apache.eventmesh.common.config.ConfigService;
+import org.apache.eventmesh.runtime.RuntimeInstanceConfig;
+import org.apache.eventmesh.runtime.rpc.AdminBiStreamServiceGrpc;
+import org.apache.eventmesh.runtime.rpc.AdminBiStreamServiceGrpc.AdminBiStreamServiceStub;
+import org.apache.eventmesh.runtime.rpc.Payload;
+import org.apache.eventmesh.runtime.util.BannerUtil;
+
+import java.io.File;
+
+import io.grpc.ManagedChannel;
+import io.grpc.ManagedChannelBuilder;
+import io.grpc.stub.StreamObserver;
+
+import com.google.protobuf.Any;
+import com.google.protobuf.StringValue;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class RuntimeInstanceStarter {
+
+ public static void main(String[] args) {
+ // TODO:加载配置,从环境变量中拿到JobID,并去Admin获取Job配置
+ // TODO:启动grpc server,连接META获取Admin地址,上报心跳
+ // TODO:添加shutDownHook
+
+ try {
+ RuntimeInstanceConfig runtimeInstanceConfig = ConfigService.getInstance().buildConfigInstance(RuntimeInstanceConfig.class);
+ RuntimeInstance runtimeInstance = new RuntimeInstance(runtimeInstanceConfig);
+ BannerUtil.generateBanner();
+ runtimeInstance.init();
+ runtimeInstance.start();
+
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> {
+ try {
+ log.info("runtime shutting down hook begin.");
+ long start = System.currentTimeMillis();
+ runtimeInstance.shutdown();
+ long end = System.currentTimeMillis();
+
+ log.info("runtime shutdown cost {}ms", end - start);
+ } catch (Exception e) {
+ log.error("exception when shutdown.", e);
+ }
+ }));
+ } catch (Throwable e) {
+ log.error("runtime start fail.", e);
+ System.exit(-1);
+ }
+
+ }
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorRuntime.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorRuntime.java
new file mode 100644
index 000000000..20b3d0378
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorRuntime.java
@@ -0,0 +1,115 @@
+package org.apache.eventmesh.runtime.connector;
+
+import org.apache.eventmesh.common.ThreadPoolFactory;
+import org.apache.eventmesh.openconnect.api.ConnectorCreateService;
+import org.apache.eventmesh.openconnect.api.config.Config;
+import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+import org.apache.eventmesh.openconnect.api.connector.Connector;
+import org.apache.eventmesh.openconnect.api.connector.ConnectorContext;
+import org.apache.eventmesh.openconnect.api.connector.SinkConnectorContext;
+import org.apache.eventmesh.openconnect.api.connector.SourceConnectorContext;
+import org.apache.eventmesh.openconnect.api.factory.ConnectorPluginFactory;
+import org.apache.eventmesh.openconnect.api.sink.Sink;
+import org.apache.eventmesh.openconnect.api.source.Source;
+import org.apache.eventmesh.openconnect.offsetmgmt.api.data.ConnectRecord;
+import org.apache.eventmesh.openconnect.util.ConfigUtil;
+import org.apache.eventmesh.runtime.Runtime;
+import org.apache.eventmesh.runtime.RuntimeInstanceConfig;
+
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class ConnectorRuntime implements Runtime {
+
+ private RuntimeInstanceConfig runtimeInstanceConfig;
+
+ private ConnectorRuntimeConfig connectorRuntimeConfig;
+
+ private Source sourceConnector;
+
+ private Sink sinkConnector;
+
+ private final ExecutorService sourceService =
+ ThreadPoolFactory.createSingleExecutor("eventMesh-sourceService");
+
+ private final ExecutorService startService =
+ ThreadPoolFactory.createSingleExecutor("eventMesh-sourceWorker-startService");
+
+ private BlockingQueue<ConnectRecord> queue;
+
+ private volatile boolean isRunning = false;
+
+
+ public ConnectorRuntime(RuntimeInstanceConfig runtimeInstanceConfig) {
+ this.runtimeInstanceConfig = runtimeInstanceConfig;
+ this.queue = new LinkedBlockingQueue<>(1000);
+ }
+
+ @Override
+ public void init() throws Exception {
+ ConnectorCreateService<?> sourceConnectorCreateService = ConnectorPluginFactory.createConnector(
+ connectorRuntimeConfig.getSourceConnectorType());
+ sourceConnector = (Source)sourceConnectorCreateService.create();
+
+ SourceConfig sourceConfig = (SourceConfig) ConfigUtil.parse(connectorRuntimeConfig.getSourceConnectorConfig(), sourceConnector.configClass());
+ SourceConnectorContext sourceConnectorContext = new SourceConnectorContext();
+ sourceConnectorContext.setSourceConfig(sourceConfig);
+// sourceConnectorContext.setOffsetStorageReader(offsetStorageReader);
+
+ sourceConnector.init(sourceConnectorContext);
+
+ ConnectorCreateService<?> sinkConnectorCreateService = ConnectorPluginFactory.createConnector(connectorRuntimeConfig.getSinkConnectorType());
+ sinkConnector = (Sink)sinkConnectorCreateService.create();
+
+ SinkConfig sinkConfig = (SinkConfig) ConfigUtil.parse(connectorRuntimeConfig.getSinkConnectorConfig(), sinkConnector.configClass());
+ SinkConnectorContext sinkConnectorContext = new SinkConnectorContext();
+ sinkConnectorContext.setSinkConfig(sinkConfig);
+ sinkConnector.init(sinkConnectorContext);
+ }
+
+ @Override
+ public void start() throws Exception {
+
+// sourceConnector.start();
+// sourceConnector.poll();
+// start offsetMgmtService
+// offsetManagementService.start();
+ isRunning = true;
+// pollService.execute(this::startPollAndSend);
+
+ sourceService.execute(
+ () -> {
+ try {
+ startSourceConnector();
+ } catch (Exception e) {
+ log.error("source connector [{}] start fail", sourceConnector.name(), e);
+// this.stop();
+ }
+ });
+
+
+ }
+
+ @Override
+ public void stop() throws Exception {
+
+ }
+
+ private void startSourceConnector() throws Exception {
+ sourceConnector.start();
+ while (isRunning) {
+ List<ConnectRecord> connectorRecordList = sourceConnector.poll();
+ if (connectorRecordList != null && !connectorRecordList.isEmpty()) {
+ for (ConnectRecord record : connectorRecordList) {
+ queue.put(record);
+ }
+ }
+ }
+ }
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorRuntimeConfig.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorRuntimeConfig.java
new file mode 100644
index 000000000..426645fae
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorRuntimeConfig.java
@@ -0,0 +1,26 @@
+package org.apache.eventmesh.runtime.connector;
+
+import java.util.Map;
+
+import lombok.Data;
+
+@Data
+public class ConnectorRuntimeConfig {
+
+ private String connectorName;
+
+ private String connectorRuntimeInstanceId;
+
+ private String sourceConnectorType;
+
+ private String sourceConnectorDesc;
+
+ private Map<String, Object> sourceConnectorConfig;
+
+ private String sinkConnectorType;
+
+ private String sinkConnectorDesc;
+
+ private Map<String, Object> sinkConnectorConfig;
+
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorRuntimeFactory.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorRuntimeFactory.java
new file mode 100644
index 000000000..fb179952b
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorRuntimeFactory.java
@@ -0,0 +1,23 @@
+package org.apache.eventmesh.runtime.connector;
+
+import org.apache.eventmesh.runtime.Runtime;
+import org.apache.eventmesh.runtime.RuntimeFactory;
+import org.apache.eventmesh.runtime.RuntimeInstanceConfig;
+
+public class ConnectorRuntimeFactory implements RuntimeFactory {
+
+ @Override
+ public void init() throws Exception {
+
+ }
+
+ @Override
+ public Runtime createRuntime(RuntimeInstanceConfig runtimeInstanceConfig) {
+ return new ConnectorRuntime(runtimeInstanceConfig);
+ }
+
+ @Override
+ public void close() throws Exception {
+
+ }
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/function/FunctionRuntime.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/function/FunctionRuntime.java
new file mode 100644
index 000000000..152580807
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/function/FunctionRuntime.java
@@ -0,0 +1,21 @@
+package org.apache.eventmesh.runtime.function;
+
+import org.apache.eventmesh.runtime.Runtime;
+
+public class FunctionRuntime implements Runtime {
+
+ @Override
+ public void init() throws Exception {
+
+ }
+
+ @Override
+ public void start() throws Exception {
+
+ }
+
+ @Override
+ public void stop() throws Exception {
+
+ }
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/function/FunctionRuntimeConfig.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/function/FunctionRuntimeConfig.java
new file mode 100644
index 000000000..977744657
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/function/FunctionRuntimeConfig.java
@@ -0,0 +1,4 @@
+package org.apache.eventmesh.runtime.function;
+
+public class FunctionRuntimeConfig {
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/function/FunctionRuntimeFactory.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/function/FunctionRuntimeFactory.java
new file mode 100644
index 000000000..c3b9916f7
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/function/FunctionRuntimeFactory.java
@@ -0,0 +1,24 @@
+package org.apache.eventmesh.runtime.function;
+
+import org.apache.eventmesh.runtime.Runtime;
+import org.apache.eventmesh.runtime.RuntimeFactory;
+import org.apache.eventmesh.runtime.RuntimeInstanceConfig;
+
+public class FunctionRuntimeFactory implements RuntimeFactory {
+
+ @Override
+ public void init() throws Exception {
+
+ }
+
+ @Override
+ public Runtime createRuntime(RuntimeInstanceConfig runtimeInstanceConfig) {
+ return null;
+ }
+
+ @Override
+ public void close() throws Exception {
+
+ }
+
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/manager/ConnectorManager.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/manager/ConnectorManager.java
new file mode 100644
index 000000000..d71138868
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/manager/ConnectorManager.java
@@ -0,0 +1,4 @@
+package org.apache.eventmesh.runtime.manager;
+
+public class ConnectorManager {
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/manager/FunctionManager.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/manager/FunctionManager.java
new file mode 100644
index 000000000..d3b7c1540
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/manager/FunctionManager.java
@@ -0,0 +1,4 @@
+package org.apache.eventmesh.runtime.manager;
+
+public class FunctionManager {
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/manager/MeshManager.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/manager/MeshManager.java
new file mode 100644
index 000000000..7102fe220
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/manager/MeshManager.java
@@ -0,0 +1,4 @@
+package org.apache.eventmesh.runtime.manager;
+
+public class MeshManager {
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/mesh/MeshRuntime.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/mesh/MeshRuntime.java
new file mode 100644
index 000000000..941fb74fc
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/mesh/MeshRuntime.java
@@ -0,0 +1,21 @@
+package org.apache.eventmesh.runtime.mesh;
+
+import org.apache.eventmesh.runtime.Runtime;
+
+public class MeshRuntime implements Runtime {
+
+ @Override
+ public void init() throws Exception {
+
+ }
+
+ @Override
+ public void start() throws Exception {
+
+ }
+
+ @Override
+ public void stop() throws Exception {
+
+ }
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/mesh/MeshRuntimeConfig.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/mesh/MeshRuntimeConfig.java
new file mode 100644
index 000000000..dd6a6be01
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/mesh/MeshRuntimeConfig.java
@@ -0,0 +1,4 @@
+package org.apache.eventmesh.runtime.mesh;
+
+public class MeshRuntimeConfig {
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/mesh/MeshRuntimeFactory.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/mesh/MeshRuntimeFactory.java
new file mode 100644
index 000000000..5217051bb
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/mesh/MeshRuntimeFactory.java
@@ -0,0 +1,24 @@
+package org.apache.eventmesh.runtime.mesh;
+
+import org.apache.eventmesh.runtime.Runtime;
+import org.apache.eventmesh.runtime.RuntimeFactory;
+import org.apache.eventmesh.runtime.RuntimeInstanceConfig;
+
+public class MeshRuntimeFactory implements RuntimeFactory {
+
+ @Override
+ public void init() throws Exception {
+
+ }
+
+ @Override
+ public Runtime createRuntime(RuntimeInstanceConfig runtimeInstanceConfig) {
+ return null;
+ }
+
+ @Override
+ public void close() throws Exception {
+
+ }
+
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/meta/MetaStorage.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/meta/MetaStorage.java
new file mode 100644
index 000000000..41da6994f
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/meta/MetaStorage.java
@@ -0,0 +1,148 @@
+/*
+ * 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.runtime.meta;
+
+import org.apache.eventmesh.api.exception.MetaException;
+import org.apache.eventmesh.api.meta.MetaService;
+import org.apache.eventmesh.api.meta.MetaServiceListener;
+import org.apache.eventmesh.api.meta.bo.EventMeshAppSubTopicInfo;
+import org.apache.eventmesh.api.meta.bo.EventMeshServicePubTopicInfo;
+import org.apache.eventmesh.api.meta.dto.EventMeshDataInfo;
+import org.apache.eventmesh.api.meta.dto.EventMeshRegisterInfo;
+import org.apache.eventmesh.api.meta.dto.EventMeshUnRegisterInfo;
+import org.apache.eventmesh.spi.EventMeshExtensionFactory;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class MetaStorage {
+
+ private static final Map<String, MetaStorage> META_CACHE = new HashMap<>(16);
+
+ private MetaService metaService;
+
+ private final AtomicBoolean inited = new AtomicBoolean(false);
+
+ private final AtomicBoolean started = new AtomicBoolean(false);
+
+ private final AtomicBoolean shutdown = new AtomicBoolean(false);
+
+ private MetaStorage() {
+
+ }
+
+ public static MetaStorage getInstance(String metaPluginType) {
+ return META_CACHE.computeIfAbsent(metaPluginType, MetaStorage::metaStorageBuilder);
+ }
+
+ private static MetaStorage metaStorageBuilder(String metaPluginType) {
+ MetaService metaServiceExt = EventMeshExtensionFactory.getExtension(MetaService.class, metaPluginType);
+ if (metaServiceExt == null) {
+ String errorMsg = "can't load the metaService plugin, please check.";
+ log.error(errorMsg);
+ throw new RuntimeException(errorMsg);
+ }
+ MetaStorage metaStorage = new MetaStorage();
+ metaStorage.metaService = metaServiceExt;
+
+ return metaStorage;
+ }
+
+ public void init() throws MetaException {
+ if (!inited.compareAndSet(false, true)) {
+ return;
+ }
+ metaService.init();
+ }
+
+ public void start() throws MetaException {
+ if (!started.compareAndSet(false, true)) {
+ return;
+ }
+ metaService.start();
+ }
+
+ public void shutdown() throws MetaException {
+ inited.compareAndSet(true, false);
+ started.compareAndSet(true, false);
+ if (!shutdown.compareAndSet(false, true)) {
+ return;
+ }
+ synchronized (this) {
+ metaService.shutdown();
+ }
+ }
+
+ public List<EventMeshDataInfo> findEventMeshInfoByCluster(String clusterName) throws MetaException {
+ return metaService.findEventMeshInfoByCluster(clusterName);
+ }
+
+ public List<EventMeshDataInfo> findAllEventMeshInfo() throws MetaException {
+ return metaService.findAllEventMeshInfo();
+ }
+
+ public Map<String, Map<String, Integer>> findEventMeshClientDistributionData(String clusterName, String group, String purpose)
+ throws MetaException {
+ return metaService.findEventMeshClientDistributionData(clusterName, group, purpose);
+ }
+
+ public void registerMetadata(Map<String, String> metadata) {
+ metaService.registerMetadata(metadata);
+ }
+
+ public void updateMetaData(Map<String, String> metadata) {
+ metaService.updateMetaData(metadata);
+ }
+
+ public boolean register(EventMeshRegisterInfo eventMeshRegisterInfo) throws MetaException {
+ return metaService.register(eventMeshRegisterInfo);
+ }
+
+ public boolean unRegister(EventMeshUnRegisterInfo eventMeshUnRegisterInfo) throws MetaException {
+ return metaService.unRegister(eventMeshUnRegisterInfo);
+ }
+
+ public List<EventMeshServicePubTopicInfo> findEventMeshServicePubTopicInfos() throws Exception {
+ return metaService.findEventMeshServicePubTopicInfos();
+ }
+
+ public EventMeshAppSubTopicInfo findEventMeshAppSubTopicInfo(String group) throws Exception {
+ return metaService.findEventMeshAppSubTopicInfoByGroup(group);
+ }
+
+ public Map<String, String> getMetaData(String key, boolean fuzzyEnabled) {
+ return metaService.getMetaData(key, fuzzyEnabled);
+ }
+
+ public void getMetaDataWithListener(MetaServiceListener metaServiceListener, String key) throws Exception {
+ metaService.getMetaDataWithListener(metaServiceListener, key);
+ }
+
+ public AtomicBoolean getInited() {
+ return inited;
+ }
+
+ public AtomicBoolean getStarted() {
+ return started;
+ }
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/AdminBiStreamServiceGrpc.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/AdminBiStreamServiceGrpc.java
new file mode 100644
index 000000000..2d591b048
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/AdminBiStreamServiceGrpc.java
@@ -0,0 +1,260 @@
+package org.apache.eventmesh.runtime.rpc;
+
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+
+/**
+ */
+@javax.annotation.Generated(
+ value = "by gRPC proto compiler (version 1.40.0)",
+ comments = "Source: event_mesh_admin_service.proto")
+@io.grpc.stub.annotations.GrpcGenerated
+public final class AdminBiStreamServiceGrpc {
+
+ private AdminBiStreamServiceGrpc() {}
+
+ public static final String SERVICE_NAME = "AdminBiStreamService";
+
+ // Static method descriptors that strictly reflect the proto.
+ private static volatile io.grpc.MethodDescriptor<Payload,
+ Payload> getInvokeBiStreamMethod;
+
+ @io.grpc.stub.annotations.RpcMethod(
+ fullMethodName = SERVICE_NAME + '/' + "invokeBiStream",
+ requestType = Payload.class,
+ responseType = Payload.class,
+ methodType = io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING)
+ public static io.grpc.MethodDescriptor<Payload,
+ Payload> getInvokeBiStreamMethod() {
+ io.grpc.MethodDescriptor<Payload, Payload> getInvokeBiStreamMethod;
+ if ((getInvokeBiStreamMethod = AdminBiStreamServiceGrpc.getInvokeBiStreamMethod) == null) {
+ synchronized (AdminBiStreamServiceGrpc.class) {
+ if ((getInvokeBiStreamMethod = AdminBiStreamServiceGrpc.getInvokeBiStreamMethod) == null) {
+ AdminBiStreamServiceGrpc.getInvokeBiStreamMethod = getInvokeBiStreamMethod =
+ io.grpc.MethodDescriptor.<Payload, Payload>newBuilder()
+ .setType(io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING)
+ .setFullMethodName(generateFullMethodName(SERVICE_NAME, "invokeBiStream"))
+ .setSampledToLocalTracing(true)
+ .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+ Payload.getDefaultInstance()))
+ .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+ Payload.getDefaultInstance()))
+ .setSchemaDescriptor(new AdminBiStreamServiceMethodDescriptorSupplier("invokeBiStream"))
+ .build();
+ }
+ }
+ }
+ return getInvokeBiStreamMethod;
+ }
+
+ /**
+ * Creates a new async stub that supports all call types for the service
+ */
+ public static AdminBiStreamServiceStub newStub(io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory<AdminBiStreamServiceStub> factory =
+ new io.grpc.stub.AbstractStub.StubFactory<AdminBiStreamServiceStub>() {
+ @Override
+ public AdminBiStreamServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminBiStreamServiceStub(channel, callOptions);
+ }
+ };
+ return AdminBiStreamServiceStub.newStub(factory, channel);
+ }
+
+ /**
+ * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+ */
+ public static AdminBiStreamServiceBlockingStub newBlockingStub(
+ io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory<AdminBiStreamServiceBlockingStub> factory =
+ new io.grpc.stub.AbstractStub.StubFactory<AdminBiStreamServiceBlockingStub>() {
+ @Override
+ public AdminBiStreamServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminBiStreamServiceBlockingStub(channel, callOptions);
+ }
+ };
+ return AdminBiStreamServiceBlockingStub.newStub(factory, channel);
+ }
+
+ /**
+ * Creates a new ListenableFuture-style stub that supports unary calls on the service
+ */
+ public static AdminBiStreamServiceFutureStub newFutureStub(
+ io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory<AdminBiStreamServiceFutureStub> factory =
+ new io.grpc.stub.AbstractStub.StubFactory<AdminBiStreamServiceFutureStub>() {
+ @Override
+ public AdminBiStreamServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminBiStreamServiceFutureStub(channel, callOptions);
+ }
+ };
+ return AdminBiStreamServiceFutureStub.newStub(factory, channel);
+ }
+
+ /**
+ */
+ public static abstract class AdminBiStreamServiceImplBase implements io.grpc.BindableService {
+
+ /**
+ */
+ public io.grpc.stub.StreamObserver<Payload> invokeBiStream(
+ io.grpc.stub.StreamObserver<Payload> responseObserver) {
+ return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getInvokeBiStreamMethod(), responseObserver);
+ }
+
+ @Override public final io.grpc.ServerServiceDefinition bindService() {
+ return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+ .addMethod(
+ getInvokeBiStreamMethod(),
+ io.grpc.stub.ServerCalls.asyncBidiStreamingCall(
+ new MethodHandlers<
+ Payload,
+ Payload>(
+ this, METHODID_INVOKE_BI_STREAM)))
+ .build();
+ }
+ }
+
+ /**
+ */
+ public static final class AdminBiStreamServiceStub extends io.grpc.stub.AbstractAsyncStub<AdminBiStreamServiceStub> {
+ private AdminBiStreamServiceStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @Override
+ protected AdminBiStreamServiceStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminBiStreamServiceStub(channel, callOptions);
+ }
+
+ /**
+ */
+ public io.grpc.stub.StreamObserver<Payload> invokeBiStream(
+ io.grpc.stub.StreamObserver<Payload> responseObserver) {
+ return io.grpc.stub.ClientCalls.asyncBidiStreamingCall(
+ getChannel().newCall(getInvokeBiStreamMethod(), getCallOptions()), responseObserver);
+ }
+ }
+
+ /**
+ */
+ public static final class AdminBiStreamServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<AdminBiStreamServiceBlockingStub> {
+ private AdminBiStreamServiceBlockingStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @Override
+ protected AdminBiStreamServiceBlockingStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminBiStreamServiceBlockingStub(channel, callOptions);
+ }
+ }
+
+ /**
+ */
+ public static final class AdminBiStreamServiceFutureStub extends io.grpc.stub.AbstractFutureStub<AdminBiStreamServiceFutureStub> {
+ private AdminBiStreamServiceFutureStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @Override
+ protected AdminBiStreamServiceFutureStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminBiStreamServiceFutureStub(channel, callOptions);
+ }
+ }
+
+ private static final int METHODID_INVOKE_BI_STREAM = 0;
+
+ private static final class MethodHandlers<Req, Resp> implements
+ io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+ io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+ io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+ io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+ private final AdminBiStreamServiceImplBase serviceImpl;
+ private final int methodId;
+
+ MethodHandlers(AdminBiStreamServiceImplBase serviceImpl, int methodId) {
+ this.serviceImpl = serviceImpl;
+ this.methodId = methodId;
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+ switch (methodId) {
+ default:
+ throw new AssertionError();
+ }
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public io.grpc.stub.StreamObserver<Req> invoke(
+ io.grpc.stub.StreamObserver<Resp> responseObserver) {
+ switch (methodId) {
+ case METHODID_INVOKE_BI_STREAM:
+ return (io.grpc.stub.StreamObserver<Req>) serviceImpl.invokeBiStream(
+ (io.grpc.stub.StreamObserver<Payload>) responseObserver);
+ default:
+ throw new AssertionError();
+ }
+ }
+ }
+
+ private static abstract class AdminBiStreamServiceBaseDescriptorSupplier
+ implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+ AdminBiStreamServiceBaseDescriptorSupplier() {}
+
+ @Override
+ public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+ return EventMeshAdminService.getDescriptor();
+ }
+
+ @Override
+ public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+ return getFileDescriptor().findServiceByName("AdminBiStreamService");
+ }
+ }
+
+ private static final class AdminBiStreamServiceFileDescriptorSupplier
+ extends AdminBiStreamServiceBaseDescriptorSupplier {
+ AdminBiStreamServiceFileDescriptorSupplier() {}
+ }
+
+ private static final class AdminBiStreamServiceMethodDescriptorSupplier
+ extends AdminBiStreamServiceBaseDescriptorSupplier
+ implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+ private final String methodName;
+
+ AdminBiStreamServiceMethodDescriptorSupplier(String methodName) {
+ this.methodName = methodName;
+ }
+
+ @Override
+ public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+ return getServiceDescriptor().findMethodByName(methodName);
+ }
+ }
+
+ private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+ public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+ io.grpc.ServiceDescriptor result = serviceDescriptor;
+ if (result == null) {
+ synchronized (AdminBiStreamServiceGrpc.class) {
+ result = serviceDescriptor;
+ if (result == null) {
+ serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+ .setSchemaDescriptor(new AdminBiStreamServiceFileDescriptorSupplier())
+ .addMethod(getInvokeBiStreamMethod())
+ .build();
+ }
+ }
+ }
+ return result;
+ }
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/AdminServiceGrpc.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/AdminServiceGrpc.java
new file mode 100644
index 000000000..d6c17139f
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/AdminServiceGrpc.java
@@ -0,0 +1,276 @@
+package org.apache.eventmesh.runtime.rpc;
+
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+
+/**
+ */
+@javax.annotation.Generated(
+ value = "by gRPC proto compiler (version 1.40.0)",
+ comments = "Source: event_mesh_admin_service.proto")
+@io.grpc.stub.annotations.GrpcGenerated
+public final class AdminServiceGrpc {
+
+ private AdminServiceGrpc() {}
+
+ public static final String SERVICE_NAME = "AdminService";
+
+ // Static method descriptors that strictly reflect the proto.
+ private static volatile io.grpc.MethodDescriptor<Payload,
+ Payload> getInvokeMethod;
+
+ @io.grpc.stub.annotations.RpcMethod(
+ fullMethodName = SERVICE_NAME + '/' + "invoke",
+ requestType = Payload.class,
+ responseType = Payload.class,
+ methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+ public static io.grpc.MethodDescriptor<Payload,
+ Payload> getInvokeMethod() {
+ io.grpc.MethodDescriptor<Payload, Payload> getInvokeMethod;
+ if ((getInvokeMethod = AdminServiceGrpc.getInvokeMethod) == null) {
+ synchronized (AdminServiceGrpc.class) {
+ if ((getInvokeMethod = AdminServiceGrpc.getInvokeMethod) == null) {
+ AdminServiceGrpc.getInvokeMethod = getInvokeMethod =
+ io.grpc.MethodDescriptor.<Payload, Payload>newBuilder()
+ .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+ .setFullMethodName(generateFullMethodName(SERVICE_NAME, "invoke"))
+ .setSampledToLocalTracing(true)
+ .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+ Payload.getDefaultInstance()))
+ .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+ Payload.getDefaultInstance()))
+ .setSchemaDescriptor(new AdminServiceMethodDescriptorSupplier("invoke"))
+ .build();
+ }
+ }
+ }
+ return getInvokeMethod;
+ }
+
+ /**
+ * Creates a new async stub that supports all call types for the service
+ */
+ public static AdminServiceStub newStub(io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory<AdminServiceStub> factory =
+ new io.grpc.stub.AbstractStub.StubFactory<AdminServiceStub>() {
+ @Override
+ public AdminServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceStub(channel, callOptions);
+ }
+ };
+ return AdminServiceStub.newStub(factory, channel);
+ }
+
+ /**
+ * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+ */
+ public static AdminServiceBlockingStub newBlockingStub(
+ io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory<AdminServiceBlockingStub> factory =
+ new io.grpc.stub.AbstractStub.StubFactory<AdminServiceBlockingStub>() {
+ @Override
+ public AdminServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceBlockingStub(channel, callOptions);
+ }
+ };
+ return AdminServiceBlockingStub.newStub(factory, channel);
+ }
+
+ /**
+ * Creates a new ListenableFuture-style stub that supports unary calls on the service
+ */
+ public static AdminServiceFutureStub newFutureStub(
+ io.grpc.Channel channel) {
+ io.grpc.stub.AbstractStub.StubFactory<AdminServiceFutureStub> factory =
+ new io.grpc.stub.AbstractStub.StubFactory<AdminServiceFutureStub>() {
+ @Override
+ public AdminServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceFutureStub(channel, callOptions);
+ }
+ };
+ return AdminServiceFutureStub.newStub(factory, channel);
+ }
+
+ /**
+ */
+ public static abstract class AdminServiceImplBase implements io.grpc.BindableService {
+
+ /**
+ */
+ public void invoke(Payload request,
+ io.grpc.stub.StreamObserver<Payload> responseObserver) {
+ io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getInvokeMethod(), responseObserver);
+ }
+
+ @Override public final io.grpc.ServerServiceDefinition bindService() {
+ return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+ .addMethod(
+ getInvokeMethod(),
+ io.grpc.stub.ServerCalls.asyncUnaryCall(
+ new MethodHandlers<
+ Payload,
+ Payload>(
+ this, METHODID_INVOKE)))
+ .build();
+ }
+ }
+
+ /**
+ */
+ public static final class AdminServiceStub extends io.grpc.stub.AbstractAsyncStub<AdminServiceStub> {
+ private AdminServiceStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @Override
+ protected AdminServiceStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceStub(channel, callOptions);
+ }
+
+ /**
+ */
+ public void invoke(Payload request,
+ io.grpc.stub.StreamObserver<Payload> responseObserver) {
+ io.grpc.stub.ClientCalls.asyncUnaryCall(
+ getChannel().newCall(getInvokeMethod(), getCallOptions()), request, responseObserver);
+ }
+ }
+
+ /**
+ */
+ public static final class AdminServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<AdminServiceBlockingStub> {
+ private AdminServiceBlockingStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @Override
+ protected AdminServiceBlockingStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceBlockingStub(channel, callOptions);
+ }
+
+ /**
+ */
+ public Payload invoke(Payload request) {
+ return io.grpc.stub.ClientCalls.blockingUnaryCall(
+ getChannel(), getInvokeMethod(), getCallOptions(), request);
+ }
+ }
+
+ /**
+ */
+ public static final class AdminServiceFutureStub extends io.grpc.stub.AbstractFutureStub<AdminServiceFutureStub> {
+ private AdminServiceFutureStub(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ super(channel, callOptions);
+ }
+
+ @Override
+ protected AdminServiceFutureStub build(
+ io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+ return new AdminServiceFutureStub(channel, callOptions);
+ }
+
+ /**
+ */
+ public com.google.common.util.concurrent.ListenableFuture<Payload> invoke(
+ Payload request) {
+ return io.grpc.stub.ClientCalls.futureUnaryCall(
+ getChannel().newCall(getInvokeMethod(), getCallOptions()), request);
+ }
+ }
+
+ private static final int METHODID_INVOKE = 0;
+
+ private static final class MethodHandlers<Req, Resp> implements
+ io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+ io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+ io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+ io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+ private final AdminServiceImplBase serviceImpl;
+ private final int methodId;
+
+ MethodHandlers(AdminServiceImplBase serviceImpl, int methodId) {
+ this.serviceImpl = serviceImpl;
+ this.methodId = methodId;
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+ switch (methodId) {
+ case METHODID_INVOKE:
+ serviceImpl.invoke((Payload) request,
+ (io.grpc.stub.StreamObserver<Payload>) responseObserver);
+ break;
+ default:
+ throw new AssertionError();
+ }
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public io.grpc.stub.StreamObserver<Req> invoke(
+ io.grpc.stub.StreamObserver<Resp> responseObserver) {
+ switch (methodId) {
+ default:
+ throw new AssertionError();
+ }
+ }
+ }
+
+ private static abstract class AdminServiceBaseDescriptorSupplier
+ implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+ AdminServiceBaseDescriptorSupplier() {}
+
+ @Override
+ public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+ return EventMeshAdminService.getDescriptor();
+ }
+
+ @Override
+ public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+ return getFileDescriptor().findServiceByName("AdminService");
+ }
+ }
+
+ private static final class AdminServiceFileDescriptorSupplier
+ extends AdminServiceBaseDescriptorSupplier {
+ AdminServiceFileDescriptorSupplier() {}
+ }
+
+ private static final class AdminServiceMethodDescriptorSupplier
+ extends AdminServiceBaseDescriptorSupplier
+ implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+ private final String methodName;
+
+ AdminServiceMethodDescriptorSupplier(String methodName) {
+ this.methodName = methodName;
+ }
+
+ @Override
+ public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+ return getServiceDescriptor().findMethodByName(methodName);
+ }
+ }
+
+ private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+ public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+ io.grpc.ServiceDescriptor result = serviceDescriptor;
+ if (result == null) {
+ synchronized (AdminServiceGrpc.class) {
+ result = serviceDescriptor;
+ if (result == null) {
+ serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+ .setSchemaDescriptor(new AdminServiceFileDescriptorSupplier())
+ .addMethod(getInvokeMethod())
+ .build();
+ }
+ }
+ }
+ return result;
+ }
+}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/EventMeshAdminService.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/EventMeshAdminService.java
similarity index 94%
rename from eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/EventMeshAdminService.java
rename to eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/EventMeshAdminService.java
index 3c2e81217..f188113ce 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/EventMeshAdminService.java
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/EventMeshAdminService.java
@@ -1,4 +1,4 @@
-package org.apache.eventmesh.common.grpc;// Generated by the protocol buffer compiler. DO NOT EDIT!
+package org.apache.eventmesh.runtime.rpc;// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: event_mesh_admin_service.proto
public final class EventMeshAdminService {
@@ -43,9 +43,9 @@ public final class EventMeshAdminService {
"alue\030\002 \001(\t:\0028\001\"J\n\007Payload\022\033\n\010metadata\030\002 " +
"\001(\0132\t.Metadata\022\"\n\004body\030\003 \001(\0132\024.google.pr" +
"otobuf.Any2B\n\024AdminBiStreamService\022*\n\016in" +
- "vokeBiStream\022\010.Payload\032\010.Payload\"\000(\0010\00124" +
- "\n\014AdminService\022$\n\014invokeStream\022\010.Payload" +
- "\032\010.Payload\"\000B\002P\001b\006proto3"
+ "vokeBiStream\022\010.Payload\032\010.Payload\"\000(\0010\0012." +
+ "\n\014AdminService\022\036\n\006invoke\022\010.Payload\032\010.Pay" +
+ "load\"\000B\002P\001b\006proto3"
};
descriptor = com.google.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData,
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/Metadata.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/Metadata.java
similarity index 99%
rename from eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/Metadata.java
rename to eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/Metadata.java
index 6361ee252..37773945f 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/Metadata.java
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/Metadata.java
@@ -1,4 +1,4 @@
-package org.apache.eventmesh.common.grpc;// Generated by the protocol buffer compiler. DO NOT EDIT!
+package org.apache.eventmesh.runtime.rpc;// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: event_mesh_admin_service.proto
/**
@@ -7,7 +7,7 @@ package org.apache.eventmesh.common.grpc;// Generated by the protocol buffer com
public final class Metadata extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:Metadata)
- MetadataOrBuilder {
+ MetadataOrBuilder {
private static final long serialVersionUID = 0L;
// Use Metadata.newBuilder() to construct.
private Metadata(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
@@ -412,7 +412,7 @@ private static final long serialVersionUID = 0L;
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:Metadata)
- MetadataOrBuilder {
+ MetadataOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return EventMeshAdminService.internal_static_Metadata_descriptor;
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/MetadataOrBuilder.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/MetadataOrBuilder.java
similarity index 94%
rename from eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/MetadataOrBuilder.java
rename to eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/MetadataOrBuilder.java
index efed0c02a..30a3fd5ec 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/MetadataOrBuilder.java
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/MetadataOrBuilder.java
@@ -1,4 +1,4 @@
-package org.apache.eventmesh.common.grpc;// Generated by the protocol buffer compiler. DO NOT EDIT!
+package org.apache.eventmesh.runtime.rpc;// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: event_mesh_admin_service.proto
public interface MetadataOrBuilder extends
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/Payload.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/Payload.java
similarity index 99%
rename from eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/Payload.java
rename to eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/Payload.java
index a23fcc978..30d7af8f0 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/Payload.java
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/Payload.java
@@ -1,4 +1,4 @@
-package org.apache.eventmesh.common.grpc;// Generated by the protocol buffer compiler. DO NOT EDIT!
+package org.apache.eventmesh.runtime.rpc;// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: event_mesh_admin_service.proto
/**
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/PayloadOrBuilder.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/PayloadOrBuilder.java
similarity index 93%
rename from eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/PayloadOrBuilder.java
rename to eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/PayloadOrBuilder.java
index 77c968020..7c4c53064 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/grpc/PayloadOrBuilder.java
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/rpc/PayloadOrBuilder.java
@@ -1,4 +1,4 @@
-package org.apache.eventmesh.common.grpc;// Generated by the protocol buffer compiler. DO NOT EDIT!
+package org.apache.eventmesh.runtime.rpc;// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: event_mesh_admin_service.proto
public interface PayloadOrBuilder extends
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/util/BannerUtil.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/util/BannerUtil.java
new file mode 100644
index 000000000..256949418
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/util/BannerUtil.java
@@ -0,0 +1,69 @@
+/*
+ * 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.runtime.util;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * EventMesh banner util
+ */
+@Slf4j
+public class BannerUtil {
+
+ private static final String LOGO =
+ " EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEME EMEMEMEME EMEMEMEME " + System.lineSeparator()
+ + " EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEME EMEMEMEMEMEMEMEME EMEMEMEMEMEMEMEMEM " + System.lineSeparator()
+ + " EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEM EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEME " + System.lineSeparator()
+ + "EMEMEMEMEMEM EMEMEMEMEM EMEMEMEMEMEMEMEME EMEMEMEMEME" + System.lineSeparator()
+ + "EMEMEMEME EMEMEMEMEM EMEMEMEMEMEME EMEMEMEME" + System.lineSeparator()
+ + "EMEMEME EMEMEMEMEM EMEME EMEMEMEM" + System.lineSeparator()
+ + "EMEMEME EMEMEMEMEM EMEMEME" + System.lineSeparator()
+ + "EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEM EMEMEMEMEM EMEMEME" + System.lineSeparator()
+ + "EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEM EMEMEMEMEM EMEMEME" + System.lineSeparator()
+ + "EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEM EMEMEMEMEM EMEMEME" + System.lineSeparator()
+ + "EMEMEME EMEMEMEMEM EMEMEME" + System.lineSeparator()
+ + "EMEMEME EMEMEMEMEM EMEMEME" + System.lineSeparator()
+ + "EMEMEMEME EMEMEMEMEM EMEMEMEME" + System.lineSeparator()
+ + "EMEMEMEMEMEM EMEMEMEMEM EMEMEMEMEMEM" + System.lineSeparator()
+ + " EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEME EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEM " + System.lineSeparator()
+ + " EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEM EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEME " + System.lineSeparator()
+ + " MEMEMEMEMEMEMEMEMEMEMEMEMEMEME EMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEMEME";
+
+ private static final String LOGONAME =
+ " ____ _ __ __ _ " + System.lineSeparator()
+ + " / ____|_ _____ _ __ | |_| \\/ | ___ ___| |__ " + System.lineSeparator()
+ + " | __|\\ \\ / / _ | '_ \\| __| |\\/| |/ _ |/ __| '_ \\ " + System.lineSeparator()
+ + " | |___ \\ V / __| | | | |_| | | | __|\\__ \\ | | |" + System.lineSeparator()
+ + " \\ ____| \\_/ \\___|_| |_|\\__|_| |_|\\___||___/_| |_|";
+
+ public static void generateBanner() {
+ String banner =
+ System.lineSeparator()
+ + System.lineSeparator()
+ + LOGO
+ + System.lineSeparator()
+ + LOGONAME
+ + System.lineSeparator();
+ if (log.isInfoEnabled()) {
+ log.info(banner);
+ } else {
+ System.out.print(banner);
+ }
+ }
+
+}
diff --git a/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/util/RuntimeUtils.java b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/util/RuntimeUtils.java
new file mode 100644
index 000000000..33843e657
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/java/org/apache/eventmesh/runtime/util/RuntimeUtils.java
@@ -0,0 +1,4 @@
+package org.apache.eventmesh.runtime.util;
+
+public class RuntimeUtils {
+}
diff --git a/eventmesh-runtime-v2/src/main/proto/event_mesh_admin_service.proto b/eventmesh-runtime-v2/src/main/proto/event_mesh_admin_service.proto
new file mode 100644
index 000000000..84b0ddf2c
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/proto/event_mesh_admin_service.proto
@@ -0,0 +1,25 @@
+syntax="proto3";
+
+import "google/protobuf/any.proto";
+
+option java_multiple_files=true;
+
+message Metadata {
+ string type = 3;
+ map<string, string> headers = 7;
+}
+
+
+message Payload {
+ Metadata metadata = 2;
+ google.protobuf.Any body = 3;
+}
+
+service AdminBiStreamService {
+ rpc invokeBiStream(stream Payload) returns (stream Payload){}
+}
+
+service AdminService {
+ rpc invoke(Payload) returns (Payload){}
+}
+
diff --git a/eventmesh-runtime-v2/src/main/resources/runtime.yaml b/eventmesh-runtime-v2/src/main/resources/runtime.yaml
new file mode 100644
index 000000000..28a3981e6
--- /dev/null
+++ b/eventmesh-runtime-v2/src/main/resources/runtime.yaml
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+
+registryServerAddr: 127.0.0.1:8085
+registryPluginType: nacos
+storagePluginType: memory
diff --git a/eventmesh-runtime/build.gradle b/eventmesh-runtime/build.gradle
index eef0bb2f9..95924faad 100644
--- a/eventmesh-runtime/build.gradle
+++ b/eventmesh-runtime/build.gradle
@@ -27,7 +27,7 @@ dependencies {
implementation "org.apache.httpcomponents:httpclient"
implementation 'io.netty:netty-all'
- implementation "com.alibaba:fastjson"
+ implementation "com.alibaba.fastjson2:fastjson2"
implementation 'com.github.seancfoley:ipaddress'
diff --git a/eventmesh-runtime/conf/eventmesh.properties b/eventmesh-runtime/conf/eventmesh.properties
index cabe3f9bc..91a422fa4 100644
--- a/eventmesh-runtime/conf/eventmesh.properties
+++ b/eventmesh-runtime/conf/eventmesh.properties
@@ -21,11 +21,14 @@ eventMesh.server.provide.protocols=HTTP,TCP,GRPC
eventMesh.server.cluster=COMMON
eventMesh.server.name=EVENTMESH-runtime
eventMesh.sysid=0000
+eventMesh.server.tcp.port=10000
eventMesh.server.http.port=10105
eventMesh.server.grpc.port=10205
+# HTTP Admin Server
+eventMesh.server.admin.http.port=10106
+
########################## EventMesh TCP Configuration ##########################
eventMesh.server.tcp.enabled=true
-eventMesh.server.tcp.port=10000
eventMesh.server.tcp.readerIdleSeconds=120
eventMesh.server.tcp.writerIdleSeconds=120
eventMesh.server.tcp.allIdleSeconds=120
@@ -57,14 +60,6 @@ eventMesh.server.retry.sync.pushRetryDelayInMills=500
eventMesh.server.retry.pushRetryQueueSize=10000
eventMesh.server.retry.plugin.type=default
-# runtime admin
-eventMesh.server.admin.http.port=10106
-# metaStorage
-eventMesh.server.metaStorage.metaStorageIntervalInMills=10000
-eventMesh.server.metaStorage.fetchMetaStorageAddrIntervalInMills=20000
-# auto-ack
-#eventMesh.server.defibus.client.comsumeTimeoutInMin=5
-
# sleep interval between closing client of different group in server graceful shutdown
eventMesh.server.gracefulShutdown.sleepIntervalInMills=1000
eventMesh.server.rebalanceRedirect.sleepIntervalInMills=200
@@ -73,9 +68,7 @@ eventMesh.server.rebalanceRedirect.sleepIntervalInMills=200
eventMesh.server.blacklist.ipv4=0.0.0.0/8,127.0.0.0/8,169.254.0.0/16,255.255.255.255/32
eventMesh.server.blacklist.ipv6=::/128,::1/128,ff00::/8
-# connector plugin
-eventMesh.connector.plugin.type=standalone
-
+########################## EventMesh Plugin Configuration ##########################
# storage plugin
eventMesh.storage.plugin.type=standalone
@@ -91,6 +84,7 @@ eventMesh.metaStorage.plugin.type=nacos
eventMesh.metaStorage.plugin.server-addr=127.0.0.1:8848
eventMesh.metaStorage.plugin.username=nacos
eventMesh.metaStorage.plugin.password=nacos
+
# metaStorage plugin: nacos
#eventMesh.metaStorage.nacos.endpoint=
#eventMesh.metaStorage.nacos.accessKey=
@@ -137,9 +131,9 @@ eventMesh.trace.plugin=zipkin
eventMesh.webHook.admin.start=true
# Webhook event configuration storage mode. Currently, only file and nacos are supported
eventMesh.webHook.operationMode=file
-# The file storage path of the file storage mode. If #{eventmeshhome} is written, it is in the eventmesh root directory
+# The file storage path of the file storage mode. If #{eventMeshHome} is written, it is in the EventMesh root directory
eventMesh.webHook.fileMode.filePath= #{eventMeshHome}/webhook
-# Nacos storage mode, and the configuration naming rule is eventmesh webHook. nacosMode. {nacos native configuration key} please see the specific configuration [nacos github api](https://github.com/alibaba/nacos/blob/develop/api/src/main/java/com/alibaba/nacos/api/SystemPropertyKeyConst.java)
+# Nacos storage mode, and the configuration naming rule is EventMesh webHook. nacosMode. {nacos native configuration key} please see the specific configuration [nacos github api](https://github.com/alibaba/nacos/blob/develop/api/src/main/java/com/alibaba/nacos/api/SystemPropertyKeyConst.java)
## Address of Nacos
eventMesh.webHook.nacosMode.serverAddr=127.0.0.1:8848
# Webhook CloudEvent sending mode. This property is the same as the eventMesh.storage.plugin.type configuration.
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AbstractHttpHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AbstractHttpHandler.java
index 30c81446c..0b0a6afed 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AbstractHttpHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AbstractHttpHandler.java
@@ -18,99 +18,76 @@
package org.apache.eventmesh.runtime.admin.handler;
import org.apache.eventmesh.common.enums.HttpMethod;
+import org.apache.eventmesh.runtime.admin.response.Result;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
-import org.apache.eventmesh.runtime.util.HttpRequestUtil;
import org.apache.eventmesh.runtime.util.HttpResponseUtils;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.http.DefaultFullHttpResponse;
import io.netty.handler.codec.http.DefaultHttpHeaders;
import io.netty.handler.codec.http.HttpHeaderValues;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponse;
import io.netty.handler.codec.http.HttpResponseStatus;
-import io.netty.handler.codec.http.HttpVersion;
-import io.netty.util.AsciiString;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONWriter;
import lombok.Data;
@Data
public abstract class AbstractHttpHandler implements HttpHandler {
- protected void write(ChannelHandlerContext ctx, byte[] result) {
- ctx.writeAndFlush(HttpResponseUtils.getHttpResponse(result, ctx, HttpHeaderValues.TEXT_HTML)).addListener(ChannelFutureListener.CLOSE);
- }
-
- protected void write(ChannelHandlerContext ctx, HttpResponse response) {
- ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
+ protected void writeText(ChannelHandlerContext ctx, String text) {
+ HttpHeaders responseHeaders = HttpResponseUtils.buildDefaultHttpHeaders(HttpHeaderValues.TEXT_HTML);
+ write(ctx, HttpResponseUtils.buildHttpResponse(text, ctx, responseHeaders, HttpResponseStatus.OK));
}
- protected void write(ChannelHandlerContext ctx, byte[] result, AsciiString headerValue, HttpResponseStatus httpResponseStatus) {
- ctx.writeAndFlush(HttpResponseUtils.getHttpResponse(result, ctx, headerValue, httpResponseStatus)).addListener(ChannelFutureListener.CLOSE);
+ /**
+ * Return given JSON String with given {@link HttpResponseStatus}.
+ */
+ protected void writeJson(ChannelHandlerContext ctx, String json, HttpResponseStatus status) {
+ HttpHeaders responseHeaders = HttpResponseUtils.buildDefaultHttpHeaders(HttpHeaderValues.APPLICATION_JSON);
+ write(ctx, HttpResponseUtils.buildHttpResponse(json, ctx, responseHeaders, status));
}
- protected void write401(ChannelHandlerContext ctx) {
- DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.UNAUTHORIZED);
- ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
+ /**
+ * Return given JSON String with status {@link HttpResponseStatus#OK}.
+ */
+ protected void writeJson(ChannelHandlerContext ctx, String json) {
+ writeJson(ctx, json, HttpResponseStatus.OK);
}
- protected void writeSuccess(ChannelHandlerContext ctx) {
- HttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
- DefaultFullHttpResponse response =
- new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.EMPTY_BUFFER, responseHeaders, responseHeaders);
- ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
+ /**
+ * Serialize given data into the JSON String of {@link Result} and return with status {@link HttpResponseStatus#OK}.
+ */
+ protected void writeSuccess(ChannelHandlerContext ctx, Object data) {
+ Result<Object> result = Result.success(data);
+ String json = JSON.toJSONString(result, JSONWriter.Feature.WriteNulls);
+ writeJson(ctx, json);
}
- protected void writeSuccess(ChannelHandlerContext ctx, DefaultHttpHeaders responseHeaders) {
- DefaultFullHttpResponse response =
- new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.EMPTY_BUFFER, responseHeaders, responseHeaders);
- ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
+ /**
+ * Wrap given message to {@link Result} and return with status {@link HttpResponseStatus#BAD_REQUEST}.
+ */
+ protected void writeBadRequest(ChannelHandlerContext ctx, String message) {
+ Result<String> result = new Result<>(message);
+ String json = JSON.toJSONString(result, JSONWriter.Feature.WriteNulls);
+ writeJson(ctx, json, HttpResponseStatus.BAD_REQUEST);
}
- protected void preflight(ChannelHandlerContext ctx) {
- HttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
- responseHeaders.add(EventMeshConstants.HANDLER_METHODS, "*");
- responseHeaders.add(EventMeshConstants.HANDLER_HEADERS, "*");
- responseHeaders.add(EventMeshConstants.HANDLER_AGE, EventMeshConstants.MAX_AGE);
- DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.EMPTY_BUFFER,
- responseHeaders, responseHeaders);
- write(ctx, response);
+ protected void writeUnauthorized(ChannelHandlerContext ctx, String message) {
+ Result<String> result = new Result<>(message);
+ String json = JSON.toJSONString(result, JSONWriter.Feature.WriteNulls);
+ writeJson(ctx, json, HttpResponseStatus.UNAUTHORIZED);
}
/**
- * Converts a query string to a map of key-value pairs.
- * <p>
- * This method takes a query string and parses it to create a map of key-value pairs, where each key and value are extracted from the query string
- * separated by '='.
- * <p>
- * If the query string is null, an empty map is returned.
- *
- * @param query the query string to convert to a map
- * @return a map containing the key-value pairs from the query string
+ * Use {@link HttpResponseUtils#buildHttpResponse} to build {@link HttpResponse} param.
*/
- protected Map<String, String> queryToMap(String query) {
- if (query == null) {
- return new HashMap<>();
- }
- Map<String, String> result = new HashMap<>();
- for (String param : query.split("&")) {
- String[] entry = param.split("=");
- if (entry.length > 1) {
- result.put(entry[0], entry[1]);
- } else {
- result.put(entry[0], "");
- }
- }
- return result;
+ protected void write(ChannelHandlerContext ctx, HttpResponse response) {
+ ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
}
@Override
@@ -125,25 +102,47 @@ public abstract class AbstractHttpHandler implements HttpHandler {
case POST:
post(httpRequest, ctx);
break;
+ case PUT:
+ put(httpRequest, ctx);
+ break;
case DELETE:
delete(httpRequest, ctx);
break;
- default: // do nothing
+ default:
+ // do nothing
break;
}
}
- protected void post(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
+ protected void preflight(ChannelHandlerContext ctx) {
+ HttpHeaders responseHeaders = new DefaultHttpHeaders();
+ responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
+ responseHeaders.add(EventMeshConstants.HANDLER_METHODS, "*");
+ responseHeaders.add(EventMeshConstants.HANDLER_HEADERS, "*");
+ responseHeaders.add(EventMeshConstants.HANDLER_AGE, EventMeshConstants.MAX_AGE);
+ write(ctx, HttpResponseUtils.buildHttpResponse("", ctx, responseHeaders, HttpResponseStatus.OK));
}
- protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
+ protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
+ // Override this method in subclass
}
- protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
+ /**
+ * Add new resource.
+ */
+ protected void post(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
+ // Override this method in subclass
+ }
+
+ /**
+ * Update resource, should be idempotent.
+ */
+ protected void put(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
+ // Override this method in subclass
}
- protected Map<String, Object> parseHttpRequestBody(final HttpRequest httpRequest) throws IOException {
- return HttpRequestUtil.parseHttpRequestBody(httpRequest, null, null);
+ protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
+ // Override this method in subclass
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AdminHandlerManager.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AdminHandlerManager.java
index 744990e74..4f81584b9 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AdminHandlerManager.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AdminHandlerManager.java
@@ -17,11 +17,35 @@
package org.apache.eventmesh.runtime.admin.handler;
+import org.apache.eventmesh.runtime.admin.handler.v1.ConfigurationHandlerV1;
+import org.apache.eventmesh.runtime.admin.handler.v1.DeleteWebHookConfigHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.EventHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.GrpcClientHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.HTTPClientHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.InsertWebHookConfigHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.MetaHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.MetricsHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.QueryRecommendEventMeshHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.QueryWebHookConfigByIdHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.QueryWebHookConfigByManufacturerHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.RedirectClientByIpPortHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.RedirectClientByPathHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.RedirectClientBySubSystemHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.RejectAllClientHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.RejectClientByIpPortHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.RejectClientBySubSystemHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.ShowClientBySystemHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.ShowClientHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.ShowListenClientByTopicHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.TCPClientHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.TopicHandler;
+import org.apache.eventmesh.runtime.admin.handler.v1.UpdateWebHookConfigHandler;
+import org.apache.eventmesh.runtime.admin.handler.v2.ConfigurationHandler;
import org.apache.eventmesh.runtime.boot.EventMeshGrpcServer;
import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer;
import org.apache.eventmesh.runtime.boot.EventMeshServer;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.meta.MetaStorage;
import org.apache.eventmesh.webhook.admin.AdminWebHookConfigOperationManager;
import org.apache.eventmesh.webhook.api.WebHookConfigOperation;
@@ -55,6 +79,7 @@ public class AdminHandlerManager {
}
public void registerHttpHandler() {
+ // v1 endpoints
initHandler(new ShowClientHandler(eventMeshTCPServer));
initHandler(new ShowClientBySystemHandler(eventMeshTCPServer));
initHandler(new RejectAllClientHandler(eventMeshTCPServer));
@@ -68,7 +93,7 @@ public class AdminHandlerManager {
initHandler(new TCPClientHandler(eventMeshTCPServer));
initHandler(new HTTPClientHandler(eventMeshHTTPServer));
initHandler(new GrpcClientHandler(eventMeshGrpcServer));
- initHandler(new ConfigurationHandler(
+ initHandler(new ConfigurationHandlerV1(
eventMeshTCPServer.getEventMeshTCPConfiguration(),
eventMeshHTTPServer.getEventMeshHttpConfiguration(),
eventMeshGrpcServer.getEventMeshGrpcConfiguration()));
@@ -84,11 +109,17 @@ public class AdminHandlerManager {
initHandler(new QueryWebHookConfigByIdHandler(webHookConfigOperation));
initHandler(new QueryWebHookConfigByManufacturerHandler(webHookConfigOperation));
}
+
+ // v2 endpoints
+ initHandler(new ConfigurationHandler(
+ eventMeshTCPServer.getEventMeshTCPConfiguration(),
+ eventMeshHTTPServer.getEventMeshHttpConfiguration(),
+ eventMeshGrpcServer.getEventMeshGrpcConfiguration()));
}
private void initHandler(HttpHandler httpHandler) {
- EventHttpHandler eventHttpHandler = httpHandler.getClass().getAnnotation(EventHttpHandler.class);
- httpHandlerMap.putIfAbsent(eventHttpHandler.path(), httpHandler);
+ EventMeshHttpHandler eventMeshHttpHandler = httpHandler.getClass().getAnnotation(EventMeshHttpHandler.class);
+ httpHandlerMap.putIfAbsent(eventMeshHttpHandler.path(), httpHandler);
}
public Optional<HttpHandler> getHttpHandler(String path) {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ConfigurationHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ConfigurationHandlerV1.java
similarity index 76%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ConfigurationHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ConfigurationHandlerV1.java
index 8a7d3d7ce..d9c5c6bb8 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ConfigurationHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ConfigurationHandlerV1.java
@@ -15,26 +15,18 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.JsonUtils;
-import org.apache.eventmesh.runtime.admin.response.GetConfigurationResponse;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
+import org.apache.eventmesh.runtime.admin.response.v1.GetConfigurationResponse;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.configuration.EventMeshGrpcConfiguration;
import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration;
import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration;
-import org.apache.eventmesh.runtime.constants.EventMeshConstants;
-import org.apache.eventmesh.runtime.util.HttpResponseUtils;
-
-import java.util.Objects;
import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.http.DefaultHttpHeaders;
-import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest;
-import io.netty.handler.codec.http.HttpResponse;
-import io.netty.handler.codec.http.HttpResponseStatus;
import lombok.extern.slf4j.Slf4j;
@@ -43,13 +35,15 @@ import lombok.extern.slf4j.Slf4j;
* <p>
* This handler is responsible for retrieving the current configuration information of the EventMesh node, including service name, service
* environment, and listening ports for various protocols.
+ * <p>
+ * TODO The path of endpoints under v1 package shall be changed to {@code /v1/configuration} with Next.js EventMesh Dashboard.
*
* @see AbstractHttpHandler
*/
@Slf4j
-@EventHttpHandler(path = "/configuration")
-public class ConfigurationHandler extends AbstractHttpHandler {
+@EventMeshHttpHandler(path = "/configuration")
+public class ConfigurationHandlerV1 extends AbstractHttpHandler {
private final EventMeshTCPConfiguration eventMeshTCPConfiguration;
private final EventMeshHTTPConfiguration eventMeshHTTPConfiguration;
@@ -62,7 +56,7 @@ public class ConfigurationHandler extends AbstractHttpHandler {
* @param eventMeshHTTPConfiguration the HTTP configuration for EventMesh
* @param eventMeshGrpcConfiguration the gRPC configuration for EventMesh
*/
- public ConfigurationHandler(
+ public ConfigurationHandlerV1(
EventMeshTCPConfiguration eventMeshTCPConfiguration,
EventMeshHTTPConfiguration eventMeshHTTPConfiguration,
EventMeshGrpcConfiguration eventMeshGrpcConfiguration) {
@@ -74,9 +68,6 @@ public class ConfigurationHandler extends AbstractHttpHandler {
@Override
protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- HttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON);
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
GetConfigurationResponse getConfigurationResponse = new GetConfigurationResponse(
eventMeshTCPConfiguration.getSysID(),
eventMeshTCPConfiguration.getMetaStorageAddr(),
@@ -97,9 +88,6 @@ public class ConfigurationHandler extends AbstractHttpHandler {
eventMeshGrpcConfiguration.getGrpcServerPort(),
eventMeshGrpcConfiguration.isEventMeshServerUseTls());
String result = JsonUtils.toJSONString(getConfigurationResponse);
- HttpResponse httpResponse =
- HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders,
- HttpResponseStatus.OK);
- write(ctx, httpResponse);
+ writeJson(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/DeleteWebHookConfigHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/DeleteWebHookConfigHandler.java
similarity index 89%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/DeleteWebHookConfigHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/DeleteWebHookConfigHandler.java
index feb73094c..390ed38bc 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/DeleteWebHookConfigHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/DeleteWebHookConfigHandler.java
@@ -15,11 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.JsonUtils;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
+import org.apache.eventmesh.runtime.util.HttpRequestUtil;
import org.apache.eventmesh.webhook.api.WebHookConfig;
import org.apache.eventmesh.webhook.api.WebHookConfigOperation;
@@ -54,7 +55,7 @@ import lombok.extern.slf4j.Slf4j;
@SuppressWarnings("restriction")
@Slf4j
-@EventHttpHandler(path = "/webhook/deleteWebHookConfig")
+@EventMeshHttpHandler(path = "/webhook/deleteWebHookConfig")
public class DeleteWebHookConfigHandler extends AbstractHttpHandler {
private final WebHookConfigOperation operation;
@@ -69,14 +70,13 @@ public class DeleteWebHookConfigHandler extends AbstractHttpHandler {
@Override
public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- Map<String, Object> body = parseHttpRequestBody(httpRequest);
+ Map<String, Object> body = HttpRequestUtil.parseHttpRequestBody(httpRequest);
Objects.requireNonNull(body, "body can not be null");
// Resolve to WebHookConfig
WebHookConfig webHookConfig = JsonUtils.mapToObject(body, WebHookConfig.class);
// Delete the existing WebHookConfig
Integer code = operation.deleteWebHookConfig(webHookConfig); // operating result
String result = 1 == code ? "deleteWebHookConfig Succeed!" : "deleteWebHookConfig Failed!";
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
-
+ writeText(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/EventHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/EventHandler.java
similarity index 85%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/EventHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/EventHandler.java
index 9e4dcadc3..4e1fe4a03 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/EventHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/EventHandler.java
@@ -15,12 +15,14 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
import org.apache.eventmesh.common.utils.JsonUtils;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.plugin.MQAdminWrapper;
+import org.apache.eventmesh.runtime.util.HttpRequestUtil;
import java.net.URI;
import java.nio.charset.StandardCharsets;
@@ -53,7 +55,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/event")
+@EventMeshHttpHandler(path = "/event")
public class EventHandler extends AbstractHttpHandler {
private final MQAdminWrapper admin;
@@ -79,11 +81,11 @@ public class EventHandler extends AbstractHttpHandler {
HttpHeaders responseHeaders = new DefaultHttpHeaders();
responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
String queryString = URI.create(httpRequest.uri()).getQuery();
- if (queryString == null || "".equals(queryString)) {
- write401(ctx);
+ if (queryString == null || queryString.isEmpty()) {
+ writeUnauthorized(ctx, "");
return;
}
- Map<String, String> queryMap = queryToMap(queryString);
+ Map<String, String> queryMap = HttpRequestUtil.queryStringToMap(queryString);
String topicName = queryMap.get("topicName");
int offset = Integer.parseInt(queryMap.get("offset"));
int length = Integer.parseInt(queryMap.get("length"));
@@ -97,18 +99,20 @@ public class EventHandler extends AbstractHttpHandler {
.serialize(event);
eventJsonList.add(new String(serializedEvent, StandardCharsets.UTF_8));
}
+ String result = JsonUtils.toJSONString(eventJsonList);
+ writeJson(ctx, result);
}
@Override
protected void post(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
HttpHeaders responseHeaders = new DefaultHttpHeaders();
responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
- String request = JsonUtils.toJSONString(parseHttpRequestBody(httpRequest));
+ String request = JsonUtils.toJSONString(HttpRequestUtil.parseHttpRequestBody(httpRequest));
byte[] rawRequest = request.getBytes(StandardCharsets.UTF_8);
CloudEvent event = Objects.requireNonNull(EventFormatProvider
.getInstance()
.resolveFormat(JsonFormat.CONTENT_TYPE)).deserialize(rawRequest);
admin.publish(event);
- writeSuccess(ctx);
+ writeText(ctx, "");
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/GrpcClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/GrpcClientHandler.java
similarity index 79%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/GrpcClientHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/GrpcClientHandler.java
index 3712defd1..af48aea96 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/GrpcClientHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/GrpcClientHandler.java
@@ -15,18 +15,17 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.JsonUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.admin.request.DeleteGrpcClientRequest;
-import org.apache.eventmesh.runtime.admin.response.GetClientResponse;
+import org.apache.eventmesh.runtime.admin.response.v1.GetClientResponse;
import org.apache.eventmesh.runtime.boot.EventMeshGrpcServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
-import org.apache.eventmesh.runtime.constants.EventMeshConstants;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.core.protocol.grpc.consumer.ConsumerManager;
import org.apache.eventmesh.runtime.core.protocol.grpc.consumer.consumergroup.ConsumerGroupClient;
-import org.apache.eventmesh.runtime.util.HttpResponseUtils;
+import org.apache.eventmesh.runtime.util.HttpRequestUtil;
import java.util.ArrayList;
import java.util.List;
@@ -35,11 +34,7 @@ import java.util.Objects;
import java.util.Optional;
import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.http.DefaultHttpHeaders;
-import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest;
-import io.netty.handler.codec.http.HttpResponse;
-import io.netty.handler.codec.http.HttpResponseStatus;
import lombok.extern.slf4j.Slf4j;
@@ -53,7 +48,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/client/grpc")
+@EventMeshHttpHandler(path = "/client/grpc")
public class GrpcClientHandler extends AbstractHttpHandler {
private final EventMeshGrpcServer eventMeshGrpcServer;
@@ -71,7 +66,7 @@ public class GrpcClientHandler extends AbstractHttpHandler {
@Override
protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- Map<String, Object> body = parseHttpRequestBody(httpRequest);
+ Map<String, Object> body = HttpRequestUtil.parseHttpRequestBody(httpRequest);
Objects.requireNonNull(body, "body can not be null");
DeleteGrpcClientRequest deleteGrpcClientRequest = JsonUtils.mapToObject(body, DeleteGrpcClientRequest.class);
String url = Objects.requireNonNull(deleteGrpcClientRequest).getUrl();
@@ -86,16 +81,11 @@ public class GrpcClientHandler extends AbstractHttpHandler {
}
}
}
- DefaultHttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
- writeSuccess(ctx, responseHeaders);
+ writeText(ctx, "");
}
@Override
protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- HttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON);
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
// Get the list of gRPC clients
List<GetClientResponse> getClientResponseList = new ArrayList<>();
@@ -129,10 +119,7 @@ public class GrpcClientHandler extends AbstractHttpHandler {
});
// Convert getClientResponseList to JSON and send the response
String result = JsonUtils.toJSONString(getClientResponseList);
- HttpResponse httpResponse =
- HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders,
- HttpResponseStatus.OK);
- write(ctx, httpResponse);
+ writeJson(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/HTTPClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/HTTPClientHandler.java
similarity index 81%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/HTTPClientHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/HTTPClientHandler.java
index f4e8eb736..2a7224194 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/HTTPClientHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/HTTPClientHandler.java
@@ -15,17 +15,17 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.JsonUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.admin.request.DeleteHTTPClientRequest;
-import org.apache.eventmesh.runtime.admin.response.GetClientResponse;
+import org.apache.eventmesh.runtime.admin.response.v1.GetClientResponse;
import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.protocol.http.processor.inf.Client;
-import org.apache.eventmesh.runtime.util.HttpResponseUtils;
+import org.apache.eventmesh.runtime.util.HttpRequestUtil;
import java.util.ArrayList;
import java.util.List;
@@ -34,11 +34,7 @@ import java.util.Objects;
import java.util.Optional;
import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.http.DefaultHttpHeaders;
-import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest;
-import io.netty.handler.codec.http.HttpResponse;
-import io.netty.handler.codec.http.HttpResponseStatus;
import lombok.extern.slf4j.Slf4j;
@@ -52,7 +48,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/client/http")
+@EventMeshHttpHandler(path = "/client/http")
public class HTTPClientHandler extends AbstractHttpHandler {
private final EventMeshHTTPServer eventMeshHTTPServer;
@@ -69,7 +65,7 @@ public class HTTPClientHandler extends AbstractHttpHandler {
}
protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- Map<String, Object> body = parseHttpRequestBody(httpRequest);
+ Map<String, Object> body = HttpRequestUtil.parseHttpRequestBody(httpRequest);
if (!Objects.isNull(body)) {
DeleteHTTPClientRequest deleteHTTPClientRequest = JsonUtils.mapToObject(body, DeleteHTTPClientRequest.class);
String url = Objects.requireNonNull(deleteHTTPClientRequest).getUrl();
@@ -79,7 +75,7 @@ public class HTTPClientHandler extends AbstractHttpHandler {
clientList.removeIf(client -> Objects.equals(client.getUrl(), url));
}
// Set the response headers and send a 200 status code empty response
- writeSuccess(ctx);
+ writeText(ctx, "");
}
}
@@ -92,11 +88,6 @@ public class HTTPClientHandler extends AbstractHttpHandler {
* @throws Exception if an I/O error occurs while handling the request
*/
protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- HttpHeaders responseHeaders = new DefaultHttpHeaders();
- // Set the response headers
- responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON);
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
-
// Get the list of HTTP clients
List<GetClientResponse> getClientResponseList = new ArrayList<>();
@@ -131,10 +122,6 @@ public class HTTPClientHandler extends AbstractHttpHandler {
// Convert getClientResponseList to JSON and send the response
String result = JsonUtils.toJSONString(getClientResponseList);
- HttpResponse httpResponse =
- HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders,
- HttpResponseStatus.OK);
- write(ctx, httpResponse);
-
+ writeJson(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/InsertWebHookConfigHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/InsertWebHookConfigHandler.java
similarity index 89%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/InsertWebHookConfigHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/InsertWebHookConfigHandler.java
index ce01838a7..140decba9 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/InsertWebHookConfigHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/InsertWebHookConfigHandler.java
@@ -15,11 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.JsonUtils;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
+import org.apache.eventmesh.runtime.util.HttpRequestUtil;
import org.apache.eventmesh.webhook.api.WebHookConfig;
import org.apache.eventmesh.webhook.api.WebHookConfigOperation;
@@ -55,7 +56,7 @@ import lombok.extern.slf4j.Slf4j;
@SuppressWarnings("restriction")
@Slf4j
-@EventHttpHandler(path = "/webhook/insertWebHookConfig")
+@EventMeshHttpHandler(path = "/webhook/insertWebHookConfig")
public class InsertWebHookConfigHandler extends AbstractHttpHandler {
private final WebHookConfigOperation operation;
@@ -75,16 +76,14 @@ public class InsertWebHookConfigHandler extends AbstractHttpHandler {
*
* @throws Exception if an I/O error occurs while handling the request
*/
-
@Override
public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- Map<String, Object> body = parseHttpRequestBody(httpRequest);
+ Map<String, Object> body = HttpRequestUtil.parseHttpRequestBody(httpRequest);
Objects.requireNonNull(body, "body can not be null");
WebHookConfig webHookConfig = JsonUtils.mapToObject(body, WebHookConfig.class);
// Add the WebHookConfig if no existing duplicate configuration is found
Integer code = operation.insertWebHookConfig(webHookConfig); // operating result
String result = 1 == code ? "insertWebHookConfig Succeed!" : "insertWebHookConfig Failed!";
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
-
+ writeText(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetaHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetaHandler.java
similarity index 70%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetaHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetaHandler.java
index 77e995b7f..7e1090663 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetaHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetaHandler.java
@@ -15,29 +15,22 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
import org.apache.eventmesh.api.meta.dto.EventMeshDataInfo;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.JsonUtils;
-import org.apache.eventmesh.runtime.admin.response.GetRegistryResponse;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
-import org.apache.eventmesh.runtime.constants.EventMeshConstants;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
+import org.apache.eventmesh.runtime.admin.response.v1.GetRegistryResponse;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.meta.MetaStorage;
-import org.apache.eventmesh.runtime.util.HttpResponseUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
-import java.util.Objects;
import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.http.DefaultHttpHeaders;
-import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest;
-import io.netty.handler.codec.http.HttpResponse;
-import io.netty.handler.codec.http.HttpResponseStatus;
import lombok.extern.slf4j.Slf4j;
@@ -51,7 +44,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/meta")
+@EventMeshHttpHandler(path = "/meta")
public class MetaHandler extends AbstractHttpHandler {
private final MetaStorage eventMeshMetaStorage;
@@ -66,9 +59,6 @@ public class MetaHandler extends AbstractHttpHandler {
@Override
protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws IOException {
- HttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON);
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
try {
List<GetRegistryResponse> getRegistryResponseList = new ArrayList<>();
List<EventMeshDataInfo> eventMeshDataInfos = eventMeshMetaStorage.findAllEventMeshInfo();
@@ -83,19 +73,11 @@ public class MetaHandler extends AbstractHttpHandler {
}
getRegistryResponseList.sort(Comparator.comparing(GetRegistryResponse::getEventMeshClusterName));
String result = JsonUtils.toJSONString(getRegistryResponseList);
- HttpResponse httpResponse =
- HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders,
- HttpResponseStatus.OK);
- write(ctx, httpResponse);
+ writeJson(ctx, result);
} catch (NullPointerException e) {
// registry not initialized, return empty list
String result = JsonUtils.toJSONString(new ArrayList<>());
- HttpResponse httpResponse =
- HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders,
- HttpResponseStatus.OK);
- write(ctx, httpResponse);
+ writeJson(ctx, result);
}
-
}
-
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetricsHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetricsHandler.java
old mode 100755
new mode 100644
similarity index 80%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetricsHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetricsHandler.java
index cf2e46ecc..2a63f8f58
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetricsHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetricsHandler.java
@@ -15,28 +15,21 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.JsonUtils;
import org.apache.eventmesh.metrics.api.model.HttpSummaryMetrics;
import org.apache.eventmesh.metrics.api.model.TcpSummaryMetrics;
-import org.apache.eventmesh.runtime.admin.response.GetMetricsResponse;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
+import org.apache.eventmesh.runtime.admin.response.v1.GetMetricsResponse;
import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
-import org.apache.eventmesh.runtime.constants.EventMeshConstants;
-import org.apache.eventmesh.runtime.util.HttpResponseUtils;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import java.io.IOException;
-import java.util.Objects;
import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.http.DefaultHttpHeaders;
-import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest;
-import io.netty.handler.codec.http.HttpResponse;
-import io.netty.handler.codec.http.HttpResponseStatus;
import lombok.extern.slf4j.Slf4j;
@@ -49,7 +42,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/metrics")
+@EventMeshHttpHandler(path = "/metrics")
public class MetricsHandler extends AbstractHttpHandler {
private final HttpSummaryMetrics httpSummaryMetrics;
@@ -70,9 +63,6 @@ public class MetricsHandler extends AbstractHttpHandler {
@Override
protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws IOException {
- HttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON);
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
GetMetricsResponse getMetricsResponse = new GetMetricsResponse(
httpSummaryMetrics.maxHTTPTPS(),
httpSummaryMetrics.avgHTTPTPS(),
@@ -116,9 +106,6 @@ public class MetricsHandler extends AbstractHttpHandler {
tcpSummaryMetrics.getAllConnections(),
tcpSummaryMetrics.getSubTopicNum());
String result = JsonUtils.toJSONString(getMetricsResponse);
- HttpResponse httpResponse =
- HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders,
- HttpResponseStatus.OK);
- write(ctx, httpResponse);
+ writeJson(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryRecommendEventMeshHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryRecommendEventMeshHandler.java
similarity index 91%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryRecommendEventMeshHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryRecommendEventMeshHandler.java
index 1688d387d..f9aabc84b 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryRecommendEventMeshHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryRecommendEventMeshHandler.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.NetUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend.EventMeshRecommendImpl;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend.EventMeshRecommendStrategy;
@@ -50,7 +50,7 @@ import lombok.extern.slf4j.Slf4j;
* @see AbstractHttpHandler
*/
@Slf4j
-@EventHttpHandler(path = "/eventMesh/recommend")
+@EventMeshHttpHandler(path = "/eventMesh/recommend")
public class QueryRecommendEventMeshHandler extends AbstractHttpHandler {
private final EventMeshTCPServer eventMeshTCPServer;
@@ -79,7 +79,7 @@ public class QueryRecommendEventMeshHandler extends AbstractHttpHandler {
// Check the validity of the parameters
if (StringUtils.isBlank(group) || StringUtils.isBlank(purpose)) {
result = "params illegal!";
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
return;
}
@@ -88,6 +88,6 @@ public class QueryRecommendEventMeshHandler extends AbstractHttpHandler {
String recommendEventMeshResult = eventMeshRecommendStrategy.calculateRecommendEventMesh(group, purpose);
result = (recommendEventMeshResult == null) ? "null" : recommendEventMeshResult;
log.info("recommend eventmesh:{},group:{},purpose:{}", result, group, purpose);
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByIdHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByIdHandler.java
similarity index 78%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByIdHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByIdHandler.java
index 58a2438be..97e2c29e2 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByIdHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByIdHandler.java
@@ -15,13 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.JsonUtils;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
-import org.apache.eventmesh.runtime.constants.EventMeshConstants;
-import org.apache.eventmesh.runtime.util.HttpResponseUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
+import org.apache.eventmesh.runtime.util.HttpRequestUtil;
import org.apache.eventmesh.webhook.api.WebHookConfig;
import org.apache.eventmesh.webhook.api.WebHookConfigOperation;
@@ -29,11 +28,7 @@ import java.util.Map;
import java.util.Objects;
import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.http.DefaultHttpHeaders;
-import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest;
-import io.netty.handler.codec.http.HttpResponse;
-import io.netty.handler.codec.http.HttpResponseStatus;
import lombok.extern.slf4j.Slf4j;
@@ -68,7 +63,7 @@ import lombok.extern.slf4j.Slf4j;
@SuppressWarnings("restriction")
@Slf4j
-@EventHttpHandler(path = "/webhook/queryWebHookConfigById")
+@EventMeshHttpHandler(path = "/webhook/queryWebHookConfigById")
public class QueryWebHookConfigByIdHandler extends AbstractHttpHandler {
private final WebHookConfigOperation operation;
@@ -85,20 +80,14 @@ public class QueryWebHookConfigByIdHandler extends AbstractHttpHandler {
@Override
public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- HttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON);
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
// Resolve to WebHookConfig
- Map<String, Object> body = parseHttpRequestBody(httpRequest);
+ Map<String, Object> body = HttpRequestUtil.parseHttpRequestBody(httpRequest);
if (!Objects.isNull(body)) {
WebHookConfig webHookConfig = JsonUtils.mapToObject(body, WebHookConfig.class);
// Retrieve the WebHookConfig by callback path
WebHookConfig result = operation.queryWebHookConfigById(webHookConfig); // operating result
String json = JsonUtils.toJSONString(result);
- HttpResponse httpResponse =
- HttpResponseUtils.getHttpResponse(Objects.requireNonNull(json).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders,
- HttpResponseStatus.OK);
- write(ctx, httpResponse);
+ writeJson(ctx, json);
}
throw new Exception();
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByManufacturerHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByManufacturerHandler.java
similarity index 78%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByManufacturerHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByManufacturerHandler.java
index 9b484f6a1..063cd6fd0 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByManufacturerHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByManufacturerHandler.java
@@ -15,13 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.JsonUtils;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
-import org.apache.eventmesh.runtime.constants.EventMeshConstants;
-import org.apache.eventmesh.runtime.util.HttpResponseUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
+import org.apache.eventmesh.runtime.util.HttpRequestUtil;
import org.apache.eventmesh.webhook.api.WebHookConfig;
import org.apache.eventmesh.webhook.api.WebHookConfigOperation;
@@ -30,11 +29,7 @@ import java.util.Map;
import java.util.Objects;
import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.http.DefaultHttpHeaders;
-import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest;
-import io.netty.handler.codec.http.HttpResponse;
-import io.netty.handler.codec.http.HttpResponseStatus;
import lombok.extern.slf4j.Slf4j;
@@ -63,7 +58,7 @@ import lombok.extern.slf4j.Slf4j;
@SuppressWarnings("restriction")
@Slf4j
-@EventHttpHandler(path = "/webhook/queryWebHookConfigByManufacturer")
+@EventMeshHttpHandler(path = "/webhook/queryWebHookConfigByManufacturer")
public class QueryWebHookConfigByManufacturerHandler extends AbstractHttpHandler {
private final transient WebHookConfigOperation operation;
@@ -82,11 +77,8 @@ public class QueryWebHookConfigByManufacturerHandler extends AbstractHttpHandler
@Override
public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- HttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON);
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
// Resolve to WebHookConfig
- Map<String, Object> body = parseHttpRequestBody(httpRequest);
+ Map<String, Object> body = HttpRequestUtil.parseHttpRequestBody(httpRequest);
Objects.requireNonNull(body, "body can not be null");
WebHookConfig webHookConfig = JsonUtils.mapToObject(body, WebHookConfig.class);
Integer pageNum = Integer.valueOf(body.get("pageNum").toString());
@@ -95,9 +87,6 @@ public class QueryWebHookConfigByManufacturerHandler extends AbstractHttpHandler
// Retrieve the WebHookConfig list by manufacturer name
List<WebHookConfig> listWebHookConfig = operation.queryWebHookConfigByManufacturer(webHookConfig, pageNum, pageSize); // operating result
String result = JsonUtils.toJSONString(listWebHookConfig);
- HttpResponse httpResponse =
- HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders,
- HttpResponseStatus.OK);
- write(ctx, httpResponse);
+ writeJson(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByIpPortHandler.java
similarity index 88%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByIpPortHandler.java
index d2805112a..33922456f 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByIpPortHandler.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.NetUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping;
@@ -57,7 +57,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/clientManage/redirectClientByIpPort")
+@EventMeshHttpHandler(path = "/clientManage/redirectClientByIpPort")
public class RedirectClientByIpPortHandler extends AbstractHttpHandler {
private final EventMeshTCPServer eventMeshTCPServer;
@@ -88,7 +88,7 @@ public class RedirectClientByIpPortHandler extends AbstractHttpHandler {
|| StringUtils.isBlank(destEventMeshIp) || StringUtils.isBlank(destEventMeshPort)
|| !StringUtils.isNumeric(destEventMeshPort)) {
result = "params illegal!";
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
return;
}
log.info("redirectClientByIpPort in admin,ip:{},port:{},destIp:{},destPort:{}====================", ip,
@@ -114,20 +114,17 @@ public class RedirectClientByIpPortHandler extends AbstractHttpHandler {
}
} catch (Exception e) {
log.error("clientManage|redirectClientByIpPort|fail|ip={}|port={}|destEventMeshIp"
- +
- "={}|destEventMeshPort={}", ip, port, destEventMeshIp, destEventMeshPort, e);
+ + "={}|destEventMeshPort={}", ip, port, destEventMeshIp, destEventMeshPort, e);
result = String.format("redirectClientByIpPort fail! sessionMap size {%d}, {clientIp=%s clientPort=%s "
- +
- "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s",
+ + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s",
sessionMap.size(), ip, port, destEventMeshIp, destEventMeshPort, redirectResult, e.getMessage());
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
return;
}
// Serialize the result of redirection into output stream
result = String.format("redirectClientByIpPort success! sessionMap size {%d}, {ip=%s port=%s "
- +
- "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ",
+ + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ",
sessionMap.size(), ip, port, destEventMeshIp, destEventMeshPort, redirectResult);
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByPathHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByPathHandler.java
similarity index 86%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByPathHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByPathHandler.java
index fc5ad6f2d..54b089ce5 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByPathHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByPathHandler.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.NetUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping;
@@ -56,7 +56,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/clientManage/redirectClientByPath")
+@EventMeshHttpHandler(path = "/clientManage/redirectClientByPath")
public class RedirectClientByPathHandler extends AbstractHttpHandler {
private final EventMeshTCPServer eventMeshTCPServer;
@@ -83,10 +83,9 @@ public class RedirectClientByPathHandler extends AbstractHttpHandler {
// Check the validity of the parameters
if (StringUtils.isBlank(path) || StringUtils.isBlank(destEventMeshIp)
- || StringUtils.isBlank(destEventMeshPort)
- || !StringUtils.isNumeric(destEventMeshPort)) {
+ || StringUtils.isBlank(destEventMeshPort) || !StringUtils.isNumeric(destEventMeshPort)) {
result = "params illegal!";
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
return;
}
log.info("redirectClientByPath in admin,path:{},destIp:{},destPort:{}====================", path,
@@ -111,20 +110,16 @@ public class RedirectClientByPathHandler extends AbstractHttpHandler {
}
} catch (Exception e) {
log.error("clientManage|redirectClientByPath|fail|path={}|destEventMeshIp"
- +
- "={}|destEventMeshPort={}", path, destEventMeshIp, destEventMeshPort, e);
+ + "={}|destEventMeshPort={}", path, destEventMeshIp, destEventMeshPort, e);
result = String.format("redirectClientByPath fail! sessionMap size {%d}, {path=%s "
- +
- "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s",
+ + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s",
sessionMap.size(), path, destEventMeshIp, destEventMeshPort, redirectResult, e.getMessage());
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
return;
}
result = String.format("redirectClientByPath success! sessionMap size {%d}, {path=%s "
- +
- "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ",
+ + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ",
sessionMap.size(), path, destEventMeshIp, destEventMeshPort, redirectResult);
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
-
+ writeText(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientBySubSystemHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientBySubSystemHandler.java
similarity index 88%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientBySubSystemHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientBySubSystemHandler.java
index c7b959ece..0aff5fe8b 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientBySubSystemHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientBySubSystemHandler.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.NetUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping;
@@ -56,7 +56,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/clientManage/redirectClientBySubSystem")
+@EventMeshHttpHandler(path = "/clientManage/redirectClientBySubSystem")
public class RedirectClientBySubSystemHandler extends AbstractHttpHandler {
private final transient EventMeshTCPServer eventMeshTCPServer;
@@ -83,7 +83,7 @@ public class RedirectClientBySubSystemHandler extends AbstractHttpHandler {
if (!StringUtils.isNumeric(subSystem)
|| StringUtils.isBlank(destEventMeshIp) || StringUtils.isBlank(destEventMeshPort)
|| !StringUtils.isNumeric(destEventMeshPort)) {
- write(ctx, "params illegal!".getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, "params illegal!");
return;
}
log.info("redirectClientBySubSystem in admin,subsys:{},destIp:{},destPort:{}====================",
@@ -111,15 +111,13 @@ public class RedirectClientBySubSystemHandler extends AbstractHttpHandler {
log.error("clientManage|redirectClientBySubSystem|fail|subSystem={}|destEventMeshIp"
+ "={}|destEventMeshPort={}", subSystem, destEventMeshIp, destEventMeshPort, e);
- write(ctx, String.format("redirectClientBySubSystem fail! sessionMap size {%d}, {subSystem=%s "
+ writeText(ctx, String.format("redirectClientBySubSystem fail! sessionMap size {%d}, {subSystem=%s "
+ "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s",
- sessionMap.size(), subSystem, destEventMeshIp, destEventMeshPort, redirectResult, e.getMessage())
- .getBytes(Constants.DEFAULT_CHARSET));
+ sessionMap.size(), subSystem, destEventMeshIp, destEventMeshPort, redirectResult, e.getMessage()));
return;
}
- write(ctx, String.format("redirectClientBySubSystem success! sessionMap size {%d}, {subSystem=%s "
+ writeText(ctx, String.format("redirectClientBySubSystem success! sessionMap size {%d}, {subSystem=%s "
+ "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ",
- sessionMap.size(), subSystem, destEventMeshIp, destEventMeshPort, redirectResult)
- .getBytes(Constants.DEFAULT_CHARSET));
+ sessionMap.size(), subSystem, destEventMeshIp, destEventMeshPort, redirectResult));
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectAllClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectAllClientHandler.java
similarity index 85%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectAllClientHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectAllClientHandler.java
index 614c30f60..bc139b393 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectAllClientHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectAllClientHandler.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.NetUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session;
@@ -48,7 +48,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/clientManage/rejectAllClient")
+@EventMeshHttpHandler(path = "/clientManage/rejectAllClient")
public class RejectAllClientHandler extends AbstractHttpHandler {
private final transient EventMeshTCPServer eventMeshTCPServer;
@@ -84,13 +84,11 @@ public class RejectAllClientHandler extends AbstractHttpHandler {
}
} catch (Exception e) {
log.error("clientManage rejectAllClient fail", e);
- write(ctx, String.format("rejectAllClient fail! sessionMap size {%d}, had reject {%s}, errorMsg : %s",
- sessionMap.size(), NetUtils.addressToString(successRemoteAddrs), e.getMessage())
- .getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, String.format("rejectAllClient fail! sessionMap size {%d}, had reject {%s}, errorMsg : %s",
+ sessionMap.size(), NetUtils.addressToString(successRemoteAddrs), e.getMessage()));
return;
}
- write(ctx, String.format("rejectAllClient success! sessionMap size {%d}, had reject {%s}", sessionMap.size(),
- NetUtils.addressToString(successRemoteAddrs))
- .getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, String.format("rejectAllClient success! sessionMap size {%d}, had reject {%s}",
+ sessionMap.size(), NetUtils.addressToString(successRemoteAddrs)));
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientByIpPortHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientByIpPortHandler.java
similarity index 92%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientByIpPortHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientByIpPortHandler.java
index d9ce5f574..6d6165785 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientByIpPortHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientByIpPortHandler.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.NetUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping;
@@ -59,7 +59,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/clientManage/rejectClientByIpPort")
+@EventMeshHttpHandler(path = "/clientManage/rejectClientByIpPort")
public class RejectClientByIpPortHandler extends AbstractHttpHandler {
private final EventMeshTCPServer eventMeshTCPServer;
@@ -86,14 +86,14 @@ public class RejectClientByIpPortHandler extends AbstractHttpHandler {
// Check the validity of the parameters
if (StringUtils.isBlank(ip) || StringUtils.isBlank(port)) {
result = "params illegal!";
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
return;
}
log.info("rejectClientByIpPort in admin,ip:{},port:{}====================", ip, port);
// Retrieve the mapping between Sessions and their corresponding client address
ClientSessionGroupMapping clientSessionGroupMapping = eventMeshTCPServer.getClientSessionGroupMapping();
ConcurrentHashMap<InetSocketAddress, Session> sessionMap = clientSessionGroupMapping.getSessionMap();
- final List<InetSocketAddress> successRemoteAddrs = new ArrayList<InetSocketAddress>();
+ final List<InetSocketAddress> successRemoteAddrs = new ArrayList<>();
try {
if (!sessionMap.isEmpty()) {
// Iterate through the sessionMap to find matching sessions where the remote client address matches the given IP and port
@@ -113,12 +113,11 @@ public class RejectClientByIpPortHandler extends AbstractHttpHandler {
log.error("clientManage|rejectClientByIpPort|fail|ip={}|port={}", ip, port, e);
result = String.format("rejectClientByIpPort fail! {ip=%s port=%s}, had reject {%s}, errorMsg : %s", ip,
port, NetUtils.addressToString(successRemoteAddrs), e.getMessage());
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
return;
}
result = String.format("rejectClientByIpPort success! {ip=%s port=%s}, had reject {%s}", ip, port,
NetUtils.addressToString(successRemoteAddrs));
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
-
+ writeText(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientBySubSystemHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientBySubSystemHandler.java
similarity index 93%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientBySubSystemHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientBySubSystemHandler.java
index 4ff18caf9..ac8a8814e 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientBySubSystemHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientBySubSystemHandler.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.NetUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping;
@@ -56,7 +56,7 @@ import lombok.extern.slf4j.Slf4j;
* @see AbstractHttpHandler
*/
-@EventHttpHandler(path = "/clientManage/rejectClientBySubSystem")
+@EventMeshHttpHandler(path = "/clientManage/rejectClientBySubSystem")
@Slf4j
public class RejectClientBySubSystemHandler extends AbstractHttpHandler {
@@ -94,7 +94,7 @@ public class RejectClientBySubSystemHandler extends AbstractHttpHandler {
// Check the validity of the parameters
if (StringUtils.isBlank(subSystem)) {
result = "params illegal!";
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
return;
}
@@ -124,15 +124,13 @@ public class RejectClientBySubSystemHandler extends AbstractHttpHandler {
+
"subSystemId=%s}, errorMsg : %s", sessionMap.size(), printClients(successRemoteAddrs),
subSystem, e.getMessage());
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
return;
}
// Serialize the successfully rejected client addresses into output stream
result = String.format("rejectClientBySubSystem success! sessionMap size {%d}, had reject {%s} , {"
+
"subSystemId=%s}", sessionMap.size(), printClients(successRemoteAddrs), subSystem);
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
-
-
+ writeText(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientBySystemHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientBySystemHandler.java
similarity index 90%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientBySystemHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientBySystemHandler.java
index 9d2c84bc1..491789ceb 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientBySystemHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientBySystemHandler.java
@@ -15,13 +15,13 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.protocol.tcp.UserAgent;
import org.apache.eventmesh.common.utils.NetUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session;
@@ -49,7 +49,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/clientManage/showClientBySystem")
+@EventMeshHttpHandler(path = "/clientManage/showClientBySystem")
public class ShowClientBySystemHandler extends AbstractHttpHandler {
private final EventMeshTCPServer eventMeshTCPServer;
@@ -84,14 +84,11 @@ public class ShowClientBySystemHandler extends AbstractHttpHandler {
if (session.getClient().getSubsystem().equals(subSystem)) {
UserAgent userAgent = session.getClient();
result.append(String.format("pid=%s | ip=%s | port=%s | path=%s | purpose=%s",
- userAgent.getPid(), userAgent.getHost(), userAgent.getPort(),
- userAgent.getPath(), userAgent.getPurpose()))
+ userAgent.getPid(), userAgent.getHost(), userAgent.getPort(), userAgent.getPath(), userAgent.getPurpose()))
.append(newLine);
}
}
}
- write(ctx, result.toString().getBytes(Constants.DEFAULT_CHARSET));
-
+ writeText(ctx, result.toString());
}
-
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientHandler.java
similarity index 90%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientHandler.java
index 9699a1383..fc288ba7e 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientHandler.java
@@ -15,11 +15,11 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session;
@@ -43,7 +43,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/clientManage/showClient")
+@EventMeshHttpHandler(path = "/clientManage/showClient")
public class ShowClientHandler extends AbstractHttpHandler {
private final EventMeshTCPServer eventMeshTCPServer;
@@ -66,7 +66,7 @@ public class ShowClientHandler extends AbstractHttpHandler {
ClientSessionGroupMapping clientSessionGroupMapping = eventMeshTCPServer.getClientSessionGroupMapping();
// Store the subsystem and the corresponding client count.
- HashMap<String, AtomicInteger> statMap = new HashMap<String, AtomicInteger>();
+ HashMap<String, AtomicInteger> statMap = new HashMap<>();
Map<InetSocketAddress, Session> sessionMap = clientSessionGroupMapping.getSessionMap();
if (!sessionMap.isEmpty()) {
@@ -84,6 +84,6 @@ public class ShowClientHandler extends AbstractHttpHandler {
result.append(String.format("System=%s | ClientNum=%d", entry.getKey(), entry.getValue().intValue())).append(newLine);
}
}
- write(ctx, result.toString().getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result.toString());
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowListenClientByTopicHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowListenClientByTopicHandler.java
similarity index 93%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowListenClientByTopicHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowListenClientByTopicHandler.java
index 412ae5e5b..266ffbc06 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowListenClientByTopicHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowListenClientByTopicHandler.java
@@ -15,13 +15,13 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.protocol.tcp.UserAgent;
import org.apache.eventmesh.common.utils.NetUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientGroupWrapper;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping;
@@ -49,7 +49,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/clientManage/showListenClientByTopic")
+@EventMeshHttpHandler(path = "/clientManage/showListenClientByTopic")
public class ShowListenClientByTopicHandler extends AbstractHttpHandler {
private final EventMeshTCPServer eventMeshTCPServer;
@@ -93,7 +93,6 @@ public class ShowListenClientByTopicHandler extends AbstractHttpHandler {
}
}
}
- write(ctx, result.toString().getBytes(Constants.DEFAULT_CHARSET));
-
+ writeText(ctx, result.toString());
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TCPClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TCPClientHandler.java
similarity index 83%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TCPClientHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TCPClientHandler.java
index a4da5bf94..429ce426e 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TCPClientHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TCPClientHandler.java
@@ -15,20 +15,19 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.protocol.tcp.UserAgent;
import org.apache.eventmesh.common.utils.JsonUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.admin.request.DeleteTCPClientRequest;
-import org.apache.eventmesh.runtime.admin.response.GetClientResponse;
+import org.apache.eventmesh.runtime.admin.response.v1.GetClientResponse;
import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
-import org.apache.eventmesh.runtime.constants.EventMeshConstants;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping;
import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session;
-import org.apache.eventmesh.runtime.util.HttpResponseUtils;
+import org.apache.eventmesh.runtime.util.HttpRequestUtil;
import java.net.InetSocketAddress;
import java.util.ArrayList;
@@ -39,11 +38,7 @@ import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.http.DefaultHttpHeaders;
-import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest;
-import io.netty.handler.codec.http.HttpResponse;
-import io.netty.handler.codec.http.HttpResponseStatus;
import lombok.extern.slf4j.Slf4j;
@@ -57,7 +52,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/client/tcp")
+@EventMeshHttpHandler(path = "/client/tcp")
public class TCPClientHandler extends AbstractHttpHandler {
private final EventMeshTCPServer eventMeshTCPServer;
@@ -76,7 +71,7 @@ public class TCPClientHandler extends AbstractHttpHandler {
@Override
protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
// Parse the request body string into a DeleteTCPClientRequest object
- Map<String, Object> body = parseHttpRequestBody(httpRequest);
+ Map<String, Object> body = HttpRequestUtil.parseHttpRequestBody(httpRequest);
Objects.requireNonNull(body, "body can not be null");
DeleteTCPClientRequest deleteTCPClientRequest = JsonUtils.mapToObject(body, DeleteTCPClientRequest.class);
String host = Objects.requireNonNull(deleteTCPClientRequest).getHost();
@@ -98,16 +93,11 @@ public class TCPClientHandler extends AbstractHttpHandler {
}
// Set the response headers and send a 200 status code empty response
- writeSuccess(ctx);
-
+ writeText(ctx, "");
}
@Override
protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- // Set the response headers
- HttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON);
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
// Get the list of connected TCP clients
ClientSessionGroupMapping clientSessionGroupMapping = eventMeshTCPServer.getClientSessionGroupMapping();
Map<InetSocketAddress, Session> sessionMap = clientSessionGroupMapping.getSessionMap();
@@ -140,10 +130,6 @@ public class TCPClientHandler extends AbstractHttpHandler {
// Convert getClientResponseList to JSON and send the response
String result = JsonUtils.toJSONString(getClientResponseList);
- HttpResponse httpResponse =
- HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders,
- HttpResponseStatus.OK);
- write(ctx, httpResponse);
-
+ writeJson(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TopicHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TopicHandler.java
similarity index 79%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TopicHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TopicHandler.java
index c30533d53..b53615035 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TopicHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TopicHandler.java
@@ -15,17 +15,17 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
import org.apache.eventmesh.api.admin.TopicProperties;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.JsonUtils;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
import org.apache.eventmesh.runtime.admin.request.CreateTopicRequest;
import org.apache.eventmesh.runtime.admin.request.DeleteTopicRequest;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.plugin.MQAdminWrapper;
-import org.apache.eventmesh.runtime.util.HttpResponseUtils;
+import org.apache.eventmesh.runtime.util.HttpRequestUtil;
import java.util.List;
import java.util.Map;
@@ -35,8 +35,6 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.DefaultHttpHeaders;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest;
-import io.netty.handler.codec.http.HttpResponse;
-import io.netty.handler.codec.http.HttpResponseStatus;
import lombok.extern.slf4j.Slf4j;
@@ -54,7 +52,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
-@EventHttpHandler(path = "/topic")
+@EventMeshHttpHandler(path = "/topic")
public class TopicHandler extends AbstractHttpHandler {
private final MQAdminWrapper admin;
@@ -77,21 +75,14 @@ public class TopicHandler extends AbstractHttpHandler {
@Override
protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- HttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON);
- responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
List<TopicProperties> topicList = admin.getTopic();
String result = JsonUtils.toJSONString(topicList);
- HttpResponse httpResponse =
- HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders,
- HttpResponseStatus.OK);
- write(ctx, httpResponse);
-
+ writeJson(ctx, result);
}
@Override
protected void post(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- Map<String, Object> body = parseHttpRequestBody(httpRequest);
+ Map<String, Object> body = HttpRequestUtil.parseHttpRequestBody(httpRequest);
Objects.requireNonNull(body, "body can not be null");
HttpHeaders responseHeaders = new DefaultHttpHeaders();
responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON);
@@ -99,13 +90,12 @@ public class TopicHandler extends AbstractHttpHandler {
CreateTopicRequest createTopicRequest = JsonUtils.mapToObject(body, CreateTopicRequest.class);
String topicName = Objects.requireNonNull(createTopicRequest).getName();
admin.createTopic(topicName);
- writeSuccess(ctx);
-
+ writeText(ctx, "");
}
@Override
protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- Map<String, Object> body = parseHttpRequestBody(httpRequest);
+ Map<String, Object> body = HttpRequestUtil.parseHttpRequestBody(httpRequest);
Objects.requireNonNull(body, "body can not be null");
HttpHeaders responseHeaders = new DefaultHttpHeaders();
responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON);
@@ -113,8 +103,6 @@ public class TopicHandler extends AbstractHttpHandler {
DeleteTopicRequest deleteTopicRequest = JsonUtils.mapToObject(body, DeleteTopicRequest.class);
String topicName = Objects.requireNonNull(deleteTopicRequest).getName();
admin.deleteTopic(topicName);
- writeSuccess(ctx);
-
+ writeText(ctx, "");
}
-
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/UpdateWebHookConfigHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/UpdateWebHookConfigHandler.java
similarity index 89%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/UpdateWebHookConfigHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/UpdateWebHookConfigHandler.java
index a842c84e6..ab0c1192d 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/UpdateWebHookConfigHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/UpdateWebHookConfigHandler.java
@@ -15,11 +15,12 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.handler;
+package org.apache.eventmesh.runtime.admin.handler.v1;
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.utils.JsonUtils;
-import org.apache.eventmesh.runtime.common.EventHttpHandler;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
+import org.apache.eventmesh.runtime.util.HttpRequestUtil;
import org.apache.eventmesh.webhook.api.WebHookConfig;
import org.apache.eventmesh.webhook.api.WebHookConfigOperation;
@@ -56,7 +57,7 @@ import lombok.extern.slf4j.Slf4j;
@SuppressWarnings("restriction")
@Slf4j
-@EventHttpHandler(path = "/webhook/updateWebHookConfig")
+@EventMeshHttpHandler(path = "/webhook/updateWebHookConfig")
public class UpdateWebHookConfigHandler extends AbstractHttpHandler {
private final WebHookConfigOperation operation;
@@ -73,13 +74,13 @@ public class UpdateWebHookConfigHandler extends AbstractHttpHandler {
@Override
public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception {
- Map<String, Object> body = parseHttpRequestBody(httpRequest);
+ Map<String, Object> body = HttpRequestUtil.parseHttpRequestBody(httpRequest);
Objects.requireNonNull(body, "body can not be null");
// Resolve to WebHookConfig
WebHookConfig webHookConfig = JsonUtils.mapToObject(body, WebHookConfig.class);
// Update the existing WebHookConfig
Integer code = operation.updateWebHookConfig(webHookConfig); // operating result
String result = 1 == code ? "updateWebHookConfig Succeed!" : "updateWebHookConfig Failed!";
- write(ctx, result.getBytes(Constants.DEFAULT_CHARSET));
+ writeText(ctx, result);
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v2/ConfigurationHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v2/ConfigurationHandler.java
new file mode 100644
index 000000000..ce16b9574
--- /dev/null
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v2/ConfigurationHandler.java
@@ -0,0 +1,179 @@
+/*
+ * 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.runtime.admin.handler.v2;
+
+import org.apache.eventmesh.common.config.CommonConfiguration;
+import org.apache.eventmesh.common.config.Config;
+import org.apache.eventmesh.common.config.ConfigField;
+import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler;
+import org.apache.eventmesh.runtime.admin.response.Result;
+import org.apache.eventmesh.runtime.admin.response.v2.GetConfigurationResponse;
+import org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
+import org.apache.eventmesh.runtime.configuration.EventMeshGrpcConfiguration;
+import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration;
+import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration;
+import org.apache.eventmesh.runtime.util.HttpRequestUtil;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.http.HttpRequest;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.filter.Filter;
+import com.alibaba.fastjson2.filter.NameFilter;
+import com.alibaba.fastjson2.filter.ValueFilter;
+
+import lombok.extern.slf4j.Slf4j;
+
+import inet.ipaddr.IPAddress;
+
+/**
+ * This class handles the {@code /v2/configuration} endpoint, corresponding to the {@code eventmesh-dashboard} path {@code /}.
+ * <p>
+ * This handler is responsible for retrieving the current configuration information of the EventMesh node, including service name, service
+ * environment, and listening ports for various protocols.
+ */
+
+@Slf4j
+@EventMeshHttpHandler(path = "/v2/configuration")
+public class ConfigurationHandler extends AbstractHttpHandler {
+
+ private final EventMeshTCPConfiguration eventMeshTCPConfiguration;
+ private final EventMeshHTTPConfiguration eventMeshHTTPConfiguration;
+ private final EventMeshGrpcConfiguration eventMeshGrpcConfiguration;
+
+ /**
+ * Constructs a new instance with the provided configurations.
+ *
+ * @param eventMeshTCPConfiguration the TCP configuration for EventMesh
+ * @param eventMeshHTTPConfiguration the HTTP configuration for EventMesh
+ * @param eventMeshGrpcConfiguration the gRPC configuration for EventMesh
+ */
+ public ConfigurationHandler(
+ EventMeshTCPConfiguration eventMeshTCPConfiguration,
+ EventMeshHTTPConfiguration eventMeshHTTPConfiguration,
+ EventMeshGrpcConfiguration eventMeshGrpcConfiguration) {
+ super();
+ this.eventMeshTCPConfiguration = eventMeshTCPConfiguration;
+ this.eventMeshHTTPConfiguration = eventMeshHTTPConfiguration;
+ this.eventMeshGrpcConfiguration = eventMeshGrpcConfiguration;
+ }
+
+ /**
+ * Parameters:
+ * <ul>
+ * <li>
+ * {@code format}: String; Optional, DefaultValue: {@code properties}, SelectableValue: {@code bean}.
+ * <p>When {@code properties}, the field names are returned in Properties format;
+ * <p>When {@code bean}, the field names themselves are used as json keys.
+ * </li>
+ * </ul>
+ */
+ @Override
+ protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) {
+ String format = HttpRequestUtil.getQueryParam(httpRequest, "format", "properties");
+
+ Filter[] filters;
+ if (format.equals("properties")) {
+ filters = new Filter[] {new ConfigFieldFilter(), new IPAddressToStringFilter()};
+ } else if (format.equals("bean")) {
+ filters = new Filter[] {new IPAddressToStringFilter()};
+ } else {
+ log.warn("Invalid format param: {}", format);
+ writeBadRequest(ctx, "Invalid format param: " + format);
+ return;
+ }
+
+ GetConfigurationResponse getConfigurationResponse = new GetConfigurationResponse(
+ eventMeshTCPConfiguration,
+ eventMeshHTTPConfiguration,
+ eventMeshGrpcConfiguration
+ );
+ String json = JSON.toJSONString(Result.success(getConfigurationResponse), filters);
+ writeJson(ctx, json);
+ }
+
+ /**
+ * For each member of {@link EventMeshTCPConfiguration}, {@link EventMeshHTTPConfiguration}, and {@link EventMeshGrpcConfiguration},
+ * the value of the {@link ConfigField} annotation for each field is obtained through reflection,
+ * and then concatenated with the configuration prefix in the {@link Config} annotation to serve as the JSON key for this field.
+ * <p>
+ * When the {@code name} is a member that only exists in the superclass, it will be searched for in the {@link CommonConfiguration} class.
+ * <p>
+ * If a field does not have a {@link ConfigField} annotation or the value of the {@link ConfigField} annotation is empty,
+ * this field will be added to the JSON with the field name as the key, rather than in properties format.
+ */
+ static class ConfigFieldFilter implements NameFilter {
+ @Override
+ public String process(Object object, String name, Object value) {
+ try {
+ Field field = findFieldInClassHierarchy(object.getClass(), name);
+ if (field != null && field.isAnnotationPresent(ConfigField.class)) {
+ ConfigField configField = field.getAnnotation(ConfigField.class);
+ String fieldAnnotationValue = configField.field();
+ if (!fieldAnnotationValue.isEmpty()) {
+ Config config = object.getClass().getAnnotation(Config.class);
+ String prefix = config.prefix();
+ return prefix + "." + fieldAnnotationValue;
+ }
+ }
+ } catch (NoSuchFieldException e) {
+ log.error("Failed to get field {} from object {}", name, object, e);
+ }
+ return name;
+ }
+
+ private Field findFieldInClassHierarchy(Class<?> clazz, String fieldName) throws NoSuchFieldException {
+ try {
+ return clazz.getDeclaredField(fieldName);
+ } catch (NoSuchFieldException e) {
+ Class<?> superclass = clazz.getSuperclass();
+ if (superclass == null) {
+ throw e;
+ } else {
+ return findFieldInClassHierarchy(superclass, fieldName);
+ }
+ }
+ }
+ }
+
+ /**
+ * {@link IPAddress} can't be serialized directly by FastJSON,
+ * so this filter converts {@link IPAddress} objects to their string representation.
+ */
+ static class IPAddressToStringFilter implements ValueFilter {
+ @Override
+ public Object apply(Object object, String name, Object value) {
+ if (name.equals("eventMeshIpv4BlackList") || name.equals("eventMeshIpv6BlackList")) {
+ if (value instanceof List) {
+ List<String> ipList = new ArrayList<>();
+ for (Object o : (List<?>) value) {
+ if (o instanceof IPAddress) {
+ ipList.add(((IPAddress) o).toNormalizedString());
+ }
+ }
+ return ipList;
+ }
+ }
+ return value;
+ }
+ }
+}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Error.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Result.java
similarity index 65%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Error.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Result.java
index 4b03a07ba..f8ba718e9 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Error.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Result.java
@@ -17,22 +17,35 @@
package org.apache.eventmesh.runtime.admin.response;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
+import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * A RESTful response DTO.
+ */
@Data
-public class Error {
+@NoArgsConstructor
+@AllArgsConstructor
+public class Result<T> {
- private String message;
+ private T data;
- private String stackTrace;
+ private String message;
- @JsonCreator
- public Error(@JsonProperty("message") String message, @JsonProperty("stackTrace") String stackTrace) {
- super();
+ public Result(String message) {
this.message = message;
- this.stackTrace = stackTrace;
+ }
+
+ /**
+ * The request is valid and the result is wrapped in {@link Result}.
+ */
+ public static <T> Result<T> success() {
+ return new Result<>("Success");
+ }
+
+ public static <T> Result<T> success(T data) {
+ return new Result<>(data, "Success");
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetClientResponse.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetClientResponse.java
similarity index 97%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetClientResponse.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetClientResponse.java
index 8093704c5..42c21a0d5 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetClientResponse.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetClientResponse.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.response;
+package org.apache.eventmesh.runtime.admin.response.v1;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetConfigurationResponse.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetConfigurationResponse.java
similarity index 98%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetConfigurationResponse.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetConfigurationResponse.java
index b381c2f65..47cceabca 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetConfigurationResponse.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetConfigurationResponse.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.response;
+package org.apache.eventmesh.runtime.admin.response.v1;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetMetricsResponse.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetMetricsResponse.java
old mode 100755
new mode 100644
similarity index 99%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetMetricsResponse.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetMetricsResponse.java
index 268aedc0f..df95eabdb
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetMetricsResponse.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetMetricsResponse.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.response;
+package org.apache.eventmesh.runtime.admin.response.v1;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetRegistryResponse.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetRegistryResponse.java
old mode 100755
new mode 100644
similarity index 96%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetRegistryResponse.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetRegistryResponse.java
index 8416076a3..698b6458d
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetRegistryResponse.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetRegistryResponse.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.eventmesh.runtime.admin.response;
+package org.apache.eventmesh.runtime.admin.response.v1;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/eventmesh-trace-plugin/eventmesh-trace-zipkin/src/main/java/org/apache/eventmesh/trace/zipkin/config/ZipkinConfiguration.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v2/GetConfigurationResponse.java
similarity index 56%
copy from eventmesh-trace-plugin/eventmesh-trace-zipkin/src/main/java/org/apache/eventmesh/trace/zipkin/config/ZipkinConfiguration.java
copy to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v2/GetConfigurationResponse.java
index fcc2ac0de..40161cca7 100644
--- a/eventmesh-trace-plugin/eventmesh-trace-zipkin/src/main/java/org/apache/eventmesh/trace/zipkin/config/ZipkinConfiguration.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v2/GetConfigurationResponse.java
@@ -15,24 +15,22 @@
* limitations under the License.
*/
-package org.apache.eventmesh.trace.zipkin.config;
+package org.apache.eventmesh.runtime.admin.response.v2;
-import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.runtime.configuration.EventMeshGrpcConfiguration;
+import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration;
+import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration;
+import lombok.AllArgsConstructor;
import lombok.Data;
-
-/**
- * to load the properties form zipkin.properties
- */
+import lombok.NoArgsConstructor;
@Data
-@Config(prefix = "eventmesh.trace.zipkin", path = "classPath://zipkin.properties")
-public class ZipkinConfiguration {
-
- @ConfigFiled(field = "ip", notNull = true)
- private String eventMeshZipkinIP = "localhost";
+@NoArgsConstructor
+@AllArgsConstructor
+public class GetConfigurationResponse {
- @ConfigFiled(field = "port")
- private int eventMeshZipkinPort = 9411;
+ private EventMeshTCPConfiguration eventMeshTCPConfiguration;
+ private EventMeshHTTPConfiguration eventMeshHTTPConfiguration;
+ private EventMeshGrpcConfiguration eventMeshGrpcConfiguration;
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/utils/HttpExchangeUtils.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/utils/HttpExchangeUtils.java
deleted file mode 100644
index 67479c8c2..000000000
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/utils/HttpExchangeUtils.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.runtime.admin.utils;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-
-public class HttpExchangeUtils {
-
- public static String streamToString(InputStream stream) throws IOException {
- try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8))) {
-
- StringBuilder buffer = new StringBuilder();
- int b;
-
- while ((b = bufferedReader.read()) != -1) {
- buffer.append((char) b);
- }
-
- return buffer.toString();
- }
- }
-}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java
index 8dd952517..5065b73a0 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java
@@ -451,11 +451,11 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer {
@Override
public void exceptionCaught(final ChannelHandlerContext ctx, final Throwable cause) {
- if (null != cause) {
+ if (cause != null) {
log.error("", cause);
}
- if (null != ctx) {
+ if (ctx != null) {
ctx.close();
}
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java
index f7b16baa5..4abba74a5 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java
@@ -17,9 +17,6 @@
package org.apache.eventmesh.runtime.boot;
-import static org.apache.eventmesh.runtime.util.HttpResponseUtils.getHttpResponse;
-
-import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.runtime.admin.handler.AdminHandlerManager;
import org.apache.eventmesh.runtime.admin.handler.HttpHandler;
import org.apache.eventmesh.runtime.util.HttpResponseUtils;
@@ -63,7 +60,7 @@ public class EventMeshAdminServer extends AbstractHTTPServer {
@Override
public void init() throws Exception {
- super.init("eventMesh-admin-http");
+ super.init("eventMesh-admin");
adminHandlerManager.registerHttpHandler();
}
@@ -92,7 +89,7 @@ public class EventMeshAdminServer extends AbstractHTTPServer {
}
System.exit(-1);
}
- }, "EventMesh-http-server");
+ }, "EventMesh-admin-server");
thread.setDaemon(true);
thread.start();
started.compareAndSet(false, true);
@@ -105,13 +102,10 @@ public class EventMeshAdminServer extends AbstractHTTPServer {
if (httpHandlerOpt.isPresent()) {
try {
httpHandlerOpt.get().handle(httpRequest, ctx);
- return;
} catch (Exception e) {
log.error("admin server channelRead error", e);
- ctx.writeAndFlush(
- getHttpResponse(Objects.requireNonNull(e.getMessage()).getBytes(Constants.DEFAULT_CHARSET),
- ctx, HttpHeaderValues.APPLICATION_JSON,
- HttpResponseStatus.INTERNAL_SERVER_ERROR)).addListener(ChannelFutureListener.CLOSE);
+ ctx.writeAndFlush(HttpResponseUtils.buildHttpResponse(Objects.requireNonNull(e.getMessage()), ctx,
+ HttpHeaderValues.APPLICATION_JSON, HttpResponseStatus.INTERNAL_SERVER_ERROR)).addListener(ChannelFutureListener.CLOSE);
}
} else {
ctx.writeAndFlush(HttpResponseUtils.createNotFound()).addListener(ChannelFutureListener.CLOSE);
@@ -120,7 +114,6 @@ public class EventMeshAdminServer extends AbstractHTTPServer {
private class AdminServerInitializer extends ChannelInitializer<SocketChannel> {
-
@Override
protected void initChannel(final SocketChannel channel) {
final ChannelPipeline pipeline = channel.pipeline();
@@ -133,11 +126,10 @@ public class EventMeshAdminServer extends AbstractHTTPServer {
new SimpleChannelInboundHandler<HttpRequest>() {
@Override
- protected void channelRead0(ChannelHandlerContext ctx, HttpRequest msg) throws Exception {
+ protected void channelRead0(ChannelHandlerContext ctx, HttpRequest msg) {
parseHttpRequest(ctx, msg);
}
});
}
}
-
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java
index 26e727406..3b33a71b8 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java
@@ -27,7 +27,6 @@ import org.apache.eventmesh.common.utils.AssertUtils;
import org.apache.eventmesh.common.utils.ConfigurationContextUtil;
import org.apache.eventmesh.runtime.acl.Acl;
import org.apache.eventmesh.runtime.common.ServiceState;
-import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import org.apache.eventmesh.runtime.core.protocol.http.producer.ProducerTopicManager;
import org.apache.eventmesh.runtime.meta.MetaStorage;
import org.apache.eventmesh.runtime.storage.StorageResource;
@@ -139,13 +138,10 @@ public class EventMeshServer {
adminBootstrap.init();
}
- final String eventStore = System.getProperty(EventMeshConstants.EVENT_STORE_PROPERTIES, System.getenv(EventMeshConstants.EVENT_STORE_ENV));
-
- log.info("eventStore : {}", eventStore);
producerTopicManager = new ProducerTopicManager(this);
producerTopicManager.init();
- serviceState = ServiceState.INITED;
+ serviceState = ServiceState.INITED;
log.info(SERVER_STATE_MSG, serviceState);
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java
index 4c675a0f8..bf6c740b5 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java
@@ -73,7 +73,7 @@ public class HTTPThreadPoolGroup implements ThreadPoolGroup {
new LinkedBlockingQueue<>(eventMeshHttpConfiguration.getEventMeshServerClientManageBlockQSize()),
"eventMesh-clientManage", true);
- // The runtimeAdminExecutor here is for the runtime.admin package and has nothing to do with the eventmesh-admin module.
+ // The runtimeAdminExecutor here is for the runtime.admin package.
runtimeAdminExecutor = ThreadPoolFactory.createThreadPoolExecutor(
eventMeshHttpConfiguration.getEventMeshServerAdminThreadNum(),
eventMeshHttpConfiguration.getEventMeshServerAdminThreadNum(),
@@ -82,8 +82,7 @@ public class HTTPThreadPoolGroup implements ThreadPoolGroup {
replyMsgExecutor = ThreadPoolFactory.createThreadPoolExecutor(
eventMeshHttpConfiguration.getEventMeshServerReplyMsgThreadNum(),
eventMeshHttpConfiguration.getEventMeshServerReplyMsgThreadNum(),
- new LinkedBlockingQueue<>(100),
- "eventMesh-replyMsg", true);
+ new LinkedBlockingQueue<>(100), "eventMesh-replyMsg", true);
webhookExecutor = ThreadPoolFactory.createThreadPoolExecutor(
eventMeshHttpConfiguration.getEventMeshServerWebhookThreadNum(),
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventHttpHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventMeshHttpHandler.java
similarity index 96%
rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventHttpHandler.java
rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventMeshHttpHandler.java
index 25c2bcbd5..dd30f65e6 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventHttpHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventMeshHttpHandler.java
@@ -26,7 +26,7 @@ import java.lang.annotation.Target;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
-public @interface EventHttpHandler {
+public @interface EventMeshHttpHandler {
/**
* request path
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java
index eee723aaa..cf08f2755 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java
@@ -19,7 +19,7 @@ package org.apache.eventmesh.runtime.configuration;
import org.apache.eventmesh.common.config.CommonConfiguration;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import org.apache.eventmesh.common.utils.IPUtils;
import lombok.Data;
@@ -32,76 +32,76 @@ import lombok.NoArgsConstructor;
@Config(prefix = "eventMesh.server")
public class EventMeshGrpcConfiguration extends CommonConfiguration {
- @ConfigFiled(field = "grpc.port", notNull = true, beNumber = true)
+ @ConfigField(field = "grpc.port", notNull = true, beNumber = true)
private int grpcServerPort = 10205;
- @ConfigFiled(field = "session.expiredInMills")
+ @ConfigField(field = "session.expiredInMills")
private int eventMeshSessionExpiredInMills = 60000;
- @ConfigFiled(field = "batchmsg.batch.enabled")
+ @ConfigField(field = "batchmsg.batch.enabled")
private boolean eventMeshServerBatchMsgBatchEnabled = Boolean.TRUE;
- @ConfigFiled(field = "batchmsg.threads.num")
+ @ConfigField(field = "batchmsg.threads.num")
private int eventMeshServerBatchMsgThreadNum = 10;
- @ConfigFiled(field = "sendmsg.threads.num")
+ @ConfigField(field = "sendmsg.threads.num")
private int eventMeshServerSendMsgThreadNum = 8;
- @ConfigFiled(field = "pushmsg.threads.num")
+ @ConfigField(field = "pushmsg.threads.num")
private int eventMeshServerPushMsgThreadNum = 8;
- @ConfigFiled(field = "replymsg.threads.num")
+ @ConfigField(field = "replymsg.threads.num")
private int eventMeshServerReplyMsgThreadNum = 8;
- @ConfigFiled(field = "clientmanage.threads.num")
+ @ConfigField(field = "clientmanage.threads.num")
private int eventMeshServerSubscribeMsgThreadNum = 4;
- @ConfigFiled(field = "metaStorage.threads.num")
+ @ConfigField(field = "metaStorage.threads.num")
private int eventMeshServerMetaStorageThreadNum = 10;
- @ConfigFiled(field = "admin.threads.num")
+ @ConfigField(field = "admin.threads.num")
private int eventMeshServerAdminThreadNum = 2;
- @ConfigFiled(field = "retry.threads.num")
+ @ConfigField(field = "retry.threads.num")
private int eventMeshServerRetryThreadNum = 2;
- @ConfigFiled(field = "pull.metaStorage.interval")
+ @ConfigField(field = "pull.metaStorage.interval")
private int eventMeshServerPullMetaStorageInterval = 30000;
- @ConfigFiled(field = "async.accumulation.threshold")
+ @ConfigField(field = "async.accumulation.threshold")
private int eventMeshServerAsyncAccumulationThreshold = 1000;
- @ConfigFiled(field = "retry.blockQ.size")
+ @ConfigField(field = "retry.blockQ.size")
private int eventMeshServerRetryBlockQueueSize = 10000;
- @ConfigFiled(field = "batchmsg.blockQ.size")
+ @ConfigField(field = "batchmsg.blockQ.size")
private int eventMeshServerBatchBlockQueueSize = 1000;
- @ConfigFiled(field = "sendmsg.blockQ.size")
+ @ConfigField(field = "sendmsg.blockQ.size")
private int eventMeshServerSendMsgBlockQueueSize = 1000;
- @ConfigFiled(field = "pushmsg.blockQ.size")
+ @ConfigField(field = "pushmsg.blockQ.size")
private int eventMeshServerPushMsgBlockQueueSize = 1000;
- @ConfigFiled(field = "clientM.blockQ.size")
+ @ConfigField(field = "clientM.blockQ.size")
private int eventMeshServerSubscribeMsgBlockQueueSize = 1000;
- @ConfigFiled(field = "busy.check.interval")
+ @ConfigField(field = "busy.check.interval")
private int eventMeshServerBusyCheckInterval = 1000;
- @ConfigFiled(field = "consumer.enabled")
+ @ConfigField(field = "consumer.enabled")
private boolean eventMeshServerConsumerEnabled = false;
- @ConfigFiled(field = "useTls.enabled")
+ @ConfigField(field = "useTls.enabled")
private boolean eventMeshServerUseTls = false;
- @ConfigFiled(field = "batchmsg.reqNumPerSecond")
+ @ConfigField(field = "batchmsg.reqNumPerSecond")
private int eventMeshBatchMsgRequestNumPerSecond = 20000;
- @ConfigFiled(field = "http.msgReqnumPerSecond")
+ @ConfigField(field = "http.msgReqnumPerSecond")
private int eventMeshMsgReqNumPerSecond = 15000;
- @ConfigFiled(field = "", reload = true)
+ @ConfigField(field = "", reload = true)
private String eventMeshIp;
public void reload() {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java
index a7ed9b26f..b0fa18df4 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java
@@ -19,7 +19,7 @@ package org.apache.eventmesh.runtime.configuration;
import org.apache.eventmesh.common.config.CommonConfiguration;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import java.util.Collections;
import java.util.List;
@@ -36,100 +36,100 @@ import inet.ipaddr.IPAddress;
@Config(prefix = "eventMesh.server")
public class EventMeshHTTPConfiguration extends CommonConfiguration {
- @ConfigFiled(field = "http.port", notNull = true, beNumber = true)
+ @ConfigField(field = "http.port", notNull = true, beNumber = true)
private int httpServerPort = 10105;
- @ConfigFiled(field = "batchmsg.batch.enabled")
+ @ConfigField(field = "batchmsg.batch.enabled")
private boolean eventMeshServerBatchMsgBatchEnabled = Boolean.TRUE;
- @ConfigFiled(field = "batchmsg.threads.num")
+ @ConfigField(field = "batchmsg.threads.num")
private int eventMeshServerBatchMsgThreadNum = 10;
- @ConfigFiled(field = "sendmsg.threads.num")
+ @ConfigField(field = "sendmsg.threads.num")
private int eventMeshServerSendMsgThreadNum = 8;
- @ConfigFiled(field = "remotemsg.threads.num")
+ @ConfigField(field = "remotemsg.threads.num")
private int eventMeshServerRemoteMsgThreadNum = 8;
- @ConfigFiled(field = "pushmsg.threads.num")
+ @ConfigField(field = "pushmsg.threads.num")
private int eventMeshServerPushMsgThreadNum = 8;
- @ConfigFiled(field = "replymsg.threads.num")
+ @ConfigField(field = "replymsg.threads.num")
private int eventMeshServerReplyMsgThreadNum = 8;
- @ConfigFiled(field = "clientmanage.threads.num")
+ @ConfigField(field = "clientmanage.threads.num")
private int eventMeshServerClientManageThreadNum = 4;
- @ConfigFiled(field = "metaStorage.threads.num")
+ @ConfigField(field = "metaStorage.threads.num")
private int eventMeshServerMetaStorageThreadNum = 10;
- @ConfigFiled(field = "admin.threads.num")
+ @ConfigField(field = "admin.threads.num")
private int eventMeshServerAdminThreadNum = 2;
- @ConfigFiled(field = "retry.threads.num")
+ @ConfigField(field = "retry.threads.num")
private int eventMeshServerRetryThreadNum = 2;
- @ConfigFiled(field = "")
+ @ConfigField(field = "")
private int eventMeshServerWebhookThreadNum = 4;
- @ConfigFiled(field = "pull.metaStorage.interval")
+ @ConfigField(field = "pull.metaStorage.interval")
private int eventMeshServerPullMetaStorageInterval = 30000;
- @ConfigFiled(field = "async.accumulation.threshold")
+ @ConfigField(field = "async.accumulation.threshold")
private int eventMeshServerAsyncAccumulationThreshold = 1000;
- @ConfigFiled(field = "retry.blockQ.size")
+ @ConfigField(field = "retry.blockQ.size")
private int eventMeshServerRetryBlockQSize = 10000;
- @ConfigFiled(field = "batchmsg.blockQ.size")
+ @ConfigField(field = "batchmsg.blockQ.size")
private int eventMeshServerBatchBlockQSize = 1000;
- @ConfigFiled(field = "sendmsg.blockQ.size")
+ @ConfigField(field = "sendmsg.blockQ.size")
private int eventMeshServerSendMsgBlockQSize = 1000;
- @ConfigFiled(field = "")
+ @ConfigField(field = "")
private int eventMeshServerRemoteMsgBlockQSize = 1000;
- @ConfigFiled(field = "pushmsg.blockQ.size")
+ @ConfigField(field = "pushmsg.blockQ.size")
private int eventMeshServerPushMsgBlockQSize = 1000;
- @ConfigFiled(field = "clientM.blockQ.size")
+ @ConfigField(field = "clientM.blockQ.size")
private int eventMeshServerClientManageBlockQSize = 1000;
- @ConfigFiled(field = "busy.check.interval")
+ @ConfigField(field = "busy.check.interval")
private int eventMeshServerBusyCheckInterval = 1000;
- @ConfigFiled(field = "consumer.enabled")
+ @ConfigField(field = "consumer.enabled")
private boolean eventMeshServerConsumerEnabled = false;
- @ConfigFiled(field = "useTls.enabled")
+ @ConfigField(field = "useTls.enabled")
private boolean eventMeshServerUseTls = false;
- @ConfigFiled(field = "ssl.protocol")
+ @ConfigField(field = "ssl.protocol")
private String eventMeshServerSSLProtocol = "TLSv1.1";
- @ConfigFiled(field = "ssl.cer")
+ @ConfigField(field = "ssl.cer")
private String eventMeshServerSSLCer = "sChat2.jks";
- @ConfigFiled(field = "ssl.pass")
+ @ConfigField(field = "ssl.pass")
private String eventMeshServerSSLPass = "sNetty";
- @ConfigFiled(field = "http.msgReqnumPerSecond")
+ @ConfigField(field = "http.msgReqnumPerSecond")
private int eventMeshHttpMsgReqNumPerSecond = 15000;
- @ConfigFiled(field = "batchmsg.reqNumPerSecond")
+ @ConfigField(field = "batchmsg.reqNumPerSecond")
private int eventMeshBatchMsgRequestNumPerSecond = 20000;
- @ConfigFiled(field = "maxEventSize")
+ @ConfigField(field = "maxEventSize")
private int eventMeshEventSize = 1000;
- @ConfigFiled(field = "maxEventBatchSize")
+ @ConfigField(field = "maxEventBatchSize")
private int eventMeshEventBatchSize = 10;
- @ConfigFiled(field = "blacklist.ipv4")
+ @ConfigField(field = "blacklist.ipv4")
private List<IPAddress> eventMeshIpv4BlackList = Collections.emptyList();
- @ConfigFiled(field = "blacklist.ipv6")
+ @ConfigField(field = "blacklist.ipv6")
private List<IPAddress> eventMeshIpv6BlackList = Collections.emptyList();
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java
index 84871b582..891f98616 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java
@@ -19,7 +19,7 @@ package org.apache.eventmesh.runtime.configuration;
import org.apache.eventmesh.common.config.CommonConfiguration;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -32,105 +32,105 @@ import lombok.NoArgsConstructor;
@Config(prefix = "eventMesh.server")
public class EventMeshTCPConfiguration extends CommonConfiguration {
- @ConfigFiled(field = "tcp.port")
+ @ConfigField(field = "tcp.port")
private int eventMeshTcpServerPort = 10000;
- @ConfigFiled(field = "tcp.allIdleSeconds")
+ @ConfigField(field = "tcp.allIdleSeconds")
private int eventMeshTcpIdleAllSeconds = 60;
- @ConfigFiled(field = "tcp.writerIdleSeconds")
+ @ConfigField(field = "tcp.writerIdleSeconds")
private int eventMeshTcpIdleWriteSeconds = 60;
- @ConfigFiled(field = "tcp.readerIdleSeconds")
+ @ConfigField(field = "tcp.readerIdleSeconds")
private int eventMeshTcpIdleReadSeconds = 60;
- @ConfigFiled(field = "tcp.msgReqnumPerSecond")
+ @ConfigField(field = "tcp.msgReqnumPerSecond")
private Integer eventMeshTcpMsgReqnumPerSecond = 15000;
/**
* TCP Server allows max client num
*/
- @ConfigFiled(field = "tcp.clientMaxNum")
+ @ConfigField(field = "tcp.clientMaxNum")
private int eventMeshTcpClientMaxNum = 10000;
// ======================================= New add config =================================
- @ConfigFiled(field = "global.scheduler")
+ @ConfigField(field = "global.scheduler")
private int eventMeshTcpGlobalScheduler = 5;
- @ConfigFiled(field = "tcp.taskHandleExecutorPoolSize")
+ @ConfigField(field = "tcp.taskHandleExecutorPoolSize")
private int eventMeshTcpTaskHandleExecutorPoolSize = 2 * Runtime.getRuntime().availableProcessors();
- @ConfigFiled(field = "tcp.sendExecutorPoolSize")
+ @ConfigField(field = "tcp.sendExecutorPoolSize")
private int eventMeshTcpMsgSendExecutorPoolSize = 2 * Runtime.getRuntime().availableProcessors();
- @ConfigFiled(field = "tcp.replyExecutorPoolSize")
+ @ConfigField(field = "tcp.replyExecutorPoolSize")
private int eventMeshTcpMsgReplyExecutorPoolSize = 2 * Runtime.getRuntime().availableProcessors();
- @ConfigFiled(field = "tcp.ackExecutorPoolSize")
+ @ConfigField(field = "tcp.ackExecutorPoolSize")
private int eventMeshTcpMsgAckExecutorPoolSize = 2 * Runtime.getRuntime().availableProcessors();
- @ConfigFiled(field = "tcp.taskHandleExecutorQueueSize")
+ @ConfigField(field = "tcp.taskHandleExecutorQueueSize")
private int eventMeshTcpTaskHandleExecutorQueueSize = 10000;
- @ConfigFiled(field = "tcp.sendExecutorQueueSize")
+ @ConfigField(field = "tcp.sendExecutorQueueSize")
private int eventMeshTcpMsgSendExecutorQueueSize = 10000;
- @ConfigFiled(field = "tcp.replyExecutorQueueSize")
+ @ConfigField(field = "tcp.replyExecutorQueueSize")
private int eventMeshTcpMsgReplyExecutorQueueSize = 10000;
- @ConfigFiled(field = "tcp.ackExecutorQueueSize")
+ @ConfigField(field = "tcp.ackExecutorQueueSize")
private int eventMeshTcpMsgAckExecutorQueueSize = 10000;
- @ConfigFiled(field = "tcp.msgDownStreamExecutorPoolSize")
+ @ConfigField(field = "tcp.msgDownStreamExecutorPoolSize")
private int eventMeshTcpMsgDownStreamExecutorPoolSize = Math.max(Runtime.getRuntime().availableProcessors(), 8);
- @ConfigFiled(field = "session.expiredInMills")
+ @ConfigField(field = "session.expiredInMills")
private int eventMeshTcpSessionExpiredInMills = 60000;
- @ConfigFiled(field = "session.upstreamBufferSize")
+ @ConfigField(field = "session.upstreamBufferSize")
private int eventMeshTcpSessionUpstreamBufferSize = 100;
- @ConfigFiled(field = "retry.async.pushRetryTimes")
+ @ConfigField(field = "retry.async.pushRetryTimes")
private int eventMeshTcpMsgAsyncRetryTimes = 3;
- @ConfigFiled(field = "retry.sync.pushRetryTimes")
+ @ConfigField(field = "retry.sync.pushRetryTimes")
private int eventMeshTcpMsgSyncRetryTimes = 1;
- @ConfigFiled(field = "retry.sync.pushRetryDelayInMills")
+ @ConfigField(field = "retry.sync.pushRetryDelayInMills")
private int eventMeshTcpMsgRetrySyncDelayInMills = 500;
- @ConfigFiled(field = "retry.async.pushRetryDelayInMills")
+ @ConfigField(field = "retry.async.pushRetryDelayInMills")
private int eventMeshTcpMsgRetryAsyncDelayInMills = 500;
- @ConfigFiled(field = "retry.pushRetryQueueSize")
+ @ConfigField(field = "retry.pushRetryQueueSize")
private int eventMeshTcpMsgRetryQueueSize = 10000;
- @ConfigFiled(field = "tcp.RebalanceIntervalInMills")
+ @ConfigField(field = "tcp.RebalanceIntervalInMills")
private Integer eventMeshTcpRebalanceIntervalInMills = 30 * 1000;
- @ConfigFiled(field = "admin.http.port")
+ @ConfigField(field = "admin.http.port")
private int eventMeshServerAdminPort = 10106;
- @ConfigFiled(field = "tcp.sendBack.enabled")
+ @ConfigField(field = "tcp.sendBack.enabled")
private boolean eventMeshTcpSendBackEnabled = Boolean.TRUE;
- @ConfigFiled(field = "tcp.SendBackMaxTimes")
+ @ConfigField(field = "tcp.SendBackMaxTimes")
private int eventMeshTcpSendBackMaxTimes = 3;
- @ConfigFiled(field = "tcp.pushFailIsolateTimeInMills")
+ @ConfigField(field = "tcp.pushFailIsolateTimeInMills")
private int eventMeshTcpPushFailIsolateTimeInMills = 30 * 1000;
- @ConfigFiled(field = "gracefulShutdown.sleepIntervalInMills")
+ @ConfigField(field = "gracefulShutdown.sleepIntervalInMills")
private int gracefulShutdownSleepIntervalInMills = 1000;
- @ConfigFiled(field = "rebalanceRedirect.sleepIntervalInM")
+ @ConfigField(field = "rebalanceRedirect.sleepIntervalInM")
private int sleepIntervalInRebalanceRedirectMills = 200;
- @ConfigFiled(field = "maxEventSize")
+ @ConfigField(field = "maxEventSize")
private int eventMeshEventSize = 1000;
- @ConfigFiled(field = "maxEventBatchSize")
+ @ConfigField(field = "maxEventBatchSize")
private int eventMeshEventBatchSize = 10;
private final TrafficShapingConfig gtc = new TrafficShapingConfig(0, 10_000, 1_000, 2_000);
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/constants/EventMeshConstants.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/constants/EventMeshConstants.java
index 4196572cc..2830ae959 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/constants/EventMeshConstants.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/constants/EventMeshConstants.java
@@ -21,10 +21,6 @@ import org.apache.eventmesh.common.Constants;
public class EventMeshConstants {
- public static final String EVENT_STORE_PROPERTIES = "eventstore";
-
- public static final String EVENT_STORE_ENV = "EVENT_STORE";
-
public static final String PROTOCOL_HTTP = "http";
public static final String PROTOCOL_TCP = "tcp";
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQProducerWrapper.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQProducerWrapper.java
index f0a50dcc0..84b0079f4 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQProducerWrapper.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQProducerWrapper.java
@@ -91,5 +91,4 @@ public class MQProducerWrapper extends MQWrapper {
public Producer getMeshMQProducer() {
return meshMQProducer;
}
-
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQWrapper.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQWrapper.java
index 6edf93f53..e0828d460 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQWrapper.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQWrapper.java
@@ -17,29 +17,11 @@
package org.apache.eventmesh.runtime.core.plugin;
-import org.apache.eventmesh.runtime.constants.EventMeshConstants;
-
-import org.apache.commons.lang3.StringUtils;
-
import java.util.concurrent.atomic.AtomicBoolean;
public abstract class MQWrapper {
- public static final String EVENT_STORE_DEFIBUS = "defibus";
-
- public static String CURRENT_EVENT_STORE = EVENT_STORE_DEFIBUS;
-
- public static final String EVENT_STORE_CONF = System.getProperty(EventMeshConstants.EVENT_STORE_PROPERTIES,
- System.getenv(EventMeshConstants.EVENT_STORE_ENV));
-
- static {
- if (StringUtils.isNotBlank(EVENT_STORE_CONF)) {
- CURRENT_EVENT_STORE = EVENT_STORE_CONF;
- }
- }
-
public AtomicBoolean started = new AtomicBoolean(Boolean.FALSE);
public AtomicBoolean inited = new AtomicBoolean(Boolean.FALSE);
-
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/CreateTopicProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/CreateTopicProcessor.java
index 3f364e9fa..64a5ddfd9 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/CreateTopicProcessor.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/CreateTopicProcessor.java
@@ -65,8 +65,6 @@ public class CreateTopicProcessor implements AsyncHttpProcessor {
final ChannelHandlerContext ctx = handlerSpecific.getCtx();
final HttpEventWrapper requestWrapper = asyncContext.getRequest();
- HttpEventWrapper responseWrapper;
-
HTTP_LOGGER.info("uri={}|{}|client2eventMesh|from={}|to={}", requestWrapper.getRequestURI(),
EventMeshConstants.PROTOCOL_HTTP, RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress());
@@ -90,6 +88,8 @@ public class CreateTopicProcessor implements AsyncHttpProcessor {
new TypeReference<HashMap<String, Object>>() {
});
+ HttpEventWrapper responseWrapper;
+
if (requestBodyMap.get("topic") == null || StringUtils.isBlank(requestBodyMap.get("topic").toString())) {
Map<String, Object> responseBodyMap = new HashMap<>();
responseBodyMap.put("retCode", EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode());
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/DeleteTopicProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/DeleteTopicProcessor.java
index be426c0fc..0def2507f 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/DeleteTopicProcessor.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/DeleteTopicProcessor.java
@@ -67,8 +67,6 @@ public class DeleteTopicProcessor implements AsyncHttpProcessor {
final ChannelHandlerContext ctx = handlerSpecific.getCtx();
final HttpEventWrapper requestWrapper = asyncContext.getRequest();
- HttpEventWrapper responseWrapper;
-
HTTP_LOGGER.info("uri={}|{}|client2eventMesh|from={}|to={}", requestWrapper.getRequestURI(),
EventMeshConstants.PROTOCOL_HTTP, RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress());
@@ -92,6 +90,8 @@ public class DeleteTopicProcessor implements AsyncHttpProcessor {
new TypeReference<HashMap<String, Object>>() {
});
+ HttpEventWrapper responseWrapper;
+
if (requestBodyMap.get("topic") == null || StringUtils.isBlank(requestBodyMap.get("topic").toString())) {
Map<String, Object> responseBodyMap = new HashMap<>();
responseBodyMap.put("retCode", EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode());
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java
index 58149fc42..b68ea2f64 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java
@@ -278,7 +278,6 @@ public class HandlerService {
}
ProcessorWrapper processorWrapper = HandlerService.this.httpProcessorMap.get(processorKey);
try {
- this.preHandler();
if (processorWrapper.httpProcessor instanceof AsyncHttpProcessor) {
// set actual async request
HttpEventWrapper httpEventWrapper = parseHttpRequest(request);
@@ -289,10 +288,10 @@ public class HandlerService {
response = processorWrapper.httpProcessor.handler(request);
if (processorWrapper.httpProcessor instanceof ShortHttpProcessor) {
- this.postHandler(ConnectionType.SHORT_LIVED);
+ this.postHandlerWithTimeCostRecord(ConnectionType.SHORT_LIVED);
return;
}
- this.postHandler(ConnectionType.PERSISTENT);
+ this.postHandlerWithTimeCostRecord(ConnectionType.PERSISTENT);
} catch (Throwable e) {
exception = e;
// todo: according exception to generate response
@@ -301,6 +300,12 @@ public class HandlerService {
}
}
+ private void postHandlerWithTimeCostRecord(ConnectionType type) {
+ metrics.getSummaryMetrics().recordHTTPReqResTimeCost(System.currentTimeMillis() - requestTime);
+ HTTP_LOGGER.debug("{}", response);
+ postHandler(type);
+ }
+
private void postHandler(ConnectionType type) {
metrics.getSummaryMetrics().recordHTTPRequest();
HTTP_LOGGER.debug("{}", request);
@@ -315,10 +320,6 @@ public class HandlerService {
}
}
- private void preHandler() {
- metrics.getSummaryMetrics().recordHTTPReqResTimeCost(System.currentTimeMillis() - requestTime);
- HTTP_LOGGER.debug("{}", response);
- }
private void error() {
log.error(this.exception.getMessage(), this.exception);
@@ -328,14 +329,6 @@ public class HandlerService {
HandlerService.this.sendResponse(ctx, this.request, this.response);
}
- public void setResponseJsonBody(String body) {
- this.sendResponse(HttpResponseUtils.setResponseJsonBody(body, ctx));
- }
-
- public void setResponseTextBody(String body) {
- this.sendResponse(HttpResponseUtils.setResponseTextBody(body, ctx));
- }
-
public void sendResponse(HttpResponse response) {
this.response = response;
this.postHandler(ConnectionType.PERSISTENT);
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/producer/EventMeshProducer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/producer/EventMeshProducer.java
index bd27d6933..749695d4c 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/producer/EventMeshProducer.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/producer/EventMeshProducer.java
@@ -65,7 +65,6 @@ public class EventMeshProducer {
keyValue.put(EventMeshConstants.INSTANCE_NAME, EventMeshUtil.buildMeshClientID(
producerGroupConfig.getGroupName(), configuration.getEventMeshCluster()));
- // TODO for defibus
keyValue.put(EventMeshConstants.EVENT_MESH_IDC, configuration.getEventMeshIDC());
mqProducerWrapper = new MQProducerWrapper(
configuration.getEventMeshStoragePluginType());
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientGroupWrapper.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientGroupWrapper.java
index f5a6f748e..8b4ce0a4e 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientGroupWrapper.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientGroupWrapper.java
@@ -289,7 +289,6 @@ public class ClientGroupWrapper {
.buildMeshTcpClientID(sysId, EventMeshConstants.PURPOSE_PUB_UPPER_CASE,
eventMeshTCPConfiguration.getEventMeshCluster()));
- // TODO for defibus
keyValue.put(EventMeshConstants.EVENT_MESH_IDC, eventMeshTCPConfiguration.getEventMeshIDC());
mqProducerWrapper.init(keyValue);
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/Session.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/Session.java
index 37c5a1e37..e2e36690a 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/Session.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/Session.java
@@ -238,15 +238,15 @@ public class Session {
@Override
public int hashCode() {
int result = 1001; // primeNumber
- if (null != client) {
+ if (client != null) {
result += 31 * result + Objects.hash(client);
}
- if (null != context) {
+ if (context != null) {
result += 31 * result + Objects.hash(context);
}
- if (null != sessionState) {
+ if (sessionState != null) {
result += 31 * result + Objects.hash(sessionState);
}
return result;
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpRequestUtil.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpRequestUtil.java
index ecfcd0e19..afa43ba6b 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpRequestUtil.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpRequestUtil.java
@@ -19,6 +19,7 @@ package org.apache.eventmesh.runtime.util;
import java.io.IOException;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Consumer;
@@ -51,12 +52,16 @@ public class HttpRequestUtil {
} else if (io.netty.handler.codec.http.HttpMethod.POST.equals(httpRequest.method())) {
decodeHttpRequestBody(httpRequest, httpRequestBody);
}
- if (Objects.isNull(t)) {
+ if (!Objects.isNull(end)) {
end.accept(t);
}
return httpRequestBody;
}
+ public static Map<String, Object> parseHttpRequestBody(final HttpRequest httpRequest) throws IOException {
+ return parseHttpRequestBody(httpRequest, null, null);
+ }
+
private static void decodeHttpRequestBody(HttpRequest httpRequest, Map<String, Object> httpRequestBody) throws IOException {
final HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(DEFAULT_HTTP_DATA_FACTORY, httpRequest);
for (final InterfaceHttpData param : decoder.getBodyHttpDatas()) {
@@ -68,4 +73,47 @@ public class HttpRequestUtil {
decoder.destroy();
}
+ /**
+ * Converts a query string to a map of key-value pairs.
+ * <p>
+ * This method takes a query string and parses it to create a map of key-value pairs, where each key and value are extracted from the query string
+ * separated by '='.
+ * <p>
+ * If the query string is null, an empty map is returned.
+ *
+ * @param queryString the query string to convert to a map
+ * @return a map containing the key-value pairs from the query string
+ */
+ public static Map<String, String> queryStringToMap(String queryString) {
+ if (queryString == null) {
+ return new HashMap<>();
+ }
+ Map<String, String> result = new HashMap<>();
+ for (String param : queryString.split("&")) {
+ String[] entry = param.split("=");
+ if (entry.length > 1) {
+ result.put(entry[0], entry[1]);
+ } else {
+ result.put(entry[0], "");
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Get the value of a query parameter in URI query string.
+ */
+ public static String getQueryParam(HttpRequest httpRequest, String key, String defaultValue) {
+ List<String> values = new QueryStringDecoder(httpRequest.uri()).parameters().get(key);
+ return values != null ? values.get(0) : defaultValue;
+ }
+
+ /**
+ * Get the value of a query parameter in body.
+ */
+ public static String getBodyParam(HttpRequest httpRequest, String key) throws IOException {
+ HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(httpRequest);
+ Attribute attribute = (Attribute) decoder.getBodyHttpData(key);
+ return attribute.getValue();
+ }
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpResponseUtils.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpResponseUtils.java
index 0db7e58c3..b24cfeab8 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpResponseUtils.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpResponseUtils.java
@@ -18,13 +18,13 @@
package org.apache.eventmesh.runtime.util;
import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.runtime.constants.EventMeshConstants;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.DefaultFullHttpResponse;
import io.netty.handler.codec.http.DefaultHttpHeaders;
import io.netty.handler.codec.http.HttpHeaderNames;
-import io.netty.handler.codec.http.HttpHeaderValues;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpResponse;
import io.netty.handler.codec.http.HttpResponseStatus;
@@ -33,59 +33,51 @@ import io.netty.util.AsciiString;
public class HttpResponseUtils {
+ /**
+ * @return Empty response with 200 status code.
+ */
public static HttpResponse createSuccess() {
return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
}
+ /**
+ * @return Empty response with 404 status code.
+ */
public static HttpResponse createNotFound() {
return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NOT_FOUND);
}
+ /**
+ * @return Empty response with 500 status code.
+ */
public static HttpResponse createInternalServerError() {
return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR);
}
- private static ByteBuf createByteBuf(ChannelHandlerContext ctx, String body) {
- byte[] bytes = body.getBytes(Constants.DEFAULT_CHARSET);
- return createByteBuf(ctx, bytes);
- }
-
- private static ByteBuf createByteBuf(ChannelHandlerContext ctx, byte[] bytes) {
- ByteBuf byteBuf = ctx.alloc().buffer(bytes.length);
- byteBuf.writeBytes(bytes);
- return byteBuf;
- }
-
- public static HttpResponse setResponseJsonBody(String body, ChannelHandlerContext ctx) {
- return getHttpResponse(body, ctx, HttpHeaderValues.APPLICATION_JSON);
-
- }
-
- public static HttpResponse setResponseTextBody(String body, ChannelHandlerContext ctx) {
- return getHttpResponse(body, ctx, HttpHeaderValues.TEXT_HTML);
- }
-
- public static HttpResponse getHttpResponse(String body, ChannelHandlerContext ctx, AsciiString headerValue) {
+ /**
+ * Only one header is set: {@link HttpHeaderNames#CONTENT_TYPE} with the provided {@code headerValue}.
+ */
+ public static HttpResponse buildHttpResponse(String body, ChannelHandlerContext ctx, AsciiString headerValue, HttpResponseStatus status) {
HttpHeaders responseHeaders = new DefaultHttpHeaders();
responseHeaders.add(HttpHeaderNames.CONTENT_TYPE, headerValue);
- return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, createByteBuf(ctx, body),
- responseHeaders, responseHeaders);
+ return buildHttpResponse(body, ctx, responseHeaders, status);
}
- public static HttpResponse getHttpResponse(byte[] bytes, ChannelHandlerContext ctx, AsciiString headerValue) {
- return getHttpResponse(bytes, ctx, headerValue, HttpResponseStatus.OK);
+ public static HttpResponse buildHttpResponse(String body, ChannelHandlerContext ctx, HttpHeaders responseHeaders, HttpResponseStatus status) {
+ return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status, createByteBuf(ctx, body), responseHeaders, responseHeaders);
}
- public static HttpResponse getHttpResponse(byte[] bytes, ChannelHandlerContext ctx, AsciiString headerValue, HttpResponseStatus status) {
+ public static HttpHeaders buildDefaultHttpHeaders(AsciiString contentType) {
HttpHeaders responseHeaders = new DefaultHttpHeaders();
- responseHeaders.add(HttpHeaderNames.CONTENT_TYPE, headerValue);
- return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status, createByteBuf(ctx, bytes),
- responseHeaders, responseHeaders);
+ responseHeaders.add(HttpHeaderNames.CONTENT_TYPE, contentType);
+ responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*");
+ return responseHeaders;
}
- public static HttpResponse getHttpResponse(byte[] bytes, ChannelHandlerContext ctx, HttpHeaders responseHeaders, HttpResponseStatus status) {
- return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status, createByteBuf(ctx, bytes),
- responseHeaders, responseHeaders);
+ private static ByteBuf createByteBuf(ChannelHandlerContext ctx, String body) {
+ byte[] bytes = body.getBytes(Constants.DEFAULT_CHARSET);
+ ByteBuf byteBuf = ctx.alloc().buffer(bytes.length);
+ byteBuf.writeBytes(bytes);
+ return byteBuf;
}
-
}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpTinyClient.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpTinyClient.java
index 38d3019de..24142a682 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpTinyClient.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpTinyClient.java
@@ -80,7 +80,7 @@ public class HttpTinyClient {
}
private static void setHeaders(HttpURLConnection conn, Collection<String> headers, String encoding) {
- if (null != headers) {
+ if (headers != null) {
for (Iterator<String> iter = headers.iterator(); iter.hasNext();) {
conn.addRequestProperty(iter.next(), iter.next());
}
@@ -116,7 +116,7 @@ public class HttpTinyClient {
return new HttpResult(respCode, resp);
} finally {
- if (null != conn) {
+ if (conn != null) {
conn.disconnect();
}
}
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/admin/handler/EventHandlerTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/admin/handler/EventHandlerTest.java
new file mode 100644
index 000000000..1df3386be
--- /dev/null
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/admin/handler/EventHandlerTest.java
@@ -0,0 +1,151 @@
+/*
+ * 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.runtime.admin.handler;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+import org.apache.eventmesh.runtime.admin.handler.v1.EventHandler;
+import org.apache.eventmesh.runtime.boot.EventMeshServer;
+import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
+import org.apache.eventmesh.runtime.core.plugin.MQAdminWrapper;
+import org.apache.eventmesh.runtime.mock.MockCloudEvent;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import io.cloudevents.CloudEvent;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.SimpleChannelInboundHandler;
+import io.netty.channel.embedded.EmbeddedChannel;
+import io.netty.handler.codec.http.DefaultFullHttpRequest;
+import io.netty.handler.codec.http.FullHttpRequest;
+import io.netty.handler.codec.http.HttpMethod;
+import io.netty.handler.codec.http.HttpObjectAggregator;
+import io.netty.handler.codec.http.HttpRequest;
+import io.netty.handler.codec.http.HttpRequestDecoder;
+import io.netty.handler.codec.http.HttpResponseEncoder;
+import io.netty.handler.codec.http.HttpVersion;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+@ExtendWith(MockitoExtension.class)
+public class EventHandlerTest {
+
+ public static String storagePlugin = "standalone";
+
+ EmbeddedChannel embeddedChannel;
+
+ AdminHandlerManager adminHandlerManager;
+
+ @Mock
+ EventMeshServer eventMeshServer;
+
+ @Mock
+ EventMeshTCPServer eventMeshTCPServer;
+
+ @Spy
+ EventHandler eventHandler = new EventHandler(storagePlugin);
+
+ @Mock
+ MQAdminWrapper mockAdmin;
+
+ List<CloudEvent> result = new ArrayList<>();
+
+ Method initHandler;
+
+ @BeforeEach
+ public void init() throws Exception {
+ result.add(new MockCloudEvent());
+ when(eventMeshServer.getEventMeshTCPServer()).thenReturn(eventMeshTCPServer);
+ adminHandlerManager = new AdminHandlerManager(eventMeshServer);
+ Field admin = EventHandler.class.getDeclaredField("admin");
+ admin.setAccessible(true);
+ admin.set(eventHandler, mockAdmin);
+ embeddedChannel = new EmbeddedChannel(
+ new HttpRequestDecoder(),
+ new HttpResponseEncoder(),
+ new HttpObjectAggregator(Integer.MAX_VALUE),
+ new SimpleChannelInboundHandler<HttpRequest>() {
+ @Override
+ protected void channelRead0(ChannelHandlerContext ctx, HttpRequest msg) throws Exception {
+ String uriStr = msg.uri();
+ URI uri = URI.create(uriStr);
+ adminHandlerManager.getHttpHandler(uri.getPath()).get().handle(msg, ctx);
+ }
+ });
+ initHandler = AdminHandlerManager.class.getDeclaredMethod("initHandler", HttpHandler.class);
+ initHandler.setAccessible(true);
+ initHandler.invoke(adminHandlerManager, eventHandler);
+ }
+
+ @Test
+ public void testGet() throws Exception {
+ when(mockAdmin.getEvent(anyString(), anyInt(), anyInt())).thenReturn(result);
+ FullHttpRequest httpRequest = new DefaultFullHttpRequest(
+ HttpVersion.HTTP_1_1, HttpMethod.GET, "/event?topicName=123&offset=0&length=1");
+ embeddedChannel.writeInbound(httpRequest);
+ boolean finish = embeddedChannel.finish();
+ assertTrue(finish);
+ ByteBuf byteBuf = null;
+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024);
+ while ((byteBuf = embeddedChannel.readOutbound()) != null) {
+ byte[] data = new byte[byteBuf.readableBytes()];
+ byteBuf.readBytes(data);
+ byteArrayOutputStream.write(data);
+ }
+ ;
+ String response = new String(byteArrayOutputStream.toByteArray(), "UTF-8");
+ String responseBody = response.split("\\r?\\n\\r?\\n")[1];
+ JsonNode jsonNode = new ObjectMapper().readTree(responseBody);
+ assertTrue(jsonNode.get(0).asText().contains("mockData"));
+ }
+
+ @Test
+ public void testPost() throws IOException {
+ FullHttpRequest httpRequest = new DefaultFullHttpRequest(
+ HttpVersion.HTTP_1_1, HttpMethod.POST, "/event", Unpooled.copiedBuffer(
+ ("specversion=1.0&id=cd7c0d63-6c7c-4300-9f4e-ceb51f46b1b1&source"
+ + "=/&type=cloudevents&datacontenttype=application/cloudevents+json&subject=test&ttl=4000").getBytes()));
+ embeddedChannel.writeInbound(httpRequest);
+ ByteBuf byteBuf = embeddedChannel.readOutbound();
+ byte[] data = new byte[byteBuf.readableBytes()];
+ byteBuf.readBytes(data);
+ String response = new String(data, "UTF-8");
+ String[] requestMessage = response.split("\r\n");
+ assertEquals("HTTP/1.1 200 OK", requestMessage[0].toString());
+ }
+}
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshServerTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshServerTest.java
index 3d7cfdf87..c546d38e3 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshServerTest.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshServerTest.java
@@ -93,7 +93,6 @@ public class EventMeshServerTest {
Assertions.assertEquals("cluster-succeed!!!", config.getEventMeshCluster());
Assertions.assertEquals("name-succeed!!!", config.getEventMeshName());
Assertions.assertEquals("816", config.getSysID());
- Assertions.assertEquals("connector-succeed!!!", config.getEventMeshConnectorPluginType());
Assertions.assertEquals("storage-succeed!!!", config.getEventMeshStoragePluginType());
Assertions.assertEquals("security-succeed!!!", config.getEventMeshSecurityPluginType());
Assertions.assertEquals("metaStorage-succeed!!!", config.getEventMeshMetaStoragePluginType());
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/UserAgentUtils.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/UserAgentUtils.java
index 2602c8538..500008dd7 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/UserAgentUtils.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/UserAgentUtils.java
@@ -43,8 +43,6 @@ public class UserAgentUtils {
public static UserAgent createUserAgent() {
UserAgent userAgent = new UserAgent();
userAgent.setSubsystem("5123");
- // userAgent.setPid(UtilAll.getPid());
- // userAgent.setHost(RemotingUtil.getLocalAddress());
userAgent.setVersion("2.0.8");
userAgent.setUsername("username");
userAgent.setPassword("1234");
@@ -54,13 +52,11 @@ public class UserAgentUtils {
public static UserAgent createSubUserAgent() {
UserAgent userAgent = new UserAgent();
userAgent.setSubsystem("5243");
- // userAgent.setPid(UtilAll.getPid());
- // userAgent.setHost(RemotingUtil.getLocalAddress());
userAgent.setPort(8888);
userAgent.setVersion("2.0.8");
userAgent.setUsername("username");
userAgent.setPassword("1234");
- userAgent.setPath("/data/app/defibus-acl/");
+ userAgent.setPath("/data/app/acl/");
userAgent.setPurpose(EventMeshConstants.PURPOSE_SUB);
return userAgent;
}
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfigurationTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfigurationTest.java
index b27b7c5f9..6b206167d 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfigurationTest.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfigurationTest.java
@@ -72,7 +72,6 @@ public class EventMeshGrpcConfigurationTest {
Assertions.assertEquals("cluster-succeed!!!", config.getEventMeshCluster());
Assertions.assertEquals("name-succeed!!!", config.getEventMeshName());
Assertions.assertEquals("816", config.getSysID());
- Assertions.assertEquals("connector-succeed!!!", config.getEventMeshConnectorPluginType());
Assertions.assertEquals("storage-succeed!!!", config.getEventMeshStoragePluginType());
Assertions.assertEquals("security-succeed!!!", config.getEventMeshSecurityPluginType());
Assertions.assertEquals("metaStorage-succeed!!!", config.getEventMeshMetaStoragePluginType());
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfigurationTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfigurationTest.java
index 096574412..d522ff551 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfigurationTest.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfigurationTest.java
@@ -87,7 +87,6 @@ public class EventMeshHTTPConfigurationTest {
Assertions.assertEquals("cluster-succeed!!!", config.getEventMeshCluster());
Assertions.assertEquals("name-succeed!!!", config.getEventMeshName());
Assertions.assertEquals("816", config.getSysID());
- Assertions.assertEquals("connector-succeed!!!", config.getEventMeshConnectorPluginType());
Assertions.assertEquals("storage-succeed!!!", config.getEventMeshStoragePluginType());
Assertions.assertEquals("security-succeed!!!", config.getEventMeshSecurityPluginType());
Assertions.assertEquals("metaStorage-succeed!!!", config.getEventMeshMetaStoragePluginType());
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfigurationTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfigurationTest.java
index c16a073d5..1501cf1b5 100644
--- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfigurationTest.java
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfigurationTest.java
@@ -74,7 +74,6 @@ public class EventMeshTCPConfigurationTest {
Assertions.assertEquals("cluster-succeed!!!", config.getEventMeshCluster());
Assertions.assertEquals("name-succeed!!!", config.getEventMeshName());
Assertions.assertEquals("816", config.getSysID());
- Assertions.assertEquals("connector-succeed!!!", config.getEventMeshConnectorPluginType());
Assertions.assertEquals("storage-succeed!!!", config.getEventMeshStoragePluginType());
Assertions.assertEquals("security-succeed!!!", config.getEventMeshSecurityPluginType());
Assertions.assertEquals("metaStorage-succeed!!!", config.getEventMeshMetaStoragePluginType());
diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/mock/MockCloudEvent.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/mock/MockCloudEvent.java
new file mode 100644
index 000000000..ff114d18c
--- /dev/null
+++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/mock/MockCloudEvent.java
@@ -0,0 +1,92 @@
+/*
+ * 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.runtime.mock;
+
+import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.time.OffsetDateTime;
+import java.util.Collections;
+import java.util.Set;
+
+import io.cloudevents.CloudEvent;
+import io.cloudevents.CloudEventData;
+import io.cloudevents.SpecVersion;
+import io.cloudevents.core.data.BytesCloudEventData;
+
+public class MockCloudEvent implements CloudEvent {
+
+ @Override
+ public CloudEventData getData() {
+ return BytesCloudEventData.wrap("mockData".getBytes(StandardCharsets.UTF_8));
+ }
+
+ @Override
+ public SpecVersion getSpecVersion() {
+ return SpecVersion.V1;
+ }
+
+ @Override
+ public String getId() {
+ return "mockId";
+ }
+
+ @Override
+ public String getType() {
+ return "mockType";
+ }
+
+ @Override
+ public URI getSource() {
+ return URI.create("mockSource");
+ }
+
+ @Override
+ public String getDataContentType() {
+ return null;
+ }
+
+ @Override
+ public URI getDataSchema() {
+ return URI.create("mockDataSchema");
+ }
+
+ @Override
+ public String getSubject() {
+ return "mockSubject";
+ }
+
+ @Override
+ public OffsetDateTime getTime() {
+ return null;
+ }
+
+ @Override
+ public Object getAttribute(String attributeName) throws IllegalArgumentException {
+ return null;
+ }
+
+ @Override
+ public Object getExtension(String extensionName) {
+ return null;
+ }
+
+ @Override
+ public Set<String> getExtensionNames() {
+ return Collections.emptySet();
+ }
+}
diff --git a/eventmesh-runtime/src/test/resources/configuration.properties b/eventmesh-runtime/src/test/resources/configuration.properties
index 71ad34e19..70ff82e05 100644
--- a/eventmesh-runtime/src/test/resources/configuration.properties
+++ b/eventmesh-runtime/src/test/resources/configuration.properties
@@ -22,7 +22,6 @@ eventMesh.sysid=816
eventMesh.server.cluster=cluster-succeed!!!
eventMesh.server.name=name-succeed!!!
eventMesh.server.hostIp=hostIp-succeed!!!
-eventMesh.connector.plugin.type=connector-succeed!!!
eventMesh.storage.plugin.type=storage-succeed!!!
eventMesh.security.plugin.type=security-succeed!!!
eventMesh.trace.plugin=trace-succeed!!!
@@ -33,8 +32,6 @@ eventMesh.metaStorage.plugin.server-addr=server-addr-succeed1!!!
eventMesh.metaStorage.plugin.enabled=true
eventMesh.metaStorage.plugin.username=username-succeed!!!
eventMesh.metaStorage.plugin.password=password-succeed!!!
-eventMesh.metaStorage.plugin.registerIntervalInMills=816
-eventMesh.metaStorage.plugin.fetchRegistryAddrIntervalInMills=1816
eventMesh.server.security.enabled=true
eventMesh.server.trace.enabled=true
diff --git a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/EventMeshGrpcConsumer.java b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/EventMeshGrpcConsumer.java
index 6ceefbe76..623ca1c6f 100644
--- a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/EventMeshGrpcConsumer.java
+++ b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/EventMeshGrpcConsumer.java
@@ -87,8 +87,7 @@ public class EventMeshGrpcConsumer implements AutoCloseable {
}
public void init() {
- this.channel = ManagedChannelBuilder.forAddress(clientConfig.getServerAddr(), clientConfig.getServerPort()).usePlaintext()
- .build();
+ this.channel = ManagedChannelBuilder.forAddress(clientConfig.getServerAddr(), clientConfig.getServerPort()).usePlaintext().build();
this.consumerClient = ConsumerServiceGrpc.newBlockingStub(channel);
this.consumerAsyncClient = ConsumerServiceGrpc.newStub(channel);
this.heartbeatClient = HeartbeatServiceGrpc.newBlockingStub(channel);
@@ -125,8 +124,8 @@ public class EventMeshGrpcConsumer implements AutoCloseable {
addSubscription(subscriptionItems, SDK_STREAM_URL, GrpcType.STREAM);
- CloudEvent subscription = EventMeshCloudEventBuilder.buildEventSubscription(clientConfig, EventMeshProtocolType.EVENT_MESH_MESSAGE, null,
- subscriptionItems);
+ CloudEvent subscription = EventMeshCloudEventBuilder.buildEventSubscription(
+ clientConfig, EventMeshProtocolType.EVENT_MESH_MESSAGE, null, subscriptionItems);
synchronized (this) {
if (subStreamHandler == null) {
subStreamHandler = new SubStreamHandler<>(consumerAsyncClient, clientConfig, listener);
@@ -137,8 +136,8 @@ public class EventMeshGrpcConsumer implements AutoCloseable {
}
private Response subscribeWebhook(List<SubscriptionItem> subscriptionItems, String url) {
- final CloudEvent subscription = EventMeshCloudEventBuilder.buildEventSubscription(clientConfig, EventMeshProtocolType.EVENT_MESH_MESSAGE,
- url, subscriptionItems);
+ final CloudEvent subscription = EventMeshCloudEventBuilder.buildEventSubscription(
+ clientConfig, EventMeshProtocolType.EVENT_MESH_MESSAGE, url, subscriptionItems);
try {
CloudEvent response = consumerClient.subscribe(subscription);
log.info("Received response:{}", response);
@@ -169,8 +168,8 @@ public class EventMeshGrpcConsumer implements AutoCloseable {
removeSubscription(subscriptionItems);
- final CloudEvent cloudEvent = EventMeshCloudEventBuilder.buildEventSubscription(clientConfig, EventMeshProtocolType.EVENT_MESH_MESSAGE, url,
- subscriptionItems);
+ final CloudEvent cloudEvent = EventMeshCloudEventBuilder.buildEventSubscription(
+ clientConfig, EventMeshProtocolType.EVENT_MESH_MESSAGE, url, subscriptionItems);
try {
final CloudEvent response = consumerClient.unsubscribe(cloudEvent);
log.info("Received response:{}", response);
@@ -191,8 +190,8 @@ public class EventMeshGrpcConsumer implements AutoCloseable {
removeSubscription(subscriptionItems);
- final CloudEvent cloudEvent = EventMeshCloudEventBuilder.buildEventSubscription(clientConfig, EventMeshProtocolType.EVENT_MESH_MESSAGE, null,
- subscriptionItems);
+ final CloudEvent cloudEvent = EventMeshCloudEventBuilder.buildEventSubscription(
+ clientConfig, EventMeshProtocolType.EVENT_MESH_MESSAGE, null, subscriptionItems);
try {
final CloudEvent response = consumerClient.unsubscribe(cloudEvent);
@@ -277,14 +276,12 @@ public class EventMeshGrpcConsumer implements AutoCloseable {
subscriptionGroup.forEach((url, items) -> {
if (isStreamSub.get()) {
- CloudEvent subscription = EventMeshCloudEventBuilder.buildEventSubscription(clientConfig, EventMeshProtocolType.EVENT_MESH_MESSAGE,
- url,
- items);
+ CloudEvent subscription = EventMeshCloudEventBuilder.buildEventSubscription(
+ clientConfig, EventMeshProtocolType.EVENT_MESH_MESSAGE, url, items);
subStreamHandler.sendSubscription(subscription);
} else {
subscribeWebhook(items, url);
}
-
});
}
@@ -303,6 +300,7 @@ public class EventMeshGrpcConsumer implements AutoCloseable {
}
}
+ @Data
private static class SubscriptionInfo {
private transient SubscriptionItem subscriptionItem;
@@ -314,25 +312,5 @@ public class EventMeshGrpcConsumer implements AutoCloseable {
this.url = url;
this.grpcType = grpcType;
}
-
- public GrpcType getGrpcType() {
- return grpcType;
- }
-
- public SubscriptionItem getSubscriptionItem() {
- return subscriptionItem;
- }
-
- public void setSubscriptionItem(final SubscriptionItem subscriptionItem) {
- this.subscriptionItem = subscriptionItem;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(final String url) {
- this.url = url;
- }
}
}
diff --git a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/SubStreamHandler.java b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/SubStreamHandler.java
index d34a0c79b..59436be08 100644
--- a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/SubStreamHandler.java
+++ b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/SubStreamHandler.java
@@ -96,12 +96,12 @@ public class SubStreamHandler<T> extends Thread implements Serializable {
@Override
public void onError(final Throwable t) {
log.error("Received Server side error", t);
+ close();
}
@Override
public void onCompleted() {
log.info("Finished receiving messages from server.");
- close();
}
};
}
@@ -134,7 +134,6 @@ public class SubStreamHandler<T> extends Thread implements Serializable {
}
latch.countDown();
-
log.info("SubStreamHandler closed.");
}
@@ -145,6 +144,7 @@ public class SubStreamHandler<T> extends Thread implements Serializable {
}
} catch (Exception e) {
log.error("StreamObserver Error onNext", e);
+ close();
}
}
diff --git a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/util/EventMeshCloudEventBuilder.java b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/util/EventMeshCloudEventBuilder.java
index f7ab40c20..5621b41e0 100644
--- a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/util/EventMeshCloudEventBuilder.java
+++ b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/util/EventMeshCloudEventBuilder.java
@@ -157,7 +157,7 @@ public class EventMeshCloudEventBuilder {
CloudEventAttributeValue.newBuilder().setCeString(Constants.PROTOCOL_DESC_GRPC_CLOUD_EVENT).build());
attributeValueMap.put(ProtocolKey.PRODUCERGROUP,
CloudEventAttributeValue.newBuilder().setCeString(clientConfig.getProducerGroup()).build());
- if (null != message.getTopic()) {
+ if (message.getTopic() != null) {
attributeValueMap.put(ProtocolKey.SUBJECT, CloudEventAttributeValue.newBuilder().setCeString(message.getTopic()).build());
}
attributeValueMap.put(ProtocolKey.DATA_CONTENT_TYPE, CloudEventAttributeValue.newBuilder().setCeString("text/plain").build());
diff --git a/eventmesh-security-plugin/eventmesh-security-auth-http-basic/src/main/java/org/apache/eventmesh/auth/http/basic/config/AuthConfigs.java b/eventmesh-security-plugin/eventmesh-security-auth-http-basic/src/main/java/org/apache/eventmesh/auth/http/basic/config/AuthConfigs.java
index d9441c3a9..f1d56d4e7 100644
--- a/eventmesh-security-plugin/eventmesh-security-auth-http-basic/src/main/java/org/apache/eventmesh/auth/http/basic/config/AuthConfigs.java
+++ b/eventmesh-security-plugin/eventmesh-security-auth-http-basic/src/main/java/org/apache/eventmesh/auth/http/basic/config/AuthConfigs.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.auth.http.basic.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import lombok.Data;
@@ -26,9 +26,9 @@ import lombok.Data;
@Config(prefix = "auth", path = "classPath://auth-http-basic.properties")
public class AuthConfigs {
- @ConfigFiled(field = "username")
+ @ConfigField(field = "username")
private String username;
- @ConfigFiled(field = "password")
+ @ConfigField(field = "password")
public String password;
}
diff --git a/eventmesh-storage-plugin/eventmesh-storage-kafka/src/main/java/org/apache/eventmesh/storage/kafka/config/ClientConfiguration.java b/eventmesh-storage-plugin/eventmesh-storage-kafka/src/main/java/org/apache/eventmesh/storage/kafka/config/ClientConfiguration.java
index 2e92877ec..0eff16ec7 100644
--- a/eventmesh-storage-plugin/eventmesh-storage-kafka/src/main/java/org/apache/eventmesh/storage/kafka/config/ClientConfiguration.java
+++ b/eventmesh-storage-plugin/eventmesh-storage-kafka/src/main/java/org/apache/eventmesh/storage/kafka/config/ClientConfiguration.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.storage.kafka.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -32,75 +32,75 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
public class ClientConfiguration {
- @ConfigFiled(field = "namesrvAddr", notEmpty = true)
+ @ConfigField(field = "namesrvAddr", notEmpty = true)
@Builder.Default
private String namesrvAddr = "";
- @ConfigFiled(field = "username")
+ @ConfigField(field = "username")
@Builder.Default
private String clientUserName = "username";
- @ConfigFiled(field = "password")
+ @ConfigField(field = "password")
@Builder.Default
private String clientPass = "password";
- @ConfigFiled(field = "num.partitions")
+ @ConfigField(field = "num.partitions")
@Builder.Default
private int partitions = 1;
- @ConfigFiled(field = "num.replicationFactors")
+ @ConfigField(field = "num.replicationFactors")
@Builder.Default
private short replicationFactors = 1;
- @ConfigFiled(field = "client.consumeThreadMin")
+ @ConfigField(field = "client.consumeThreadMin")
@Builder.Default
private Integer consumeThreadMin = 2;
- @ConfigFiled(field = "client.consumeThreadMax")
+ @ConfigField(field = "client.consumeThreadMax")
@Builder.Default
private Integer consumeThreadMax = 2;
- @ConfigFiled(field = "client.consumeThreadPoolQueueSize")
+ @ConfigField(field = "client.consumeThreadPoolQueueSize")
@Builder.Default
private Integer consumeQueueSize = 10000;
- @ConfigFiled(field = "client.pullBatchSize")
+ @ConfigField(field = "client.pullBatchSize")
@Builder.Default
private Integer pullBatchSize = 32;
- @ConfigFiled(field = "client.ackwindow")
+ @ConfigField(field = "client.ackwindow")
@Builder.Default
private Integer ackWindow = 1000;
- @ConfigFiled(field = "client.pubwindow")
+ @ConfigField(field = "client.pubwindow")
@Builder.Default
private Integer pubWindow = 100;
- @ConfigFiled(field = "client.comsumeTimeoutInMin")
+ @ConfigField(field = "client.comsumeTimeoutInMin")
@Builder.Default
private long consumeTimeout = 0L;
- @ConfigFiled(field = "client.pollNameServerInterval")
+ @ConfigField(field = "client.pollNameServerInterval")
@Builder.Default
private Integer pollNameServerInterval = 10 * 1000;
- @ConfigFiled(field = "client.heartbeatBrokerInterval")
+ @ConfigField(field = "client.heartbeatBrokerInterval")
@Builder.Default
private Integer heartbeatBrokerInterval = 30 * 1000;
- @ConfigFiled(field = "client.rebalanceInterval")
+ @ConfigField(field = "client.rebalanceInterval")
@Builder.Default
private Integer rebalanceInterval = 20 * 1000;
- @ConfigFiled(field = "cluster")
+ @ConfigField(field = "cluster")
@Builder.Default
private String clusterName = "";
- @ConfigFiled(field = "accessKey")
+ @ConfigField(field = "accessKey")
@Builder.Default
private String accessKey = "";
- @ConfigFiled(field = "secretKey")
+ @ConfigField(field = "secretKey")
@Builder.Default
private String secretKey = "";
}
diff --git a/eventmesh-storage-plugin/eventmesh-storage-pulsar/src/main/java/org/apache/eventmesh/storage/pulsar/config/ClientConfiguration.java b/eventmesh-storage-plugin/eventmesh-storage-pulsar/src/main/java/org/apache/eventmesh/storage/pulsar/config/ClientConfiguration.java
index 855faf80c..f84628cf0 100644
--- a/eventmesh-storage-plugin/eventmesh-storage-pulsar/src/main/java/org/apache/eventmesh/storage/pulsar/config/ClientConfiguration.java
+++ b/eventmesh-storage-plugin/eventmesh-storage-pulsar/src/main/java/org/apache/eventmesh/storage/pulsar/config/ClientConfiguration.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.storage.pulsar.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import lombok.Getter;
import lombok.Setter;
@@ -28,19 +28,19 @@ import lombok.Setter;
@Config(prefix = "eventMesh.server.pulsar", path = "classPath://pulsar-client.properties")
public class ClientConfiguration {
- @ConfigFiled(field = "service")
+ @ConfigField(field = "service")
private String serviceAddr;
- @ConfigFiled(field = "authPlugin")
+ @ConfigField(field = "authPlugin")
private String authPlugin;
- @ConfigFiled(field = "authParams")
+ @ConfigField(field = "authParams")
private String authParams;
/*
* the full format of topic needs a prefix, but the prefix cannot be passed in the url when the topic is carried
*
*/
- @ConfigFiled(field = "topicPrefix")
+ @ConfigField(field = "topicPrefix")
private String topicPrefix;
}
\ No newline at end of file
diff --git a/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/client/RabbitmqClient.java b/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/client/RabbitmqClient.java
index 4e44c77fe..678ba0884 100644
--- a/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/client/RabbitmqClient.java
+++ b/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/client/RabbitmqClient.java
@@ -120,7 +120,7 @@ public class RabbitmqClient {
* @param connection connection
*/
public void closeConnection(Connection connection) {
- if (null != connection) {
+ if (connection != null) {
try {
connection.close();
} catch (Exception ex) {
@@ -135,7 +135,7 @@ public class RabbitmqClient {
* @param channel channel
*/
public void closeChannel(Channel channel) {
- if (null != channel) {
+ if (channel != null) {
try {
channel.close();
} catch (Exception ex) {
diff --git a/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/config/ConfigurationHolder.java b/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/config/ConfigurationHolder.java
index 1bd1f6dc1..890e7d6d0 100644
--- a/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/config/ConfigurationHolder.java
+++ b/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/config/ConfigurationHolder.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.storage.rabbitmq.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import com.rabbitmq.client.BuiltinExchangeType;
@@ -28,39 +28,39 @@ import lombok.Data;
@Config(prefix = "eventMesh.server.rabbitmq", path = "classPath://rabbitmq-client.properties")
public class ConfigurationHolder {
- @ConfigFiled(field = "host")
+ @ConfigField(field = "host")
private String host;
- @ConfigFiled(field = "port")
+ @ConfigField(field = "port")
private int port;
- @ConfigFiled(field = "username")
+ @ConfigField(field = "username")
private String username;
- @ConfigFiled(field = "passwd")
+ @ConfigField(field = "passwd")
private String passwd;
- @ConfigFiled(field = "virtualHost")
+ @ConfigField(field = "virtualHost")
private String virtualHost;
- @ConfigFiled(field = "exchangeType")
+ @ConfigField(field = "exchangeType")
private BuiltinExchangeType exchangeType;
- @ConfigFiled(field = "exchangeName")
+ @ConfigField(field = "exchangeName")
private String exchangeName;
- @ConfigFiled(field = "routingKey")
+ @ConfigField(field = "routingKey")
private String routingKey;
- @ConfigFiled(field = "queueName")
+ @ConfigField(field = "queueName")
private String queueName;
- @ConfigFiled(field = "autoAck")
+ @ConfigField(field = "autoAck")
private boolean autoAck;
- @ConfigFiled(field = "mgmt.port")
+ @ConfigField(field = "mgmt.port")
private int mgmtPort;
- @ConfigFiled(field = "mgmt.protocol")
+ @ConfigField(field = "mgmt.protocol")
private String mgmtProtocol;
}
diff --git a/eventmesh-storage-plugin/eventmesh-storage-redis/src/main/java/org/apache/eventmesh/storage/redis/config/RedisProperties.java b/eventmesh-storage-plugin/eventmesh-storage-redis/src/main/java/org/apache/eventmesh/storage/redis/config/RedisProperties.java
index dd0183739..a478e7a70 100644
--- a/eventmesh-storage-plugin/eventmesh-storage-redis/src/main/java/org/apache/eventmesh/storage/redis/config/RedisProperties.java
+++ b/eventmesh-storage-plugin/eventmesh-storage-redis/src/main/java/org/apache/eventmesh/storage/redis/config/RedisProperties.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.storage.redis.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import java.util.Properties;
@@ -31,31 +31,31 @@ public class RedisProperties {
/**
* The redis server configuration to be used.
*/
- @ConfigFiled(field = "serverType")
+ @ConfigField(field = "serverType")
private ServerType serverType = ServerType.SINGLE;
/**
* The master server name used by Redis Sentinel servers and master change monitoring task.
*/
- @ConfigFiled(field = "serverMasterName")
+ @ConfigField(field = "serverMasterName")
private String serverMasterName = "master";
/**
* The address of the redis server following format -- host1:port1,host2:port2,……
*/
- @ConfigFiled(field = "serverAddress")
+ @ConfigField(field = "serverAddress")
private String serverAddress;
/**
* The password for redis authentication.
*/
- @ConfigFiled(field = "serverPassword")
+ @ConfigField(field = "serverPassword")
private String serverPassword;
/**
* The redisson options, redisson properties prefix is `eventMesh.server.redis.redisson`
*/
- @ConfigFiled(field = "redisson")
+ @ConfigField(field = "redisson")
private Properties redissonProperties;
public enum ServerType {
diff --git a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/config/ClientConfiguration.java b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/config/ClientConfiguration.java
index 04654a6b3..b1748de89 100644
--- a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/config/ClientConfiguration.java
+++ b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/config/ClientConfiguration.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.storage.rocketmq.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -32,67 +32,67 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class ClientConfiguration {
- @ConfigFiled(field = "namesrvAddr", notEmpty = true)
+ @ConfigField(field = "namesrvAddr", notEmpty = true)
@Builder.Default
private String namesrvAddr = "";
- @ConfigFiled(field = "username")
+ @ConfigField(field = "username")
@Builder.Default
private String clientUserName = "username";
- @ConfigFiled(field = "password")
+ @ConfigField(field = "password")
@Builder.Default
private String clientPass = "password";
- @ConfigFiled(field = "client.consumeThreadMin")
+ @ConfigField(field = "client.consumeThreadMin")
@Builder.Default
private Integer consumeThreadMin = 2;
- @ConfigFiled(field = "client.consumeThreadMax")
+ @ConfigField(field = "client.consumeThreadMax")
@Builder.Default
private Integer consumeThreadMax = 2;
- @ConfigFiled(field = "client.consumeThreadPoolQueueSize")
+ @ConfigField(field = "client.consumeThreadPoolQueueSize")
@Builder.Default
private Integer consumeQueueSize = 10000;
- @ConfigFiled(field = "client.pullBatchSize")
+ @ConfigField(field = "client.pullBatchSize")
@Builder.Default
private Integer pullBatchSize = 32;
- @ConfigFiled(field = "client.ackwindow")
+ @ConfigField(field = "client.ackwindow")
@Builder.Default
private Integer ackWindow = 1000;
- @ConfigFiled(field = "client.pubwindow")
+ @ConfigField(field = "client.pubwindow")
@Builder.Default
private Integer pubWindow = 100;
- @ConfigFiled(field = "client.comsumeTimeoutInMin")
+ @ConfigField(field = "client.comsumeTimeoutInMin")
@Builder.Default
private long consumeTimeout = 0L;
- @ConfigFiled(field = "client.pollNameServerInterval")
+ @ConfigField(field = "client.pollNameServerInterval")
@Builder.Default
private Integer pollNameServerInterval = 10 * 1000;
- @ConfigFiled(field = "client.heartbeatBrokerInterval")
+ @ConfigField(field = "client.heartbeatBrokerInterval")
@Builder.Default
private Integer heartbeatBrokerInterval = 30 * 1000;
- @ConfigFiled(field = "client.rebalanceInterval")
+ @ConfigField(field = "client.rebalanceInterval")
@Builder.Default
private Integer rebalanceInterval = 20 * 1000;
- @ConfigFiled(field = "cluster")
+ @ConfigField(field = "cluster")
@Builder.Default
private String clusterName = "";
- @ConfigFiled(field = "accessKey")
+ @ConfigField(field = "accessKey")
@Builder.Default
private String accessKey = "";
- @ConfigFiled(field = "secretKey")
+ @ConfigField(field = "secretKey")
@Builder.Default
private String secretKey = "";
}
diff --git a/eventmesh-trace-plugin/eventmesh-trace-api/src/main/java/org/apache/eventmesh/trace/api/config/ExporterConfiguration.java b/eventmesh-trace-plugin/eventmesh-trace-api/src/main/java/org/apache/eventmesh/trace/api/config/ExporterConfiguration.java
index b59eed443..ab42241e0 100644
--- a/eventmesh-trace-plugin/eventmesh-trace-api/src/main/java/org/apache/eventmesh/trace/api/config/ExporterConfiguration.java
+++ b/eventmesh-trace-plugin/eventmesh-trace-api/src/main/java/org/apache/eventmesh/trace/api/config/ExporterConfiguration.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.trace.api.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import lombok.Data;
@@ -29,15 +29,15 @@ import lombok.Data;
@Config(prefix = "eventmesh.trace", path = "classPath://exporter.properties")
public class ExporterConfiguration {
- @ConfigFiled(field = "max.export.size")
+ @ConfigField(field = "max.export.size")
private int eventMeshTraceMaxExportSize = 512;
- @ConfigFiled(field = "max.queue.size")
+ @ConfigField(field = "max.queue.size")
private int eventMeshTraceMaxQueueSize = 2048;
- @ConfigFiled(field = "export.timeout")
+ @ConfigField(field = "export.timeout")
private int eventMeshTraceExportTimeout = 30;
- @ConfigFiled(field = "export.interval")
+ @ConfigField(field = "export.interval")
private int eventMeshTraceExportInterval = 5;
}
diff --git a/eventmesh-trace-plugin/eventmesh-trace-jaeger/src/main/java/org/apache/eventmesh/trace/jaeger/config/JaegerConfiguration.java b/eventmesh-trace-plugin/eventmesh-trace-jaeger/src/main/java/org/apache/eventmesh/trace/jaeger/config/JaegerConfiguration.java
index 1e60ca665..2284a4f22 100644
--- a/eventmesh-trace-plugin/eventmesh-trace-jaeger/src/main/java/org/apache/eventmesh/trace/jaeger/config/JaegerConfiguration.java
+++ b/eventmesh-trace-plugin/eventmesh-trace-jaeger/src/main/java/org/apache/eventmesh/trace/jaeger/config/JaegerConfiguration.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.trace.jaeger.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import lombok.Data;
@@ -26,9 +26,9 @@ import lombok.Data;
@Config(prefix = "eventmesh.trace.jaeger", path = "classPath://jaeger.properties")
public class JaegerConfiguration {
- @ConfigFiled(field = "ip", notEmpty = true)
+ @ConfigField(field = "ip", notEmpty = true)
private String eventMeshJaegerIp = "localhost";
- @ConfigFiled(field = "port", notEmpty = true)
+ @ConfigField(field = "port", notEmpty = true)
private int eventMeshJaegerPort = 14250;
}
\ No newline at end of file
diff --git a/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/config/PinpointConfiguration.java b/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/config/PinpointConfiguration.java
index 8ffe6655f..dd2941252 100644
--- a/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/config/PinpointConfiguration.java
+++ b/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/config/PinpointConfiguration.java
@@ -19,7 +19,7 @@ package org.apache.eventmesh.trace.pinpoint.config;
import org.apache.eventmesh.common.Constants;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import org.apache.eventmesh.common.exception.JsonException;
import org.apache.eventmesh.common.utils.RandomStringUtils;
@@ -37,16 +37,16 @@ import lombok.Data;
@Config(prefix = "eventmesh.trace.pinpoint", path = "classPath://pinpoint.properties")
public final class PinpointConfiguration {
- @ConfigFiled(field = "agentId", reload = true)
+ @ConfigField(field = "agentId", reload = true)
private String agentId;
- @ConfigFiled(field = "agentName", reload = true)
+ @ConfigField(field = "agentName", reload = true)
private String agentName;
- @ConfigFiled(field = "applicationName", findEnv = true, notNull = true)
+ @ConfigField(field = "applicationName", findEnv = true, notNull = true)
private String applicationName;
- @ConfigFiled(field = "", reload = true)
+ @ConfigField(field = "", reload = true)
private Properties grpcTransportProperties;
private GrpcTransportConfig grpcTransportConfig;
diff --git a/eventmesh-trace-plugin/eventmesh-trace-zipkin/src/main/java/org/apache/eventmesh/trace/zipkin/config/ZipkinConfiguration.java b/eventmesh-trace-plugin/eventmesh-trace-zipkin/src/main/java/org/apache/eventmesh/trace/zipkin/config/ZipkinConfiguration.java
index fcc2ac0de..ed2403687 100644
--- a/eventmesh-trace-plugin/eventmesh-trace-zipkin/src/main/java/org/apache/eventmesh/trace/zipkin/config/ZipkinConfiguration.java
+++ b/eventmesh-trace-plugin/eventmesh-trace-zipkin/src/main/java/org/apache/eventmesh/trace/zipkin/config/ZipkinConfiguration.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.trace.zipkin.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import lombok.Data;
@@ -30,9 +30,9 @@ import lombok.Data;
@Config(prefix = "eventmesh.trace.zipkin", path = "classPath://zipkin.properties")
public class ZipkinConfiguration {
- @ConfigFiled(field = "ip", notNull = true)
+ @ConfigField(field = "ip", notNull = true)
private String eventMeshZipkinIP = "localhost";
- @ConfigFiled(field = "port")
+ @ConfigField(field = "port")
private int eventMeshZipkinPort = 9411;
}
diff --git a/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/config/AdminConfiguration.java b/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/config/AdminConfiguration.java
index 93327d54b..1bbba42fe 100644
--- a/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/config/AdminConfiguration.java
+++ b/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/config/AdminConfiguration.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.webhook.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import java.util.Properties;
@@ -28,13 +28,13 @@ import lombok.Data;
@Config(prefix = "eventMesh.webHook")
public class AdminConfiguration {
- @ConfigFiled(field = "admin.start")
+ @ConfigField(field = "admin.start")
private boolean adminStart = false;
- @ConfigFiled(field = "operationMode")
+ @ConfigField(field = "operationMode")
private String operationMode;
- @ConfigFiled(field = "", reload = true)
+ @ConfigField(field = "", reload = true)
private Properties operationProperties;
public void reload() {
diff --git a/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/config/ReceiveConfiguration.java b/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/config/ReceiveConfiguration.java
index 3d3004c5c..fef6cee41 100644
--- a/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/config/ReceiveConfiguration.java
+++ b/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/config/ReceiveConfiguration.java
@@ -18,7 +18,7 @@
package org.apache.eventmesh.webhook.receive.config;
import org.apache.eventmesh.common.config.Config;
-import org.apache.eventmesh.common.config.ConfigFiled;
+import org.apache.eventmesh.common.config.ConfigField;
import java.util.Properties;
@@ -28,16 +28,16 @@ import lombok.Data;
@Config(prefix = "eventMesh.webHook")
public class ReceiveConfiguration {
- @ConfigFiled(field = "producer.storage")
+ @ConfigField(field = "producer.storage")
private String storagePluginType;
- @ConfigFiled(field = "operationMode")
+ @ConfigField(field = "operationMode")
private String operationMode;
- @ConfigFiled(field = "fileMode.filePath")
+ @ConfigField(field = "fileMode.filePath")
private String filePath;
- @ConfigFiled(field = "", reload = true)
+ @ConfigField(field = "", reload = true)
private Properties operationProperties;
public void reload() {
diff --git a/settings.gradle b/settings.gradle
index ec1eb4c5e..32d2c2e26 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -126,6 +126,7 @@ include 'eventmesh-webhook:eventmesh-webhook-receive'
include 'eventmesh-retry'
include 'eventmesh-retry:eventmesh-retry-api'
include 'eventmesh-retry:eventmesh-retry-rocketmq'
+include 'eventmesh-runtime-v2'
include 'eventmesh-admin-server'
include 'eventmesh-registry'
include 'eventmesh-registry:eventmesh-registry-api'
diff --git a/tools/dependency-check/known-dependencies.txt b/tools/dependency-check/known-dependencies.txt
index ccf34353e..b30ca5d5e 100644
--- a/tools/dependency-check/known-dependencies.txt
+++ b/tools/dependency-check/known-dependencies.txt
@@ -78,7 +78,8 @@ endpoints-spi-2.20.29.jar
error_prone_annotations-2.9.0.jar
eventstream-1.0.1.jar
failureaccess-1.0.1.jar
-fastjson-1.2.83.jar
+fastjson-1.2.69_noneautotype.jar
+fastjson2-2.0.48.jar
gateway-dingtalk-1.0.2.jar
google-auth-library-credentials-0.22.2.jar
grpc-api-1.43.2.jar
diff --git a/tools/third-party-licenses/LICENSE b/tools/third-party-licenses/LICENSE
index de086f488..20c482188 100644
--- a/tools/third-party-licenses/LICENSE
+++ b/tools/third-party-licenses/LICENSE
@@ -251,7 +251,7 @@ The text of each license is also included at licenses/LICENSE-[project].txt.
error_prone_annotations 2.7.1: https://github.com/google/error-prone, Apache 2.0
failureaccess 1.0.1: https://github.com/google/guava, Apache 2.0
listenablefuture 9999.0-empty-to-avoid-conflict-with-guava: https://github.com/google/guava, Apache 2.0
- fastjson 1.2.83: https://github.com/alibaba/fastjson, Apache 2.0
+ fastjson2 2.0.48: https://github.com/alibaba/fastjson2, Apache 2.0
guava 31.0.1-jre: https://github.com/google/guava, Apache 2.0
gateway-dingtalk 1.0.2: https://github.com/aliyun/alibabacloud-gateway, Apache 2.0
guice 4.2.2: https://github.com/google/guice, Apache 2.0
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@eventmesh.apache.org
For additional commands, e-mail: commits-help@eventmesh.apache.org