Skip to content

Commit

Permalink
Merge remote-tracking branch 'eventmesh/main' into config
Browse files Browse the repository at this point in the history
# Conflicts:
#	eventmesh-dashboard-console/src/main/resources/eventmesh-dashboard.sql
  • Loading branch information
“zzxxiansheng committed Apr 29, 2024
2 parents 5bb9975 + 0c6ba95 commit 429c1ee
Show file tree
Hide file tree
Showing 162 changed files with 4,869 additions and 773 deletions.
57 changes: 54 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
matrix:
os: [ ubuntu-latest ]
java: [ 8, 11 ]
language: ['java']
language: [ 'java' ]
runs-on: ${{ matrix.os }}

services:
Expand All @@ -48,17 +48,68 @@ jobs:
- 3306:3306
# Set health checks to wait until MySQL has started
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
redis:
image: redis
ports:
- 6379:6379
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Download middlewares
run: |
wget https://github.com/alibaba/nacos/releases/download/2.3.2/nacos-server-2.3.2.zip
unzip nacos-server-2.3.2.zip
wget https://dist.apache.org/repos/dist/release/rocketmq/4.9.8/rocketmq-all-4.9.8-bin-release.zip
unzip rocketmq-all-4.9.8-bin-release.zip
git clone https://github.com/apache/eventmesh.git
- name: Setup Gradle
uses: gradle/gradle-build-action@v2

- name: Set up JDK 11
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: 11

- name: Build EventMesh GenerateGrammarSource
working-directory: eventmesh
run: ./gradlew clean generateGrammarSource --parallel --daemon

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: ${{ matrix.java }}
cache: maven

- name: Build with Maven
run: mvn -B package --file pom.xml
- name: Build EventMesh Runtime
working-directory: eventmesh
run: ./gradlew clean dist -x spotlessJava -x generateGrammarSource --parallel --daemon && ./gradlew installPlugin

- name: Apply configuration file
run: cp .github/workflows/config/eventmesh.properties eventmesh/dist/conf/eventmesh.properties

- name: Set up Meta
working-directory: nacos
run: nohup bash bin/startup.sh -m standalone &

- name: Set up Event Store
working-directory: rocketmq-all-4.9.8-bin-release
run: |
nohup sh bin/mqnamesrv &
sleep 5
nohup sh bin/mqbroker -n localhost:9876 &
- name: Set up EventMesh Runtime
working-directory: eventmesh/dist
run: bash bin/start.sh

- name: Build Dashboard
run: ./mvnw -B package -DskipTests --file pom.xml

- name: Run Unit Tests
run: ./mvnw -B test --file pom.xml
140 changes: 140 additions & 0 deletions .github/workflows/config/eventmesh.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
#
# 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.
#
########################## EventMesh Runtime Environment ##########################
eventMesh.server.idc=DEFAULT
eventMesh.server.env=PRD
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.readerIdleSeconds=120
eventMesh.server.tcp.writerIdleSeconds=120
eventMesh.server.tcp.allIdleSeconds=120
eventMesh.server.tcp.clientMaxNum=10000
# client isolation time if the message send failure
eventMesh.server.tcp.pushFailIsolateTimeInMills=30000
# rebalance internal
eventMesh.server.tcp.RebalanceIntervalInMills=30000
# session expire time about client
eventMesh.server.session.expiredInMills=60000
# flow control, include the global level and session level
eventMesh.server.tcp.msgReqnumPerSecond=15000
eventMesh.server.http.msgReqnumPerSecond=15000
eventMesh.server.session.upstreamBufferSize=20

# for single event publish, maximum size allowed per event
eventMesh.server.maxEventSize=1000
# for batch event publish, maximum number of events allowed in one batch
eventMesh.server.maxEventBatchSize=10

# thread number about global scheduler
eventMesh.server.global.scheduler=5
eventMesh.server.tcp.taskHandleExecutorPoolSize=8
# retry
eventMesh.server.retry.async.pushRetryTimes=3
eventMesh.server.retry.sync.pushRetryTimes=3
eventMesh.server.retry.async.pushRetryDelayInMills=500
eventMesh.server.retry.sync.pushRetryDelayInMills=500
eventMesh.server.retry.pushRetryQueueSize=10000
eventMesh.server.retry.plugin.type=default

# sleep interval between closing client of different group in server graceful shutdown
eventMesh.server.gracefulShutdown.sleepIntervalInMills=1000
eventMesh.server.rebalanceRedirect.sleepIntervalInMills=200

# ip address blacklist
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

########################## EventMesh Plugin Configuration ##########################
# storage plugin
eventMesh.storage.plugin.type=rocketmq

# security plugin
eventMesh.server.security.enabled=false
eventMesh.security.plugin.type=security
eventMesh.security.validation.type.token=false
eventMesh.security.publickey=

# metaStorage plugin
eventMesh.metaStorage.plugin.enabled=true
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=
#eventMesh.metaStorage.nacos.secretKey=
#eventMesh.metaStorage.nacos.clusterName=
#eventMesh.metaStorage.nacos.namespace=
# The default value is half of CPU's num
#eventMesh.metaStorage.nacos.namingPollingThreadCount=5

# metaStorage plugin: zookeeper
#eventMesh.metaStorage.zookeeper.scheme=
#eventMesh.metaStorage.zookeeper.auth=
#eventMesh.metaStorage.zookeeper.connectionTimeoutMs=
#eventMesh.metaStorage.zookeeper.sessionTimeoutMs=

# Fully qualified name of org.apache.curator.RetryPolicy implementation
#eventMesh.metaStorage.zookeeper.retryPolicy.class=

# Constructor arguments for different org.apache.curator.RetryPolicy implementations
#eventMesh.metaStorage.zookeeper.retryPolicy.baseSleepTimeMs=
#eventMesh.metaStorage.zookeeper.retryPolicy.maxRetries=
#eventMesh.metaStorage.zookeeper.retryPolicy.maxSleepTimeMs=
#eventMesh.metaStorage.zookeeper.retryPolicy.retryIntervalMs=
#eventMesh.metaStorage.zookeeper.retryPolicy.nTimes=
#eventMesh.metaStorage.zookeeper.retryPolicy.sleepMsBetweenRetries=

# The TLS configuration of metaStorage plugin: consul
# keyStoreInstanceType's value can refer to com.ecwid.consul.transport.TLSConfig.KeyStoreInstanceType
#eventMesh.metaStorage.consul.tls.keyStoreInstanceType=
#eventMesh.metaStorage.consul.tls.certificatePath=
#eventMesh.metaStorage.consul.tls.certificatePassword=
#eventMesh.metaStorage.consul.tls.keyStorePath=
#eventMesh.metaStorage.consul.tls.keyStorePassword=

# metrics plugin, if you have multiple plugin, you can use ',' to split
eventMesh.metrics.plugin=prometheus

# trace plugin
eventMesh.server.trace.enabled=false
eventMesh.trace.plugin=zipkin

# webhook
# Start webhook admin service
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
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)
## 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.
eventMesh.webHook.producer.storage=standalone
12 changes: 6 additions & 6 deletions deployment/auto-deploy-eventmesh-dashboard.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@
REPO_PATH=~/service/eventmesh-dashboard

# SpringBoot process ID file path
PID_LOG=~/service/eventmesh-dashboard/deployment/eventmesh-dashboard-pid.log
PID_LOG=$REPO_PATH/deployment/eventmesh-dashboard-pid.log

# Automatic deployment shell script log file path
AUTO_DEPLOY_LOG=~/service/eventmesh-dashboard/deployment/auto-deploy-eventmesh-dashboard.log
AUTO_DEPLOY_LOG=$REPO_PATH/deployment/auto-deploy-eventmesh-dashboard.log

# Jar file path
JAR_FILE_PATH=~/service/eventmesh-dashboard/eventmesh-dashboard-console/target/eventmesh-dashboard-console-0.0.1-SNAPSHOT.jar
JAR_FILE_PATH=$REPO_PATH/eventmesh-dashboard-console/target/eventmesh-dashboard-console-0.0.1-SNAPSHOT.jar

# Load environment variables from external file
ENV_FILE=~/service/eventmesh-dashboard/deployment/.env
ENV_FILE=$REPO_PATH/deployment/.env
source $ENV_FILE

# Function to check if a process with given PID is running
Expand Down Expand Up @@ -67,7 +67,7 @@ if [ $LOCAL != $REMOTE ]; then
fi

# Compile and package the Jar file
./mvnw clean package -DskipTests -Dcheckstyle.skip=true
$REPO_PATH/mvnw clean package -DskipTests -Dcheckstyle.skip=true

# Start the springboot application and record the process id to pid.log file
nohup java -DDB_ADDRESS=$DB_ADDRESS -DDB_USERNAME=$DB_USERNAME -DDB_PASSWORD=$DB_PASSWORD -jar $JAR_FILE_PATH > /dev/null 2>&1 &
Expand All @@ -83,7 +83,7 @@ else

if [ ! -s $PID_LOG ] || ! is_process_running $(cat $PID_LOG); then
# If the pid.log file does not exist or the process is not running, compile and package the Jar file
./mvnw clean package -DskipTests -Dcheckstyle.skip=true
$REPO_PATH/mvnw clean package -DskipTests -Dcheckstyle.skip=true

# Start the springboot application and record the process id to pid.log file
nohup java -DDB_ADDRESS=$DB_ADDRESS -DDB_USERNAME=$DB_USERNAME -DDB_PASSWORD=$DB_PASSWORD -jar $JAR_FILE_PATH > /dev/null 2>&1 &
Expand Down
4 changes: 2 additions & 2 deletions eventmesh-dashboard-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.13.0</version>
<version>3.14.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.40</version>
<version>2.0.49</version>
</dependency>
</dependencies>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,9 @@ public class AclMetadata extends MetadataConfig {
private String resourceType;
private String resourceName;
private Integer patternType;

@Override
public String getUnique() {
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,9 @@ public class ClientMetadata extends MetadataConfig {
* protocol used to connect to runtime.
*/
private String protocol;

@Override
public String getUnique() {
return host + ":" + port;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,9 @@ public class ClusterMetadata extends MetadataConfig {
private StoreType storeType;

private String description;

@Override
public String getUnique() {
return clusterName + "/" + registryAddress;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,9 @@ public class ConfigMetadata extends MetadataConfig {
private Integer instanceType;

private Long instanceId;

@Override
public String getUnique() {
return configKey;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,9 @@ public class ConnectionMetadata extends MetadataConfig {
private Long groupId;

private String description;

@Override
public String getUnique() {
return getClusterId() + "/" + sourceId + "/" + sinkId + "/" + topic;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,9 @@ public class ConnectorMetadata extends MetadataConfig {
* @see KubernetesPodStatus
*/
private Integer podState;

@Override
public String getUnique() {
return host + ":" + port;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,9 @@ public class GroupMetadata extends MetadataConfig {
private Integer type;

private String state;

@Override
public String getUnique() {
return name;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,29 @@

package org.apache.eventmesh.dashboard.common.model.metadata;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

/**
* This class is used to represent a piece of metadata, which can be used in create, update or delete operations to metadata service(eventmesh meta
* center, eventmesh runtime cluster)<p> follow method should be called in init block which is used to indicate the type of metadata:
* {@code this.setServiceTypeEnums(MetadataServiceTypeEnums.RUNTIME);}
*/
@Data
public class MetadataConfig {
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public abstract class MetadataConfig {

//eventmesh registry url
private String registryAddress;
//cluster id in database
private Long clusterId;

/**
* @return A string that is unique to the source, usually a url
*/
public abstract String getUnique();
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,12 @@
import org.apache.eventmesh.dashboard.common.enums.RecordStatus;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

@Data
@SuperBuilder
@NoArgsConstructor
public class RegistryMetadata extends MetadataConfig {


Expand Down Expand Up @@ -49,4 +53,9 @@ public class RegistryMetadata extends MetadataConfig {
* @see RecordStatus
*/
private Integer status;

@Override
public String getUnique() {
return host + ":" + port;
}
}
Loading

0 comments on commit 429c1ee

Please sign in to comment.