diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-package.yml
similarity index 95%
rename from .github/workflows/maven-publish.yml
rename to .github/workflows/maven-package.yml
index fd183e2..37eb4dc 100644
--- a/.github/workflows/maven-publish.yml
+++ b/.github/workflows/maven-package.yml
@@ -1,7 +1,11 @@
 # This workflow will build a package using Maven and then publish it to GitHub packages when a release is created
 # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path
 name: Redis runner example
-on: push
+on:
+  pull_request:
+    types: [ opened, reopened, synchronize ]
+    release:
+      types: [ created ]
 
 jobs:
   # Label of the runner job
diff --git a/dist/pom.xml b/dist/pom.xml
new file mode 100644
index 0000000..8990d41
--- /dev/null
+++ b/dist/pom.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>rocketmq-eventbridge</artifactId>
+        <groupId>org.apache.rocketmq</groupId>
+        <version>1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>rocketmq-eventbridge-dist</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+    <dependencies>
+        <!-- Project Version -->
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-eventbridge-adapter-persistence</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-eventbridge-adapter-rpc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-eventbridge-adapter-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-eventbridge-adapter-runtime</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-eventbridge-adapter-storage</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-eventbridge-domain</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-eventbridge-infrastructure</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-eventbridge-start</artifactId>
+        </dependency>
+        <!-- Framework -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-webflux</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!--Tools -->
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+                <includes>
+                    <include>logback.xml</include>
+                    <include>application.properties</include>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                    <include>**/*.tld</include>
+                </includes>
+                <filtering>false</filtering>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.2.10.RELEASE</version>
+                <executions>
+                    <execution>
+                        <id>repackage</id>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                        <configuration>
+                            <mainClass>org.apache.rocketmq.eventbridge.StartMain</mainClass>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>local</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <configuration>
+                            <appendAssemblyId>false</appendAssemblyId>
+                            <descriptors>
+                                <descriptor>src/main/assembly/assembly.xml</descriptor>
+                            </descriptors>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>assembly</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+
+    </profiles>
+</project>
\ No newline at end of file
diff --git a/dist/src/main/assembly/assembly.xml b/dist/src/main/assembly/assembly.xml
new file mode 100644
index 0000000..26b0cc6
--- /dev/null
+++ b/dist/src/main/assembly/assembly.xml
@@ -0,0 +1,35 @@
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
+    <id>assembly</id>
+    <formats>
+        <format>dir</format>
+    </formats>
+
+    <includeBaseDirectory>true</includeBaseDirectory>
+    <baseDirectory>rocketmq-eventbridge</baseDirectory>
+    <dependencySets>
+        <dependencySet>
+            <outputDirectory>/</outputDirectory>
+            <includes>
+                <include>org.apache.rocketmq:rocketmq-eventbridge-dist:jar</include>
+            </includes>
+            <outputFileNameMapping>rocketmq-eventbridge.jar</outputFileNameMapping>
+        </dependencySet>
+    </dependencySets>
+
+    <fileSets>
+        <fileSet>
+            <directory>src/main/bin</directory>
+            <outputDirectory>bin/</outputDirectory>
+            <fileMode>0755</fileMode>
+            <lineEnding>unix</lineEnding>
+            <filtered>true</filtered>
+        </fileSet>
+        <fileSet>
+            <directory>src/main/resources</directory>
+            <outputDirectory>config/</outputDirectory>
+            <fileMode>0755</fileMode>
+        </fileSet>
+    </fileSets>
+</assembly>
\ No newline at end of file
diff --git a/bin/eventbridge.sh b/dist/src/main/bin/eventbridge.sh
similarity index 100%
rename from bin/eventbridge.sh
rename to dist/src/main/bin/eventbridge.sh
diff --git a/bin/runserver.sh b/dist/src/main/bin/runserver.sh
similarity index 97%
rename from bin/runserver.sh
rename to dist/src/main/bin/runserver.sh
index de9541c..dfa7221 100755
--- a/bin/runserver.sh
+++ b/dist/src/main/bin/runserver.sh
@@ -87,7 +87,6 @@
 #JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
 JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
 JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
-
-JAVA_OPT="${JAVA_OPT} -Dlogback.configurationFile=${BASE_DIR}/conf/logback.xml"
+JAVA_OPT="${JAVA_OPT} -Dlogback.configurationFile=${BASE_DIR}/config/logback.xml -Dspring.config.location=${BASE_DIR}/config/application.properties"
 
 $JAVA ${JAVA_OPT} $@
\ No newline at end of file
diff --git a/dist/src/main/resources/application.properties b/dist/src/main/resources/application.properties
new file mode 100644
index 0000000..5911b30
--- /dev/null
+++ b/dist/src/main/resources/application.properties
@@ -0,0 +1,41 @@
+# 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.
+
+server.port=7001
+management.server.port=7002
+management.endpoints.web.base-path=/
+spring.profiles.active=local
+## database
+#spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/eventBridge?useUnicode=true&characterEncoding=utf8&useSSL=false
+#spring.datasource.hikari.driver-class-name=com.mysql.jdbc.Driver
+#spring.datasource.hikari.username=xxxxx
+#spring.datasource.hikari.password=xxxxx
+mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
+## flyway
+## rocketmq
+rocketmq.namesrvAddr=localhost:9876
+
+rocketmq.cluster.name=DefaultCluster
+## runtime
+runtime.config.mode=DB
+runtime.storage.mode=ROCKETMQ
+rumtime.name=eventbridge-runtimer
+runtime.pluginpath=~/eventbridge/plugin
+
+
+## log
+app.name=rocketmqeventbridge
+log.level=INFO
+log.path=~/logs
\ No newline at end of file
diff --git a/dist/src/main/resources/logback.xml b/dist/src/main/resources/logback.xml
new file mode 100644
index 0000000..c86f339
--- /dev/null
+++ b/dist/src/main/resources/logback.xml
@@ -0,0 +1,63 @@
+<!-- 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. -->
+
+<configuration>
+    <jmxConfigurator/>
+
+    <springProperty scope="context" name="app.name" source="app.name"/>
+    <springProperty scope="context" name="log.path" source="log.path"/>
+    <springProperty scope="context" name="log.level" source="log.level"/>
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <target>System.out</target>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd
+                HH:mm:ss.SSS}@@%X{traceId:-}@@%X{parentId:-}@@%X{spanId:-}@@[%thread]@@%level@@%logger{36}[%line]@@%msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <appender name="PROJECT" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/${app.name}/${app.name}.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/${app.name}/${app.name}.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>10GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd
+                HH:mm:ss.SSS}@@%X{traceId:-}@@%X{parentId:-}@@%X{spanId:-}@@[%thread]@@%level@@%logger{36}[%line]@@%msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <appender name="ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/${app.name}/access.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/${app.name}/access.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>3GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}@@%X{traceId:-}@@%X{parentId:-}@@%X{spanId:-}@@[%thread]@@%level@@%logger{36}[%line]@@%msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <logger name="accessLog" level="${log.level}" additivity="false">
+        <appender-ref ref="ACCESS"/>
+        <appender-ref ref="STDOUT"/>
+    </logger>
+
+    <root level="${log.level}">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="PROJECT"/>
+    </root>
+</configuration>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index dd83d24..b60d031 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,6 +106,7 @@
         <module>common</module>
         <module>infrastructure</module>
         <module>test</module>
+        <module>dist</module>
     </modules>
 
     <dependencyManagement>
diff --git a/start/pom.xml b/start/pom.xml
index a7e115d..b07569a 100644
--- a/start/pom.xml
+++ b/start/pom.xml
@@ -91,8 +91,7 @@
         </dependency>
     </dependencies>
 
-   <!-- <build>
-        <finalName>rocketmq-eventbridge</finalName>
+    <build>
         <resources>
             <resource>
                 <directory>src/main/resources</directory>
@@ -114,22 +113,15 @@
             </resource>
         </resources>
         <plugins>
+            <!-- java编译插件 -->
             <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>2.2.10.RELEASE</version>
-                <executions>
-                    <execution>
-                        <id>repackage</id>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                        <configuration>
-                            <mainClass>org.apache.rocketmq.eventbridge.StartMain</mainClass>
-                        </configuration>
-                    </execution>
-                </executions>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>3.3.0</version>
+                <configuration>
+                    <finalName>rocketmq-eventbridge-start-1.0.0</finalName>
+                </configuration>
             </plugin>
         </plugins>
-    </build>-->
+    </build>
 </project>
\ No newline at end of file
diff --git a/test/rocketmq-eventbridge-e2etest/pom.xml b/test/rocketmq-eventbridge-e2etest/pom.xml
index 8ded330..ac82308 100644
--- a/test/rocketmq-eventbridge-e2etest/pom.xml
+++ b/test/rocketmq-eventbridge-e2etest/pom.xml
@@ -27,6 +27,7 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.13.2</version>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
@@ -36,7 +37,6 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
             <exclusions>
                 <exclusion>
                     <groupId>org.ow2.asm</groupId>
diff --git a/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/controller/ApplicationTagControllerTest.java b/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/controller/ApplicationTagControllerTest.java
index 0f5446e..bac500b 100644
--- a/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/controller/ApplicationTagControllerTest.java
+++ b/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/controller/ApplicationTagControllerTest.java
@@ -1,5 +1,7 @@
 package org.apache.rocketmq.eventbridge.e2etest.controller;
 
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
 import org.apache.rocketmq.eventbridge.Main;
 import org.apache.rocketmq.eventbridge.e2etest.BaseTest;
 import org.apache.rocketmq.eventbridge.e2etest.util.Utils;
@@ -11,21 +13,45 @@
 import org.springframework.http.ResponseEntity;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
+@Slf4j
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Main.class)
 public class ApplicationTagControllerTest extends BaseTest {
 
     @Test
-    public void testGetAllApplicationTags() {
-        String url = String.format("%s/bus/createEventBus", baseUrl);
-        Map<String, String> maps = new HashMap<>();
-        maps.put("eventBusName", "demo-bus");
-        maps.put("description", "a demo bus.");
-        ResponseEntity<Void> response = Utils.request(template, url, HttpMethod.POST, maps, Void.class);
+    public void testGetAllApplicationTags() throws Exception {
+
+        String url = String.format("%s/putEvents", baseUrl);
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json; charset=UTF-8");
+        headers.put("ce-specversion","1.0");
+        headers.put("ce-type", "com.github.pull_request.opened");
+        headers.put("ce-source", "https://github.com/cloudevents/spec/pull");
+        headers.put("ce-subject", "demo");
+        headers.put("ce-id", "1234-1234-1234");
+        headers.put("ce-datacontenttype", "application/json");
+        headers.put("ce-time","2018-04-05T17:31:00Z");
+        headers.put("ce-eventbusname", "demo-bus");
+
+        ResponseEntity<Void> response = Utils.request(template, url, HttpMethod.POST, "A test recrod.", Void.class, headers);
         Assert.assertTrue(response.getStatusCode().is2xxSuccessful());
+
+        File file = new File(System.getProperty("user.home") + "/demo");
+        String data = null;
+        long current = System.currentTimeMillis();
+        while((System.currentTimeMillis() - current)/1000 <300 ) {
+            data = FileUtils.readFileToString(file, "UTF-8");
+            if (data != null) {
+                break;
+            }
+            Thread.sleep(1000);
+        }
+
+        Assert.assertEquals("A test recrod.\n", data);
     }
 
 
diff --git a/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/util/Utils.java b/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/util/Utils.java
index cc29fe7..6627ffe 100644
--- a/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/util/Utils.java
+++ b/test/rocketmq-eventbridge-e2etest/src/test/java/org/apache/rocketmq/eventbridge/e2etest/util/Utils.java
@@ -15,10 +15,9 @@
 
 public class Utils {
 
-	public static <T> ResponseEntity<T> request(TestRestTemplate template, String url, HttpMethod method, Object body, Class<T> clazz) {
-		HttpHeaders headers = devHeaders();
-
-		HttpEntity entity = new HttpEntity(body, headers);
+	public static <T> ResponseEntity<T> request(TestRestTemplate template, String url, HttpMethod method, Object body, Class<T> clazz, Map<String, String> headers) {
+		HttpHeaders httpHeaders = devHeaders(headers);
+		HttpEntity entity = new HttpEntity(body, httpHeaders);
 		return template.exchange(url, method, entity, clazz);
 	}
 
@@ -26,37 +25,25 @@
 		return template.getForEntity(url, clazz ,args);
 	}
 
-	public static <T> ResponseEntity<T> requestAsAdmin(TestRestTemplate template, String url, HttpMethod method, Object body, Class<T> clazz) {
-		HttpHeaders headers = new HttpHeaders();
-		headers.add("X-AI-USER", "admin");
-
-		HttpEntity entity = new HttpEntity(body, headers);
-		return template.exchange(url, method, entity, clazz);
-	}
-
-	public static <T> ResponseEntity<T> request(TestRestTemplate template, String url, String fileKey, String file, Class<T> clazz, Object... urlVariables) throws IOException {
-		HttpHeaders headers = devHeaders();
-		headers.setContentType(MediaType.MULTIPART_FORM_DATA);
+	public static <T> ResponseEntity<T> requestByPost(TestRestTemplate template, String url, String fileKey, String file, Class<T> clazz, Map<String, String> headers, Object... urlVariables) throws IOException {
+		HttpHeaders httpHeaders = devHeaders(headers);
+		httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
 
 		MultiValueMap<String, Object> multipartRequest = new LinkedMultiValueMap<>();
 		multipartRequest.add(fileKey, new ClassPathResource(file));
-		HttpEntity<MultiValueMap<String, Object>> entity = new HttpEntity<>(multipartRequest, headers);
+		HttpEntity<MultiValueMap<String, Object>> entity = new HttpEntity<>(multipartRequest, httpHeaders);
 
 		return template.exchange(url, HttpMethod.POST, entity, clazz, urlVariables);
 	}
 
-	private static HttpHeaders devHeaders() {
-		HttpHeaders headers = new HttpHeaders();
-		headers.add("X-AI-USER", "developer");
-
-		return headers;
+	private static HttpHeaders devHeaders(Map<String, String> headers) {
+		HttpHeaders httpHeaders = new HttpHeaders();
+		if (headers != null && !headers.isEmpty()) {
+			for (Map.Entry<String, String> entry : headers.entrySet()) {
+				httpHeaders.add(entry.getKey(), entry.getValue());
+			}
+		}
+		return httpHeaders;
 	}
 
-	public static <T> ResponseEntity<T> requestAsWanyaWu(TestRestTemplate template, String url, HttpMethod method, Object body, Class<T> clazz) {
-		HttpHeaders headers = new HttpHeaders();
-		headers.add("X-AI-USER", "vanya.wu");
-
-		HttpEntity entity = new HttpEntity(body, headers);
-		return template.exchange(url, method, entity, clazz);
-	}
 }
