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 2021/06/29 06:41:38 UTC

[incubator-eventmesh] branch master updated: merg branch 1.2.0 release to master (#403)

This is an automated email from the ASF dual-hosted git repository.

mikexue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-eventmesh.git


The following commit(s) were added to refs/heads/master by this push:
     new e4cff57  merg branch 1.2.0 release to master (#403)
e4cff57 is described below

commit e4cff57da85093ca7a917f7edd86fa434000d5dc
Author: mike_xwm <mi...@126.com>
AuthorDate: Tue Jun 29 14:41:27 2021 +0800

    merg branch 1.2.0 release to master (#403)
    
    * Update gitee-mirror.yml
    
    * [issue #176]Support Spi for extended implementation to accommodate a variety of MQ
    
    * update moudles
    
    * event mesh project architecture adjustment
    
    * update rocketmq plugin impl
    
    * update rocketmq plugin impl remove unused code
    
    * fix configurationWraper miss load
    
    * update RocketMQConsumerImpl and PushConsumerImpl supply get defaultPushConsumer
    
    * update RocketMQProducerImpl and MQProducerWrapper supply get defaultMQProducer
    
    * 1.add module eventmesh-connector-api
    2.change runtime and connector dependency
    
    * modify:add defibus plugin
    
    * 1.support rocketmq-connector plugin
    2.modify eventmesh-runtime imported classes from eventmesh-common
    
    * 1.modify MQConsumerWrapper import ProxyConstants
    
    * 1.support rocketmq-connector plugin
    2.modify eventmesh-runtime imported classes from eventmesh-common
    
    * 1.support rocketmq-connector plugin
    2.modify eventmesh-runtime imported classes from eventmesh-common
    
    * gradle config modify
    
    * eventmesh-api modify
    
    * eventmesh-connector-defibus modify:rename package, plugin impl
    
    * eventmesh-runtime modify,delete rocketmq dependency
    
    * 1.move rocketmq dependency from eventmesh-runtime to eventmesh-connector-rocketmq
    2.modify http processor
    
    * 1.move rocketmq dependency from eventmesh-runtime to eventmesh-connector-rocketmq
    2.modify http processor
    3.modify http subscribe
    
    * 1.update connector-rocketmq version
    2.change the directory structure
    3.add starter module
    
    * 1.change starter version
    
    * 1.update root module version
    
    * 1.eventmesh-api modify methodName
    2.eventmesh-connector modify relative method impl
    3.attribute store place modify in msgConvert
    
    * remove dependency of eventmesh-common
    
    * move defibus-client config from eventmesh-runtime to defibus plugin
    
    * move rocketmq-client config from eventmesh-runtime to rocketmq plugin
    
    * 1.fix manual ack problem
    2.adjust runtime config file
    
    * 1.modify test tcp sdk demo
    
    * 1.update eventmesh-rocketmq access_driver url
    2.add ProxyConsumer
    
    * fix rr reply bug,rollback delete config file in eventmesh-common
    
    * 1.support http sub
    
    * 1.modify http sub
    
    * 1.support http sub and SubscribeProcessor
    
    * 1.support http sub
    2.support http subscription manage
    3.support http heartBeat manage
    
    * 1.update eventmesh-runtime start.sh
    
    * 1.modify HeartBeatProcessor error retcode
    
    * 1.modify .md files under the instructions
    2.modify eventmesh structure pictures
    3.add protocol.md
    
    * 1.modify docs\cn README.md
    
    * 1.modify eventmesh README.md
    2.modify eventmesh structure pictures
    
    * 1.modify eventmesh README.md update protocol and roadmap
    
    * Bump ini from 1.3.5 to 1.3.8
    
    Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8.
    - [Release notes](https://github.com/isaacs/ini/releases)
    - [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8)
    
    Signed-off-by: dependabot[bot] <su...@github.com>
    
    * 1.modify protocol.zh-CN.md
    2.modify README.md, README.zh-CN.md
    
    * 1.modify structure picture
    2.fix Constants http time out value
    
    * 1.modify roadMap
    
    * 1.bug fix:fix consumer missing bizNo
    
    * 1.bug fix: fix rocketmq consumer missing bizNo
    
    * [ISSUE #211]Rocketmq-connector throw nullpointer exception
    
    * [ISSUE #212]For multiple listening instances, only the last started instance can receive messages
    
    * [ISSUE #212]For multiple listening instances, only the last started instance can receive messages
    
    * [ISSUE #216]EventMesh ProxyTcpRetryer throws NumberFormatException
    
    * [ISSUE #201]Could we support running eventmesh in docker
    
    * [ISSUE #222]When onChange is NEW, eventMesh occurred NullPointException
    
    * Format the style in the contributor guide.
    
    Format the style in the contributor guide.
    
    * [ISSUE #226]eventMesh-rocketmq-connector tcp pub throw operation time out exception
    
    * 1.update eventmesh-define.png
    2.update eventmesh-runtime-quickstart.md and supply project-structure.png
    
    * Bump prismjs from 1.22.0 to 1.23.0
    
    Bumps [prismjs](https://github.com/PrismJS/prism) from 1.22.0 to 1.23.0.
    - [Release notes](https://github.com/PrismJS/prism/releases)
    - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/PrismJS/prism/compare/v1.22.0...v1.23.0)
    
    Signed-off-by: dependabot[bot] <su...@github.com>
    
    * update eventmesh-runtime.png
    
    * 1.update .md files
    2.update eventmesh-panels.png project-structure.png
    
    * update .md files
    
    * update README.md
    
    * update .md files
    
    * update README.md
    
    * update RoadMap
    
    * Update README.md
    
    * Update README.md
    
    * Update README.md
    
    * Update README.md
    
    * Update README.md
    
    * [ISSUE #237]Remove eventmesh-defibus-connector and normalize code and file naming
    
    * add english protocol document of eventmesh-runtime
    
    * update protocol document of eventmesh-runtime
    
    * update README.md
    
    * Bump elliptic from 6.5.3 to 6.5.4
    
    Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
    - [Release notes](https://github.com/indutny/elliptic/releases)
    - [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)
    
    Signed-off-by: dependabot[bot] <su...@github.com>
    
    * [ISSUE #219]Supply detail information or read.me for eventmesh running in docker
    
    * update eventmesh-runtime-quickstart.zh-CN.md
    
    * [ISSUE #219]Supply detail information or read.me for eventmesh running in docker
    
    * update quickstart.md
    
    * upgrade gradle to 6.8.3
    
    * Update README.md
    
    * update eventmesh-runtime.png and quickstart.zh-CN
    
    * [ISSUE #256]Upgrade Openmessaging-api to 2.2.1-pubsub version
    
    * 1.update Constants
    2.remove unused files BytesMessageImpl.java and SendResultImpl.java
    
    * Bump y18n from 4.0.0 to 4.0.1
    
    Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.1.
    - [Release notes](https://github.com/yargs/y18n/releases)
    - [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/yargs/y18n/commits)
    
    Signed-off-by: dependabot[bot] <su...@github.com>
    
    * supply not supportedOperation for consumerImpl
    
    * [ISSUE #261]remove module eventmesh-registry
    
    * [ISSUE #265]rename wemq and access to eventmesh
    
    * [ISSUE #265]rename proxy field to eventmesh
    
    * merge conflict
    
    * remove warn
    
    * [ISSUE #265] Specification of code structure and file naming
    
    * remove eventmesh-registry module
    
    * enabled http/tcp monitor logs
    
    * Update README.md
    
    * Changed com.webank to org.apache
    
    Changed 'eventmesh-connector-api' code package name to apache.
    
    * issue #277:refactor eventmesh-common package with org.apache
    
    * issue #277:rename package with org.apache
    
    * Refactor 'eventmesh-connector-rocketmq' package name to org.apache
    
    * Update README.zh-CN.md
    
    * [ISSUE #282]Refactor 'eventmesh-starter' package name to org.apache
    
    * Update codeStyle.xml
    
    * Refactor 'eventmesh-test' package name to org.apache #283
    
    * Refactor 'eventmesh-test' package name to org.apache #283
    
    * Refactor 'eventmesh-test' package name to org.apache #283
    
    * Refactor 'eventmesh-test' package name to org.apache #283
    
    * Refactor 'eventmesh-test' package name to org.apache #283
    
    * refactor runtime module package com.webank to org.apache
    
    * refactor(eventmesh-sdk-java):rename to org.apache(#281)
    
    * [ISSUE #281]refactor(eventmesh-sdk-java):rename to org.apache
    
    * add licenses of apache for runtime module
    
    * add NOTICE
    
    * bugfix for event-mesh-test module
    
    * change package name to org.apache
    
    * format README.md
    
    * change package name to org.apache
    
    * fix ISSUE #296:add licenses in each source file under the eventmesh-sdk-java
    
    * [ISSUE #294]add licenses in file under eventmesh-connector-rocketmq module
    
    * [ISSUE #293]Lack of licenses in each source file under the eventmesh-connector-api module
    
    * [ISSUE #298]Lack of licenses in each source file under the eventmesh-test module
    
    * [ISSUE #297]Lack of licenses in each source file under the eventmesh-starter module
    
    * Create .asf.yaml
    
    * Update .asf.yaml
    
    * Update .asf.yaml (#316)
    
    * Update README.md
    
    * Update .asf.yaml
    
    * bugfix build.gradle tar task (#318)
    
    Co-authored-by: jonyang(杨军) <jo...@webank.com>
    
    * [ISSUE #322] Rename package name "com.webank.eventmesh" to "org.apache.eventmesh" (#319)
    
    * rename org.apache.runtime to com.webank.runtime
    
    * rename com.webank.eventmesh to org.apache.eventmesh
    
    * fix(docs): change the travis location
    
    * Create DISCLAIMER-WIP
    
    * Delete CNAME
    
    * Delete _config.yml
    
    * Delete package.json
    
    * Add files via upload
    
    * Add files via upload
    
    * Delete eventmesh-multi-runtime.jpg
    
    * Update README.md
    
    * Update eventmesh-runtime-quickstart.md
    
    * Update README.zh-CN.md
    
    * Update eventmesh-runtime-quickstart.zh-CN.md
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository (#326)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * upgrade gradle to 7.0 and fix test bug. (#327)
    
    * bugfix build.gradle tar task
    
    * merge
    
    * upgrade to gradle 7.0
    
    * bugfix gradle task spotbugs
    
    * bugfix eventmesh-connector-rocketmq testImplementation
    
    * upgrade to gradle7.0
    
    * refactor runtime module test and spotbugs error
    
    * bugfix sign task
    
    Co-authored-by: jonyang(杨军) <jo...@webank.com>
    Co-authored-by: jonyangx <jo...@gmail.com>
    
    * remove unused files
    
    Signed-off-by: qqeasonchen <qq...@gmail.com>
    
    * prepare to release 1.2.0
    
    Signed-off-by: qqeasonchen <qq...@gmail.com>
    
    * update 1.2.0-release branch code (#399)
    
    * update build.gradle and gradle.properties for publish to maven repository (#330)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * Update README.md
    
    * Update README.zh-CN.md
    
    * update quickstart md files for gradle version (#332)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * remove dead docs
    
    Signed-off-by: qqeasonchen <qq...@gmail.com>
    
    * [ISSUE #329]Missing Log4j dependency (#336)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * [ISSUE #329]Missing Log4j dependency
    
    * [ISSUE #331] Fix dead links in docs (#334)
    
    fixed #331
    
    * Doc modification #328 (#335)
    
    change vm params
    
    * Update README.md
    
    * [Issue #337] Fix Http Test Subscriber startup issue by moving the Thread.sleep into the child thread (#338)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook (#343)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Address code review comment for Subscriber Demo App
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * [ISSUE #348] Setup automated workflows for greetings (#347)
    
    * Setup automated workflows for greetings
    
    * Remove '@apache/eventmesh-committers'
    
    * Add LGTM Badges ISSUE#353 (#354)
    
    LGTM is a variant analysis platform that automatically checks code for real CVEs and vulnerabilities. Learn more at https://lgtm.com/help/lgtm/about-lgtm .
    
    Here are some alerts in our project reported by LGTM: https://lgtm.com/projects/g/apache/incubator-eventmesh/alerts/?mode=list
    
    I'd like to add LGTM badges in the README.md, it makes easier for people who want to get alerts and then contribute to EventMesh.
    
    * [ISSUE #355] Setup Github workflows for CodeQL scans (#356)
    
    * Setup CodeQL scans
    
    * disable autorun
    
    * add a step for setting up JDK
    
    * add codeql
    
    * fix step Build
    
    * fix strategy
    
    * add events: schedule & workflow_dispatch
    
    * [Issue #344] Fixing racing condition issue in SubscribeProcessor and UnSubscribeProcessor (#345)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #344] Fixing racing condition issue in SubscribeProcessor and UnSubscribeProcessor
    
    * [Issue #344] Fix import statements
    
    * [Issue #337] Address code review comment for Subscriber Demo App
    
    * [Issue #344] Enhance client registration logic in SubscribeProcessor and UnsubscriberProcessor
    
    * [Issue #344] Minor code clean up in SubscribeProcessor and UnsubscriberProcessor
    
    * [Issue #344] Fix NullPointerException in ConsumerManager occurs during subscribe/unsunscribe iteration testing
    
    * [Issue #344] Fix bugs in subscribe/unsunscribe code path
    
    * [Issue #344] use client.pid instead of client.ip for client comparasion in UnSubscribeProcessor
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * update eventmesh-runtime.png (#358)
    
    * update eventmesh-runtime.png
    
    * [Issue #333] Support multiple load balance strategy in sdk (#342)
    
    * Support multiple load balance strategy in sdk #333
    
    * Fix ut
    
    * add log
    
    * update eventmesh-panels.png (#362)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * [ISSUE #329]Missing Log4j dependency
    
    * update eventmesh-runtime.png
    
    * update eventmesh-panels.png
    
    * update eventmesh-panels.png (#363)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * [ISSUE #329]Missing Log4j dependency
    
    * update eventmesh-runtime.png
    
    * update eventmesh-panels.png
    
    * Migrate CI to Github Actions and enable coverage report (#365)
    
    * add: requirements for lightweight EventMesh SDK with CloudEvents (#370)
    
    This commit only includes a brief introduction and requirements.
    Design details can be followed up in a later commit.
    
    Signed-off-by: Yuzhou Mao <my...@umich.edu>
    
    * Add files via upload
    
    * Update README.md
    
    * [Issue #368] Fix Racing condition and memory leak issue in EventMesh SDK LiteConsumer and LiteProducer (#369)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Address code review comment for Subscriber Demo App
    
    * [Issue #368] Fix Racing condition and memory leak issue in EventMesh SDK LiteConsumer and LiteProducer
    
    * [Issue #368] fix build issue
    
    * [Issue #368] use try with resource statement for HttpClient
    
    * [Issue #368] fix TLS1.1 and use TLS1.2 in HttpClient
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * [ISSUE #350]optimize flow control in downstreaming msg (#352)
    
    * modify:optimize flow control in downstreaming msg
    
    * modify:optimize stategy of selecting session in downstream msg
    
    * modify:optimize msg downstream,msg store in session
    
    * modify:fix bug:not a @Sharable handler
    
    * [ISSUE #380] Remove gitee-mirror.yml from Github workflows (#381)
    
    * Update README.md
    
    * [ISSUE #310] add github action for check license (#313)
    
    * add github action for check license
    
    * fix syntax and name ci for Check license
    
    * fix github action branch typo
    
    * [ISSUE #310] Enable Github Actions for license check and fix license headers (#377)
    
    * add github action for check license
    
    * fix syntax and name ci for Check license
    
    * fix github action branch typo
    
    * enable github actions for license check
    
    * add necessary headers
    
    * update badges
    
    Co-authored-by: Lan Liang <gc...@gmail.com>
    
    * [Issue #382] Fix java.lang.NumberFormatException when parsing Long (#383)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Address code review comment for Subscriber Demo App
    
    * [Issue #368] Fix Racing condition and memory leak issue in EventMesh SDK LiteConsumer and LiteProducer
    
    * [Issue #368] fix build issue
    
    * [Issue #368] use try with resource statement for HttpClient
    
    * [Issue #368] fix TLS1.1 and use TLS1.2 in HttpClient
    
    * [Issue #382] Fix java.lang.NumberFormatException when parsing Long
    
    * [Issue #382] Fix java.lang.NumberFormatException when parsing Integer
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * [ISSUE #378] downstream broadcast msg asynchronously  (#379)
    
    * modify:optimize flow control in downstreaming msg
    
    * modify:optimize stategy of selecting session in downstream msg
    
    * modify:optimize msg downstream,msg store in session
    
    * modify:fix bug:not a @Sharable handler
    
    * modify:downstream broadcast msg asynchronously
    
    closed #378
    
    * [ISSUE #359] Split handler from controller (#359) (#360)
    
    * [ISSUE #359] Split handler from controller (#359)
    
    * add license header
    
    * add ut
    
    * [ISSUE #384] RedirectClientByIpPortHandlerTest.java doesn't have the Apache license header (#385)
    
    close #384
    
    * Update README.md
    
    * Update README.zh-CN.md
    
    * Update README.zh-CN.md
    
    * Update README.zh-CN.md
    
    * [Issue #386] fixing ConsumerGroup Queue Consumer Offset not synced up issue (#387)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Address code review comment for Subscriber Demo App
    
    * [Issue #386] fixing ConsumerGroup Queuen Consumer Offset not synced up issue
    
    * [Issue #386] adding license header to new file
    
    * [Issue #386] Fix license header missing issue
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * [ISSUE #366 ] remove custom-format topic concept (#388)
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * [ISSUE #366] remove custom concept [dcn&&region] (#390)
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    close #366
    
    * [ISSUE #391] Optimize interface design in eventmesh-connector-api (#392)
    
    * modify:optimize flow control in downstreaming msg
    
    * modify:optimize stategy of selecting session in downstream msg
    
    * modify:optimize msg downstream,msg store in session
    
    * modify:fix bug:not a @Sharable handler
    
    * modify:downstream broadcast msg asynchronously
    
    * modify:remove unneccessary interface in eventmesh-connector-api
    
    * modify:fix conflict
    
    * modify:add license in EventMeshAction
    close #391
    
    * miss group name set for userAgent (#395)
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * bugfix : miss group set
    
    * bugfix : miss group set
    
    * [ISSUE #393]:perf topic name in test file (#394)
    
    close #393
    
    * support unsubscribe topics while delconsumer in http mode (#396)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * [ISSUE #329]Missing Log4j dependency
    
    * update eventmesh-runtime.png
    
    * support unsubscribe topics while delconsumer in http mode
    
    * [ISSUE #397]Remove subscription session failed error (#398)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * [ISSUE #329]Missing Log4j dependency
    
    * update eventmesh-runtime.png
    
    * support unsubscribe topics while delconsumer in http mode
    
    * [ISSUE #397]Remove subscription session failed error
    
    * [ISSUE #397]Remove subscription session failed error
    close #397
    
    * update 1.2.0-release branch code
    
    Co-authored-by: Eason Chen <qq...@gmail.com>
    Co-authored-by: Steve Yurong Su <st...@outlook.com>
    Co-authored-by: ruanwenjun <86...@qq.com>
    Co-authored-by: jinrongluo <ka...@gmail.com>
    Co-authored-by: j00441484 <ji...@huawei.com>
    Co-authored-by: Yuzhou Mao <yu...@gmail.com>
    Co-authored-by: lrhkobe <34...@users.noreply.github.com>
    Co-authored-by: Steve Yurong Su <ro...@apache.org>
    Co-authored-by: Lan <li...@163.com>
    Co-authored-by: Lan Liang <gc...@gmail.com>
    Co-authored-by: nanoxiong <xi...@163.com>
    Co-authored-by: keranbingaa <39...@qq.com>
    
    * update 1.2.0-release branch code (#400)
    
    * update build.gradle and gradle.properties for publish to maven repository (#330)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * Update README.md
    
    * Update README.zh-CN.md
    
    * update quickstart md files for gradle version (#332)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * remove dead docs
    
    Signed-off-by: qqeasonchen <qq...@gmail.com>
    
    * [ISSUE #329]Missing Log4j dependency (#336)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * [ISSUE #329]Missing Log4j dependency
    
    * [ISSUE #331] Fix dead links in docs (#334)
    
    fixed #331
    
    * Doc modification #328 (#335)
    
    change vm params
    
    * Update README.md
    
    * [Issue #337] Fix Http Test Subscriber startup issue by moving the Thread.sleep into the child thread (#338)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook (#343)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Address code review comment for Subscriber Demo App
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * [ISSUE #348] Setup automated workflows for greetings (#347)
    
    * Setup automated workflows for greetings
    
    * Remove '@apache/eventmesh-committers'
    
    * Add LGTM Badges ISSUE#353 (#354)
    
    LGTM is a variant analysis platform that automatically checks code for real CVEs and vulnerabilities. Learn more at https://lgtm.com/help/lgtm/about-lgtm .
    
    Here are some alerts in our project reported by LGTM: https://lgtm.com/projects/g/apache/incubator-eventmesh/alerts/?mode=list
    
    I'd like to add LGTM badges in the README.md, it makes easier for people who want to get alerts and then contribute to EventMesh.
    
    * [ISSUE #355] Setup Github workflows for CodeQL scans (#356)
    
    * Setup CodeQL scans
    
    * disable autorun
    
    * add a step for setting up JDK
    
    * add codeql
    
    * fix step Build
    
    * fix strategy
    
    * add events: schedule & workflow_dispatch
    
    * [Issue #344] Fixing racing condition issue in SubscribeProcessor and UnSubscribeProcessor (#345)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #344] Fixing racing condition issue in SubscribeProcessor and UnSubscribeProcessor
    
    * [Issue #344] Fix import statements
    
    * [Issue #337] Address code review comment for Subscriber Demo App
    
    * [Issue #344] Enhance client registration logic in SubscribeProcessor and UnsubscriberProcessor
    
    * [Issue #344] Minor code clean up in SubscribeProcessor and UnsubscriberProcessor
    
    * [Issue #344] Fix NullPointerException in ConsumerManager occurs during subscribe/unsunscribe iteration testing
    
    * [Issue #344] Fix bugs in subscribe/unsunscribe code path
    
    * [Issue #344] use client.pid instead of client.ip for client comparasion in UnSubscribeProcessor
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * update eventmesh-runtime.png (#358)
    
    * update eventmesh-runtime.png
    
    * [Issue #333] Support multiple load balance strategy in sdk (#342)
    
    * Support multiple load balance strategy in sdk #333
    
    * Fix ut
    
    * add log
    
    * update eventmesh-panels.png (#362)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * [ISSUE #329]Missing Log4j dependency
    
    * update eventmesh-runtime.png
    
    * update eventmesh-panels.png
    
    * update eventmesh-panels.png (#363)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * [ISSUE #329]Missing Log4j dependency
    
    * update eventmesh-runtime.png
    
    * update eventmesh-panels.png
    
    * Migrate CI to Github Actions and enable coverage report (#365)
    
    * add: requirements for lightweight EventMesh SDK with CloudEvents (#370)
    
    This commit only includes a brief introduction and requirements.
    Design details can be followed up in a later commit.
    
    Signed-off-by: Yuzhou Mao <my...@umich.edu>
    
    * Add files via upload
    
    * Update README.md
    
    * [Issue #368] Fix Racing condition and memory leak issue in EventMesh SDK LiteConsumer and LiteProducer (#369)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Address code review comment for Subscriber Demo App
    
    * [Issue #368] Fix Racing condition and memory leak issue in EventMesh SDK LiteConsumer and LiteProducer
    
    * [Issue #368] fix build issue
    
    * [Issue #368] use try with resource statement for HttpClient
    
    * [Issue #368] fix TLS1.1 and use TLS1.2 in HttpClient
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * [ISSUE #350]optimize flow control in downstreaming msg (#352)
    
    * modify:optimize flow control in downstreaming msg
    
    * modify:optimize stategy of selecting session in downstream msg
    
    * modify:optimize msg downstream,msg store in session
    
    * modify:fix bug:not a @Sharable handler
    
    * [ISSUE #380] Remove gitee-mirror.yml from Github workflows (#381)
    
    * Update README.md
    
    * [ISSUE #310] add github action for check license (#313)
    
    * add github action for check license
    
    * fix syntax and name ci for Check license
    
    * fix github action branch typo
    
    * [ISSUE #310] Enable Github Actions for license check and fix license headers (#377)
    
    * add github action for check license
    
    * fix syntax and name ci for Check license
    
    * fix github action branch typo
    
    * enable github actions for license check
    
    * add necessary headers
    
    * update badges
    
    Co-authored-by: Lan Liang <gc...@gmail.com>
    
    * [Issue #382] Fix java.lang.NumberFormatException when parsing Long (#383)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Address code review comment for Subscriber Demo App
    
    * [Issue #368] Fix Racing condition and memory leak issue in EventMesh SDK LiteConsumer and LiteProducer
    
    * [Issue #368] fix build issue
    
    * [Issue #368] use try with resource statement for HttpClient
    
    * [Issue #368] fix TLS1.1 and use TLS1.2 in HttpClient
    
    * [Issue #382] Fix java.lang.NumberFormatException when parsing Long
    
    * [Issue #382] Fix java.lang.NumberFormatException when parsing Integer
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * [ISSUE #378] downstream broadcast msg asynchronously  (#379)
    
    * modify:optimize flow control in downstreaming msg
    
    * modify:optimize stategy of selecting session in downstream msg
    
    * modify:optimize msg downstream,msg store in session
    
    * modify:fix bug:not a @Sharable handler
    
    * modify:downstream broadcast msg asynchronously
    
    closed #378
    
    * [ISSUE #359] Split handler from controller (#359) (#360)
    
    * [ISSUE #359] Split handler from controller (#359)
    
    * add license header
    
    * add ut
    
    * [ISSUE #384] RedirectClientByIpPortHandlerTest.java doesn't have the Apache license header (#385)
    
    close #384
    
    * Update README.md
    
    * Update README.zh-CN.md
    
    * Update README.zh-CN.md
    
    * Update README.zh-CN.md
    
    * [Issue #386] fixing ConsumerGroup Queue Consumer Offset not synced up issue (#387)
    
    * [Issue #337] Fix HttpSubscriber startup issue
    
    * [Issue #337] test commit
    
    * [Issue #337] revert test commit
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Enhance Http Demo Subscriber by using ExecutorService, CountDownLatch and PreDestroy hook
    
    * [Issue #337] Address code review comment for Subscriber Demo App
    
    * [Issue #386] fixing ConsumerGroup Queuen Consumer Offset not synced up issue
    
    * [Issue #386] adding license header to new file
    
    * [Issue #386] Fix license header missing issue
    
    Co-authored-by: j00441484 <ji...@huawei.com>
    
    * [ISSUE #366 ] remove custom-format topic concept (#388)
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * remove custom-format topic concept
    
    * [ISSUE #366] remove custom concept [dcn&&region] (#390)
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    close #366
    
    * [ISSUE #391] Optimize interface design in eventmesh-connector-api (#392)
    
    * modify:optimize flow control in downstreaming msg
    
    * modify:optimize stategy of selecting session in downstream msg
    
    * modify:optimize msg downstream,msg store in session
    
    * modify:fix bug:not a @Sharable handler
    
    * modify:downstream broadcast msg asynchronously
    
    * modify:remove unneccessary interface in eventmesh-connector-api
    
    * modify:fix conflict
    
    * modify:add license in EventMeshAction
    close #391
    
    * miss group name set for userAgent (#395)
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * remove custom concept{dcn}
    
    * bugfix : miss group set
    
    * bugfix : miss group set
    
    * [ISSUE #393]:perf topic name in test file (#394)
    
    close #393
    
    * support unsubscribe topics while delconsumer in http mode (#396)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * [ISSUE #329]Missing Log4j dependency
    
    * update eventmesh-runtime.png
    
    * support unsubscribe topics while delconsumer in http mode
    
    * [ISSUE #397]Remove subscription session failed error (#398)
    
    * [ISSUE #325]Update gradle configuration for publishing package to maven repository
    
    * update build.gradle
    
    * update build.gradle and gradle.properties
    
    * update build.gradle and gradle.properties for publish to maven repository
    
    * * update gradle version for instructions
    * fix: dist task exception
    
    * [ISSUE #329]Missing Log4j dependency
    
    * update eventmesh-runtime.png
    
    * support unsubscribe topics while delconsumer in http mode
    
    * [ISSUE #397]Remove subscription session failed error
    
    * [ISSUE #397]Remove subscription session failed error
    close #397
    
    * update 1.2.0-release branch code
    
    * update 1.2.0-release branch code
    
    Co-authored-by: Eason Chen <qq...@gmail.com>
    Co-authored-by: Steve Yurong Su <st...@outlook.com>
    Co-authored-by: ruanwenjun <86...@qq.com>
    Co-authored-by: jinrongluo <ka...@gmail.com>
    Co-authored-by: j00441484 <ji...@huawei.com>
    Co-authored-by: Yuzhou Mao <yu...@gmail.com>
    Co-authored-by: lrhkobe <34...@users.noreply.github.com>
    Co-authored-by: Steve Yurong Su <ro...@apache.org>
    Co-authored-by: Lan <li...@163.com>
    Co-authored-by: Lan Liang <gc...@gmail.com>
    Co-authored-by: nanoxiong <xi...@163.com>
    Co-authored-by: keranbingaa <39...@qq.com>
    
    Co-authored-by: nanoxiong <Xi...@163.com>
    Co-authored-by: qqeasonchen <qq...@gmail.com>
    Co-authored-by: lrhkobe <li...@163.com>
    Co-authored-by: lrhkobe <34...@users.noreply.github.com>
    Co-authored-by: dependabot[bot] <49...@users.noreply.github.com>
    Co-authored-by: MajorHe1 <53...@users.noreply.github.com>
    Co-authored-by: keranbingaa <39...@qq.com>
    Co-authored-by: wqliang <wq...@users.noreply.github.com>
    Co-authored-by: dinglei <li...@163.com>
    Co-authored-by: jonyang(杨军) <jo...@webank.com>
    Co-authored-by: wqliang <wq...@gmail.com>
    Co-authored-by: MajorHe1 <he...@gmail.com>
    Co-authored-by: Heng Du <du...@apache.org>
    Co-authored-by: Udesh Liyanaarachchi <>
    Co-authored-by: sunxi <su...@163.com>
    Co-authored-by: sanchen <sa...@chenyiliu.com>
    Co-authored-by: surilli(李慧敏) <su...@webank.com>
    Co-authored-by: Lan Liang <gc...@gmail.com>
    Co-authored-by: zhangxiaopengmm <xi...@163.com>
    Co-authored-by: chenyi19851209 <40...@qq.com>
    Co-authored-by: yangjun <ya...@gmail.com>
    Co-authored-by: Steve Yurong Su <st...@outlook.com>
    Co-authored-by: von gosling <vo...@apache.org>
    Co-authored-by: jonyangx <jo...@gmail.com>
    Co-authored-by: ruanwenjun <86...@qq.com>
    Co-authored-by: jinrongluo <ka...@gmail.com>
    Co-authored-by: j00441484 <ji...@huawei.com>
    Co-authored-by: Yuzhou Mao <yu...@gmail.com>
    Co-authored-by: Steve Yurong Su <ro...@apache.org>
    Co-authored-by: Lan <li...@163.com>
---
 .asf.yaml                                          |   45 +
 .coveralls.yml                                     |    1 -
 .github/PULL_REQUEST_TEMPLATE.md                   |    1 +
 .github/workflows/ci.yml                           |   84 +
 .github/workflows/gitee-mirror.yml                 |   60 -
 .github/workflows/greetings.yml                    |   72 +
 .licenserc.yaml                                    |   41 +
 .travis.yml                                        |   15 -
 CNAME                                              |    1 -
 CONTRIBUTING.md                                    |   42 +-
 CONTRIBUTING.zh-CN.md                              |   49 +-
 DISCLAIMER-WIP                                     |   19 +
 NOTICE                                             |    5 +
 README.md                                          |  108 +-
 README.zh-CN.md                                    |  100 +-
 _config.yml                                        |    1 -
 build.gradle                                       |  351 +-
 docker/centos7-jdk8/Dockerfile                     |   31 +
 docker/eventmesh-rocketmq/Dockerfile               |   35 +
 docs/.vuepress/config.js                           |  159 +-
 docs/README.md                                     |   68 +-
 docs/_config.yml                                   |   21 +-
 docs/cn/README.md                                  |   66 +-
 docs/cn/features/0-introduction.md                 |   49 -
 docs/cn/features/1-request-response-call.md        |   34 -
 docs/cn/features/10-flow-control.md                |    0
 docs/cn/features/2-dark-launch.md                  |   24 -
 docs/cn/features/3-circuit-break-mechanism.md      |   25 -
 docs/cn/features/4-invoke-service-nearby.md        |   29 -
 docs/cn/features/5-multi-active.md                 |   18 -
 docs/cn/features/6-dynamic-adjust-queue.md         |   35 -
 docs/cn/features/7-isolation-mechanism.md          |   23 -
 docs/cn/features/8-fault-tolerant.md               |   50 -
 docs/cn/features/9-publish-type.md                 |   35 -
 docs/cn/features/https.zh-CN.md                    |    9 +-
 .../eventmesh-emesher-quickstart.zh-CN.md          |   32 -
 .../eventmesh-runtime-protocol.zh-CN.md            |  260 +
 .../eventmesh-runtime-quickstart.zh-CN.md          |  268 +
 .../eventmesh-sdk-java-quickstart.zh-CN.md         |   98 +-
 .../eventmesh-store-quickstart.zh-CN.md            |   23 +-
 docs/cn/instructions/quickstart.zh-CN.md           |   24 +-
 docs/en/README.md                                  |   69 +-
 docs/en/features/architecture.md                   |    0
 .../features/eventmesh-cloudevents-sdk-binding.md  |   55 +
 docs/en/features/https.md                          |    8 +-
 docs/en/features/request-response-call.md          |    0
 .../instructions/eventmesh-emesher-quickstart.md   |   33 -
 docs/en/instructions/eventmesh-runtime-protocol.md |  261 +
 .../instructions/eventmesh-runtime-quickstart.md   |  267 +
 .../instructions/eventmesh-sdk-java-quickstart.md  |  101 +-
 docs/en/instructions/eventmesh-store-quickstart.md |   19 +-
 docs/en/instructions/quickstart.md                 |    8 +-
 docs/eventmesh.md                                  |   31 +-
 docs/images/docker/docker-exec.png                 |  Bin 0 -> 30711 bytes
 docs/images/docker/docker-image.png                |  Bin 0 -> 5253 bytes
 docs/images/docker/docker-logs.png                 |  Bin 0 -> 14657 bytes
 docs/images/docker/docker-ps.png                   |  Bin 0 -> 21410 bytes
 docs/images/eventmesh-define.png                   |  Bin 19431 -> 742863 bytes
 docs/images/eventmesh-multi-runtime.png            |  Bin 0 -> 77806 bytes
 docs/images/eventmesh-panels.png                   |  Bin 0 -> 920415 bytes
 docs/images/eventmesh-runtime.png                  |  Bin 0 -> 1726098 bytes
 docs/images/eventmesh-test-structure.png           |  Bin 0 -> 21818 bytes
 docs/images/logo1.png                              |  Bin 0 -> 28980 bytes
 docs/images/logo2.png                              |  Bin 0 -> 48761 bytes
 docs/images/project-structure.png                  |  Bin 0 -> 63401 bytes
 docs/images/protocol/eventmesh-async-msg.png       |  Bin 0 -> 184046 bytes
 docs/images/protocol/eventmesh-broadcast-msg.png   |  Bin 0 -> 190316 bytes
 docs/images/protocol/eventmesh-rr-msg.png          |  Bin 0 -> 190932 bytes
 docs/images/protocol/eventmesh-tcp-dataFlow.png    |  Bin 0 -> 52135 bytes
 docs/images/protocol/eventmesh-tcp-dataFlow_EN.png |  Bin 0 -> 5282 bytes
 eventmesh-common/build.gradle                      |   82 +-
 eventmesh-common/gradle.properties                 |    9 +-
 .../http/body/client/UnSubscribeResponseBody.java  |   21 -
 .../common/protocol/http/common/ProxyRetCode.java  |   64 -
 .../header/client/HeartbeatResponseHeader.java     |  139 -
 .../http/header/client/RegResponseHeader.java      |  147 -
 .../http/header/client/UnRegResponseHeader.java    |  140 -
 .../header/message/ReplyMessageResponseHeader.java |  146 -
 .../message/SendMessageBatchResponseHeader.java    |  146 -
 .../message/SendMessageBatchV2ResponseHeader.java  |  145 -
 .../header/message/SendMessageResponseHeader.java  |  146 -
 .../common/protocol/tcp/ProxyClientInfo.java       |  111 -
 .../apache}/eventmesh/common/Constants.java        |   30 +-
 .../eventmesh/common/EventMeshException.java}      |   16 +-
 .../apache}/eventmesh/common/IPUtil.java           |   11 +-
 .../apache}/eventmesh/common/LiteMessage.java      |    6 +-
 .../eventmesh/common/ThreadPoolFactory.java        |    8 +-
 .../apache}/eventmesh/common/ThreadUtil.java       |    7 +-
 .../eventmesh/common/command/HttpCommand.java      |   23 +-
 .../common/config/CommonConfiguration.java}        |  161 +-
 .../common/config}/ConfigurationWraper.java        |   16 +-
 .../common/loadbalance/LoadBalanceSelector.java    |   31 +-
 .../common/loadbalance/LoadBalanceType.java        |   50 +
 .../loadbalance/RandomLoadBalanceSelector.java     |   56 +
 .../eventmesh/common/loadbalance/Weight.java       |   70 +
 .../WeightRoundRobinLoadBalanceSelector.java       |   72 +
 .../eventmesh/common/protocol/SubcriptionType.java |   31 +-
 .../common/protocol/SubscriptionItem.java}         |   55 +-
 .../common/protocol/SubscriptionMode.java          |   32 +-
 .../common/protocol/http/body/BaseRequestBody.java |    2 +-
 .../protocol/http/body/BaseResponseBody.java       |    6 +-
 .../eventmesh/common/protocol/http/body/Body.java  |   31 +-
 .../http/body/client/HeartbeatRequestBody.java     |   32 +-
 .../http/body/client/HeartbeatResponseBody.java    |   12 +-
 .../protocol/http/body/client/RegRequestBody.java  |   22 +-
 .../protocol/http/body/client/RegResponseBody.java |   12 +-
 .../http/body/client/SubscribeRequestBody.java     |   94 +
 .../http/body/client/SubscribeResponseBody.java}   |   19 +-
 .../http/body/client/UnRegRequestBody.java         |   13 +-
 .../http/body/client/UnRegResponseBody.java        |   16 +-
 .../http/body/client/UnSubscribeRequestBody.java}  |   63 +-
 .../http/body/client/UnSubscribeResponseBody.java} |   20 +-
 .../http/body/message/PushMessageRequestBody.java  |   15 +-
 .../http/body/message/PushMessageResponseBody.java |   12 +-
 .../http/body/message/ReplyMessageRequestBody.java |   29 +-
 .../body/message/ReplyMessageResponseBody.java     |   12 +-
 .../body/message/SendMessageBatchRequestBody.java  |   29 +-
 .../body/message/SendMessageBatchResponseBody.java |   12 +-
 .../message/SendMessageBatchV2RequestBody.java     |   22 +-
 .../message/SendMessageBatchV2ResponseBody.java    |   12 +-
 .../http/body/message/SendMessageRequestBody.java  |   29 +-
 .../http/body/message/SendMessageResponseBody.java |   12 +-
 .../common/protocol/http/common/ClientRetCode.java |    4 +-
 .../common/protocol/http/common/ClientType.java    |    6 +-
 .../protocol/http/common/EventMeshRetCode.java     |   67 +
 .../common/protocol/http/common/ProtocolKey.java   |   20 +-
 .../protocol/http/common/ProtocolVersion.java      |    6 +-
 .../common/protocol/http/common/RequestCode.java   |    2 +-
 .../protocol/http/header/BaseRequestHeader.java    |    8 +-
 .../protocol/http/header/BaseResponseHeader.java   |    8 +-
 .../common/protocol/http/header/Header.java        |   31 +-
 .../http/header/client/HeartbeatRequestHeader.java |   46 +-
 .../header/client/HeartbeatResponseHeader.java     |  113 +
 .../http/header/client/RegRequestHeader.java       |   42 +-
 .../http/header/client/RegResponseHeader.java      |  118 +
 .../header/client/SubscribeRequestHeader.java}     |   50 +-
 .../header/client/SubscribeResponseHeader.java     |  113 +
 .../http/header/client/UnRegRequestHeader.java     |   44 +-
 .../http/header/client/UnRegResponseHeader.java    |  113 +
 .../header/client/UnSubscribeRequestHeader.java}   |   50 +-
 .../header/client/UnSubscribeResponseHeader.java   |  111 +
 .../header/message/PushMessageRequestHeader.java   |  104 +-
 .../header/message/PushMessageResponseHeader.java  |   45 +-
 .../header/message/ReplyMessageRequestHeader.java  |   44 +-
 .../header/message/ReplyMessageResponseHeader.java |  118 +
 .../message/SendMessageBatchRequestHeader.java     |   44 +-
 .../message/SendMessageBatchResponseHeader.java    |  118 +
 .../message/SendMessageBatchV2RequestHeader.java   |   44 +-
 .../message/SendMessageBatchV2ResponseHeader.java  |  117 +
 .../header/message/SendMessageRequestHeader.java   |   44 +-
 .../header/message/SendMessageResponseHeader.java  |  118 +
 .../eventmesh/common/protocol/tcp/Command.java     |    4 +-
 .../common/protocol/tcp/EventMeshClientInfo.java   |  111 +
 .../common/protocol/tcp/EventMeshMessage.java}     |   10 +-
 .../eventmesh/common/protocol/tcp/Header.java      |    2 +-
 .../common/protocol/tcp/HeartBeatInfo.java         |    2 +-
 .../eventmesh/common/protocol/tcp/OPStatus.java    |    2 +-
 .../eventmesh/common/protocol/tcp/Package.java     |    2 +-
 .../common/protocol/tcp/RedirectInfo.java          |    2 +-
 .../common/protocol/tcp/RegisterInfo.java          |    2 +-
 .../common/protocol/tcp/Subscription.java          |   14 +-
 .../common/protocol/tcp/UnRegisterInfo.java        |    2 +-
 .../eventmesh/common/protocol/tcp/UserAgent.java   |   32 +-
 .../eventmesh/common/protocol/tcp/codec/Codec.java |   38 +-
 .../loadbalance/RandomLoadBalanceSelectorTest.java |   63 +
 .../WeightRoundRobinLoadBalanceSelectorTest.java   |   64 +
 .../build.gradle                                   |    8 +-
 .../gradle.properties                              |    8 +-
 .../org/apache/eventmesh/api/AbstractContext.java  |    4 +-
 .../org/apache/eventmesh/api/EventMeshAction.java  |    8 +-
 .../api/EventMeshAsyncConsumeContext.java          |   36 +-
 .../java/org/apache/eventmesh/api/RRCallback.java  |   11 +-
 .../eventmesh/api/consumer/MeshMQPushConsumer.java |   35 +-
 .../eventmesh/api/producer/MeshMQProducer.java     |   28 +-
 eventmesh-connector-rocketmq/build.gradle          |   60 +
 .../gradle.properties                              |   10 +-
 .../rocketmq/MessagingAccessPointImpl.java         |   93 +
 .../connector/rocketmq/common/Constants.java       |   25 +-
 .../rocketmq/common/EventMeshConstants.java        |   47 +-
 .../connector/rocketmq/config/ClientConfig.java    |  205 +
 .../rocketmq/config/ClientConfiguration.java       |  152 +
 .../rocketmq/config}/ConfigurationWraper.java      |   16 +-
 .../rocketmq/consumer/PushConsumerImpl.java        |  335 +
 .../rocketmq/consumer/RocketMQConsumerImpl.java    |  182 +
 .../connector/rocketmq/domain/ConsumeRequest.java  |   32 +-
 .../connector/rocketmq/domain/NonStandardKeys.java |   17 +-
 .../rocketmq/domain/RocketMQConstants.java         |   10 +-
 .../patch/EventMeshConsumeConcurrentlyContext.java |    7 +-
 .../patch/EventMeshConsumeConcurrentlyStatus.java  |   16 +-
 .../EventMeshMessageListenerConcurrently.java      |   20 +-
 .../rocketmq/producer/AbstractOMSProducer.java     |  152 +
 .../connector/rocketmq/producer/ProducerImpl.java  |  139 +
 .../rocketmq/producer/RocketMQProducerImpl.java    |  155 +
 .../connector/rocketmq/promise/DefaultPromise.java |  227 +
 .../connector/rocketmq/promise/FutureState.java    |   52 +-
 .../connector/rocketmq/utils/BeanUtils.java        |  187 +
 .../connector/rocketmq/utils/OMSUtil.java          |  286 +
 .../ConsumeMessageConcurrentlyService.java         |   43 +-
 ...pache.eventmesh.api.consumer.MeshMQPushConsumer |    7 +-
 ...rg.apache.eventmesh.api.producer.MeshMQProducer |    7 +-
 .../rocketmq/consumer/PushConsumerImplTest.java    |  108 +
 .../apache/rocketmq/producer/ProducerImplTest.java |  153 +
 .../rocketmq/promise/DefaultPromiseTest.java       |  121 +
 .../org/apache/rocketmq/utils/BeanUtilsTest.java   |  112 +
 ...rg.apache.io.openmessaging.MessagingAccessPoint |   20 +
 .../org.apache.io.openmessaging.producer.Producer  |   20 +
 eventmesh-emesher/bin/stop.sh                      |   60 -
 eventmesh-emesher/build.gradle                     |  160 -
 eventmesh-emesher/conf/proxy.properties            |   79 -
 eventmesh-emesher/conf/server.env                  |    1 -
 eventmesh-emesher/scripts/before_shutdown.sh       |   14 -
 eventmesh-emesher/scripts/connections.sh           |    5 -
 eventmesh-emesher/scripts/histo.sh                 |    7 -
 eventmesh-emesher/scripts/histo_suspects.sh        |    7 -
 eventmesh-emesher/scripts/jstack.sh                |    6 -
 eventmesh-emesher/scripts/monitor_connections.sh   |    8 -
 .../scripts/monitor_histo_suspects.sh              |    8 -
 eventmesh-emesher/scripts/monitor_threads.sh       |    8 -
 eventmesh-emesher/scripts/session.sh               |   13 -
 eventmesh-emesher/scripts/threads.sh               |    6 -
 .../admin/controller/ClientManageController.java   |  780 --
 .../java/com/webank/emesher/boot/ProxyServer.java  |   93 -
 .../com/webank/emesher/boot/ProxyTCPServer.java    |  251 -
 .../emesher/configuration/AccessConfiguration.java |  293 -
 .../emesher/configuration/CommonConfiguration.java |  212 -
 .../emesher/configuration/ProxyConfiguration.java  |  224 -
 .../event/ConsumerGroupInstanceChangeEvent.java    |   21 -
 .../emesher/core/plugin/MQConsumerWrapper.java     |  137 -
 .../emesher/core/plugin/MQProducerWrapper.java     |  166 -
 .../com/webank/emesher/core/plugin/MQWrapper.java  |   28 -
 .../core/plugin/impl/DeFiMeshMQConsumerImpl.java   |  115 -
 .../emesher/core/plugin/impl/MeshMQConsumer.java   |   49 -
 .../core/plugin/impl/RMQMeshMQConsumerImpl.java    |  110 -
 .../http/consumer/ConsumerGroupManager.java        |   83 -
 .../protocol/http/consumer/ConsumerManager.java    |  165 -
 .../core/protocol/http/consumer/ProxyConsumer.java |  261 -
 .../http/processor/BatchSendMessageProcessor.java  |  256 -
 .../processor/BatchSendMessageV2Processor.java     |  214 -
 .../http/processor/ReplyMessageProcessor.java      |  252 -
 .../http/processor/SendAsyncMessageProcessor.java  |  241 -
 .../http/processor/SendSyncMessageProcessor.java   |  283 -
 .../http/processor/SubscribeProcessor.java         |   55 -
 .../http/processor/UnSubscribeProcessor.java       |   55 -
 .../tcp/client/group/ClientGroupWrapper.java       |  651 --
 .../tcp/client/session/push/SessionPusher.java     |  149 -
 .../emesher/metrics/tcp/ProxyTcpMonitor.java       |  170 -
 .../test/java/protocol/CmdAsync2ClientTest.java    |   68 -
 .../test/java/protocol/CmdAsync2ServerTest.java    |   59 -
 .../java/protocol/CmdBroadCast2ClientTest.java     |   69 -
 .../java/protocol/CmdBroadCast2ServerTest.java     |   60 -
 .../test/java/protocol/CmdClientGoodByTest.java    |   59 -
 .../src/test/java/protocol/CmdHeartbeatTest.java   |   68 -
 .../src/test/java/protocol/CmdListenTest.java      |   59 -
 .../src/test/java/protocol/CmdRecommendTest.java   |   59 -
 .../src/test/java/protocol/CmdSendRRTest.java      |   63 -
 .../src/test/java/protocol/CmdSubscribeTest.java   |   59 -
 .../src/test/java/protocol/CmdSysLogTest.java      |   63 -
 .../src/test/java/protocol/CmdTraceLogTest.java    |   64 -
 .../src/test/java/protocol/CmdUnSubscribeTest.java |   60 -
 .../src/test/java/test/BasicTest.java              |  159 -
 eventmesh-registry/build.gradle                    |   14 -
 .../bin/start.sh                                   |   64 +-
 eventmesh-runtime/bin/stop.sh                      |   77 +
 .../bin/watchdog.sh                                |   17 +
 .../build.gradle                                   |   21 +-
 eventmesh-runtime/conf/eventmesh.properties        |   54 +
 .../conf/log4j2.xml                                |    6 +-
 .../conf/rocketmq-client.properties                |    8 +-
 .../conf/sChat2.jks                                |  Bin
 eventmesh-runtime/conf/server.env                  |   18 +
 .../gradle.properties                              |    6 +-
 eventmesh-runtime/scripts/before_shutdown.sh       |   31 +
 .../scripts/client_manage.sh                       |   39 +-
 eventmesh-runtime/scripts/connections.sh           |   22 +
 eventmesh-runtime/scripts/histo.sh                 |   24 +
 eventmesh-runtime/scripts/histo_suspects.sh        |   24 +
 eventmesh-runtime/scripts/jstack.sh                |   23 +
 eventmesh-runtime/scripts/monitor_connections.sh   |   25 +
 .../scripts/monitor_histo_suspects.sh              |   25 +
 eventmesh-runtime/scripts/monitor_threads.sh       |   25 +
 eventmesh-runtime/scripts/session.sh               |   29 +
 eventmesh-runtime/scripts/threads.sh               |   23 +
 .../admin/controller/ClientManageController.java   |   64 +
 .../handler/RedirectClientByIpPortHandler.java     |  111 +
 .../admin/handler/RedirectClientByPathHandler.java |  112 +
 .../handler/RedirectClientBySubSystemHandler.java  |  112 +
 .../admin/handler/RejectAllClientHandler.java      |   96 +
 .../admin/handler/RejectClientByIpPortHandler.java |  107 +
 .../handler/RejectClientBySubSystemHandler.java    |  122 +
 .../admin/handler/ShowClientBySystemHandler.java   |   91 +
 .../runtime/admin/handler/ShowClientHandler.java   |   92 +
 .../handler/ShowListenClientByTopicHandler.java    |   92 +
 .../runtime}/boot/AbrstractHTTPServer.java         |  126 +-
 .../runtime}/boot/AbstractRemotingServer.java      |   11 +-
 .../runtime/boot/EventMeshHTTPServer.java          |  114 +-
 .../eventmesh/runtime/boot/EventMeshServer.java    |   93 +
 .../eventmesh/runtime/boot/EventMeshStartup.java   |   42 +-
 .../eventmesh/runtime/boot/EventMeshTCPServer.java |  299 +
 .../eventmesh/runtime}/boot/SSLContextFactory.java |   47 +-
 .../org/apache/eventmesh/runtime}/common/Pair.java |    2 +-
 .../eventmesh/runtime}/common/ServiceState.java    |    2 +-
 .../configuration/EventMeshHTTPConfiguration.java  |  230 +
 .../configuration/EventMeshTCPConfiguration.java   |  291 +
 .../runtime/constants/EventMeshConstants.java      |   65 +-
 .../runtime/constants/EventMeshVersion.java        |    4 +-
 .../core/consumergroup/ConsumerGroupConf.java      |    6 +-
 .../core/consumergroup/ConsumerGroupTopicConf.java |   31 +-
 .../core/consumergroup/ProducerGroupConf.java      |    2 +-
 .../event/ConsumerGroupStateEvent.java             |    4 +-
 .../event/ConsumerGroupTopicConfChangeEvent.java   |    4 +-
 .../runtime/core/plugin/MQConsumerWrapper.java     |   83 +
 .../runtime/core/plugin/MQProducerWrapper.java     |  119 +
 .../eventmesh/runtime/core/plugin/MQWrapper.java   |   46 +
 .../core/protocol/http/async/AsyncContext.java     |    6 +-
 .../core/protocol/http/async/CompleteHandler.java  |    2 +-
 .../http/consumer/ConsumerGroupManager.java        |   97 +
 .../protocol/http/consumer/ConsumerManager.java    |  308 +
 .../protocol/http/consumer/EventMeshConsumer.java  |  282 +
 .../protocol/http/consumer/HandleMsgContext.java   |  100 +-
 .../http/processor/AdminMetricsProcessor.java      |   17 +-
 .../http/processor/AdminShutdownProcessor.java     |   43 +-
 .../http/processor/BatchSendMessageProcessor.java  |  272 +
 .../processor/BatchSendMessageV2Processor.java     |  237 +
 .../http/processor/HeartBeatProcessor.java         |  208 +
 .../http/processor/ReplyMessageProcessor.java      |  276 +
 .../http/processor/SendAsyncMessageProcessor.java  |  244 +
 .../http/processor/SendSyncMessageProcessor.java   |  299 +
 .../http/processor/SubscribeProcessor.java         |  245 +
 .../http/processor/UnSubscribeProcessor.java       |  274 +
 .../core/protocol/http/processor/inf/Client.java   |   92 +
 .../http/processor/inf/HttpRequestProcessor.java   |    7 +-
 .../protocol/http/producer/EventMeshProducer.java  |   59 +-
 .../protocol/http/producer/ProducerManager.java    |   56 +-
 .../protocol/http/producer/SendMessageContext.java |   66 +-
 .../http/push/AbstractHTTPPushRequest.java         |   41 +-
 .../protocol/http/push/AsyncHTTPPushRequest.java   |   89 +-
 .../core/protocol/http/push/HTTPClientPool.java    |    9 +-
 .../protocol/http/push/HTTPMessageHandler.java     |   35 +-
 .../core/protocol/http/push/MessageHandler.java    |    6 +-
 .../core/protocol/http/retry/DelayRetryable.java   |    2 +-
 .../core/protocol/http/retry/HttpRetryer.java      |   26 +-
 .../core/protocol/http/retry/RetryContext.java     |    2 +-
 .../protocol/tcp/client/EventMeshTcp2Client.java   |   90 +-
 .../tcp/client/EventMeshTcpConnectionHandler.java  |   27 +-
 .../tcp/client/EventMeshTcpExceptionHandler.java   |   25 +-
 .../tcp/client/EventMeshTcpMessageDispatcher.java  |   83 +-
 .../tcp/client/group/ClientGroupWrapper.java       |  774 ++
 .../client/group/ClientSessionGroupMapping.java    |  269 +-
 .../group/dispatch/DownstreamDispatchStrategy.java |    7 +-
 .../dispatch/FreePriorityDispatchStrategy.java     |   31 +-
 .../core/protocol/tcp/client/session/Session.java  |  151 +-
 .../tcp/client/session/SessionContext.java         |   15 +-
 .../protocol/tcp/client/session/SessionState.java  |    2 +-
 .../tcp/client/session/push/ClientAckContext.java  |   53 +-
 .../client/session/push/DownStreamMsgContext.java  |   65 +-
 .../tcp/client/session/push/PushContext.java       |   37 +-
 .../tcp/client/session/push/SessionPusher.java     |  142 +
 .../session/push/retry/EventMeshTcpRetryer.java    |  151 +-
 .../session/send/EventMeshTcpSendResult.java       |   12 +-
 .../session/send/EventMeshTcpSendStatus.java       |    4 +-
 .../tcp/client/session/send/SessionSender.java     |   94 +-
 .../client/session/send/UpStreamMsgContext.java    |   14 +-
 .../protocol/tcp/client/task/AbstractTask.java     |   17 +-
 .../core/protocol/tcp/client/task/GoodbyeTask.java |   27 +-
 .../protocol/tcp/client/task/HeartBeatTask.java    |   23 +-
 .../core/protocol/tcp/client/task/HelloTask.java   |   53 +-
 .../core/protocol/tcp/client/task/ListenTask.java  |   21 +-
 .../protocol/tcp/client/task/MessageAckTask.java   |   28 +-
 .../tcp/client/task/MessageTransferTask.java       |  110 +-
 .../protocol/tcp/client/task/SubscribeTask.java    |   40 +-
 .../protocol/tcp/client/task/UnSubscribeTask.java  |   33 +-
 .../eventmesh/runtime/domain/BytesMessageImpl.java |  113 +
 .../eventmesh/runtime/domain/ConsumeRequest.java   |   55 +
 .../eventmesh/runtime/domain/NonStandardKeys.java  |   18 +-
 .../runtime/domain/RocketMQConstants.java          |    9 +-
 .../eventmesh/runtime/domain/SendResultImpl.java   |   39 +
 .../runtime}/metrics/MonitorMetricConstants.java   |   14 +-
 .../runtime}/metrics/http/GroupMetrics.java        |   11 +-
 .../runtime}/metrics/http/HTTPMetricsServer.java   |   53 +-
 .../runtime}/metrics/http/HealthMetrics.java       |   11 +-
 .../runtime}/metrics/http/SummaryMetrics.java      |   31 +-
 .../runtime}/metrics/http/TcpSummaryMetrics.java   |   31 +-
 .../runtime}/metrics/http/TopicMetrics.java        |   11 +-
 .../runtime/metrics/tcp/EventMeshTcpMonitor.java   |  169 +
 .../patch/EventMeshConsumeConcurrentlyContext.java |   44 +
 .../patch/EventMeshConsumeConcurrentlyStatus.java  |    4 +-
 .../EventMeshMessageListenerConcurrently.java      |   69 +
 .../runtime/util/EventMeshThreadFactoryImpl.java   |   10 +-
 .../eventmesh/runtime/util/EventMeshUtil.java      |  270 +-
 .../eventmesh/runtime/util/HttpTinyClient.java     |  136 +
 .../apache/eventmesh/runtime/util/IOTinyUtils.java |  159 +
 .../apache/eventmesh/runtime/util/NetUtils.java    |   72 +
 .../org/apache/eventmesh/runtime/util/OMSUtil.java |   68 +
 .../eventmesh/runtime/util/RemotingHelper.java     |  181 +
 .../eventmesh/runtime}/util/ServerGlobal.java      |    2 +-
 .../org/apache/eventmesh/runtime}/util/Utils.java  |  130 +-
 .../eventmesh/runtime}/util/ValueComparator.java   |    2 +-
 .../src/test/java/client/EventMeshClient.java      |   16 +-
 .../src/test/java/client/PubClient.java            |    5 +-
 .../src/test/java/client/SubClient.java            |   15 +-
 .../test/java/client/common/ClientConstants.java   |    6 +-
 .../src/test/java/client/common/ClientGlobal.java  |    5 +-
 .../src/test/java/client/common/Codec.java         |   31 +-
 .../src/test/java/client/common/MessageUtils.java  |   56 +-
 .../test/java/client/common/RequestContext.java    |    6 +-
 .../src/test/java/client/common/Server.java        |   12 +-
 .../src/test/java/client/common/TCPClient.java     |   25 +-
 .../test/java/client/common/UserAgentUtils.java    |   23 +-
 .../src/test/java/client/hook/ReceiveMsgHook.java  |    4 +-
 .../test/java/client/impl/EventMeshClientImpl.java |   32 +-
 .../src/test/java/client/impl/PubClientImpl.java   |   26 +-
 .../src/test/java/client/impl/SubClientImpl.java   |   61 +-
 .../src/test/java/demo/AsyncPubClient.java         |    8 +-
 .../src/test/java/demo/AsyncSubClient.java         |   18 +-
 .../src/test/java/demo/BroadCastPubClient.java     |    3 +-
 .../src/test/java/demo/BroadCastSubClient.java     |   18 +-
 .../src/test/java/demo/CCPubClient.java            |    0
 .../src/test/java/demo/CCSubClient.java            |   12 +-
 .../src/test/java/demo/CClientDemo.java            |   30 +-
 .../src/test/java/demo/SyncPubClient.java          |   11 +-
 .../src/test/java/demo/SyncSubClient.java          |   12 +-
 .../handler/RedirectClientByIpPortHandlerTest.java |   59 +
 .../src/test/resources/log4j2.xml                  |    0
 eventmesh-sdk-java/build.gradle                    |   96 +-
 eventmesh-sdk-java/gradle.properties               |    5 +-
 .../eventmesh/client/http/AbstractLiteClient.java  |   81 -
 .../client/http/consumer/LiteConsumer.java         |  104 -
 .../http/consumer/context/LiteConsumeContext.java  |  126 -
 .../eventmesh/client/http/AbstractLiteClient.java  |   74 +
 .../eventmesh/client/http/EventMeshRetObj.java}    |    4 +-
 .../eventmesh/client/http/RemotingServer.java      |  166 +-
 .../client/http/conf/LiteClientConfig.java         |   98 +-
 .../client/http/consumer/HandleResult.java         |    2 +-
 .../client/http/consumer/LiteConsumer.java         |  304 +
 .../http/consumer/context/LiteConsumeContext.java  |  102 +
 .../consumer/listener/LiteMessageListener.java     |    9 +-
 .../eventmesh/client/http/http/HttpUtil.java       |   39 +-
 .../eventmesh/client/http/http/RequestParam.java   |   11 +-
 .../client/http/producer/LiteProducer.java         |  183 +-
 .../eventmesh/client/http/producer/RRCallback.java |    4 +-
 .../producer/RRCallbackResponseHandlerAdapter.java |   36 +-
 .../client/http/ssl/MyX509TrustManager.java        |   27 +-
 .../client/http/util/HttpLoadBalanceUtils.java     |   83 +
 .../eventmesh/client/tcp/EventMeshClient.java}     |   14 +-
 .../eventmesh/client/tcp/SimplePubClient.java      |   10 +-
 .../eventmesh/client/tcp/SimpleSubClient.java      |   25 +-
 .../client/tcp/common/AsyncRRCallback.java         |    3 +-
 .../client/tcp/common/EventMeshCommon.java}        |   12 +-
 .../tcp/common/EventMeshThreadFactoryImpl.java}    |   10 +-
 .../eventmesh/client/tcp/common/MessageUtils.java  |   40 +-
 .../client/tcp/common/ReceiveMsgHook.java          |    4 +-
 .../client/tcp/common/RequestContext.java          |    7 +-
 .../eventmesh/client/tcp/common/TcpClient.java     |   40 +-
 .../client/tcp/impl/DefaultEventMeshClient.java}   |   30 +-
 .../client/tcp/impl/SimplePubClientImpl.java       |   44 +-
 .../client/tcp/impl/SimpleSubClientImpl.java       |   66 +-
 eventmesh-sdk-java/src/main/resources/log4j2.xml   |    2 +-
 .../client/http/demo/AsyncPublishInstance.java     |   65 -
 .../client/http/demo/AsyncSyncRequestInstance.java |   74 -
 .../client/tcp/common/AccessTestCaseTopicSet.java  |   14 -
 .../client/tcp/common/AccessTestUtils.java         |  130 -
 .../eventmesh/client/tcp/demo/AsyncPublish.java    |   38 -
 .../client/tcp/demo/AsyncPublishBroadcast.java     |   36 -
 .../eventmesh/client/tcp/demo/AsyncSubscribe.java  |   48 -
 .../client/tcp/demo/AsyncSubscribeBroadcast.java   |   48 -
 .../eventmesh/client/tcp/demo/SyncRequest.java     |   36 -
 .../eventmesh/client/tcp/demo/SyncResponse.java    |   49 -
 .../client/http/demo/AsyncPublishInstance.java     |   85 +
 .../client/http/demo/AsyncSyncRequestInstance.java |   93 +
 .../client/http/demo/SyncRequestInstance.java      |   56 +-
 .../client/http/util/HttpLoadBalanceUtilsTest.java |   47 +
 .../tcp/common/EventMeshTestCaseTopicSet.java      |   19 +-
 .../client/tcp/common/EventMeshTestUtils.java      |  155 +
 .../eventmesh/client/tcp/demo/AsyncPublish.java    |   59 +
 .../client/tcp/demo/AsyncPublishBroadcast.java     |   53 +
 .../eventmesh/client/tcp/demo/AsyncSubscribe.java  |   69 +
 .../client/tcp/demo/AsyncSubscribeBroadcast.java   |   69 +
 .../eventmesh/client/tcp/demo/SyncRequest.java     |   53 +
 .../eventmesh/client/tcp/demo/SyncResponse.java    |   69 +
 .../test/resources/application.properties}         |    6 +-
 eventmesh-sdk-java/src/test/resources/log4j2.xml   |    2 +-
 .../build.gradle                                   |    9 +-
 .../gradle.properties                              |    6 +-
 .../java/org/apache/eventmesh/starter/StartUp.java |    9 +-
 eventmesh-test/bin/http_pub.sh                     |  138 +
 eventmesh-test/bin/http_sub.sh                     |  138 +
 eventmesh-test/bin/tcp_pub.sh                      |  138 +
 eventmesh-test/bin/tcp_pub_broadcast.sh            |  138 +
 eventmesh-test/bin/tcp_sub.sh                      |  138 +
 eventmesh-test/bin/tcp_sub_broadcast.sh            |  138 +
 eventmesh-test/build.gradle                        |   91 +
 .../conf/application.properties                    |   10 +-
 .../resources => eventmesh-test/conf}/log4j2.xml   |    2 +-
 .../conf/server.env                                |    7 +-
 .../gradle.properties                              |    6 +-
 .../eventmesh/http/demo/AsyncPublishInstance.java  |   94 +
 .../http/demo/AsyncSyncRequestInstance.java        |   99 +
 .../eventmesh}/http/demo/SyncRequestInstance.java  |   56 +-
 .../http/demo/sub/SpringBootDemoApplication.java   |   33 +-
 .../http/demo/sub/controller/SubController.java    |   51 +
 .../http/demo/sub/service/SubService.java          |  130 +
 .../tcp/common/EventMeshTestCaseTopicSet.java      |   19 +-
 .../eventmesh/tcp/common/EventMeshTestUtils.java   |  154 +
 .../apache/eventmesh/tcp/demo/AsyncPublish.java    |   66 +
 .../eventmesh/tcp/demo/AsyncPublishBroadcast.java  |   59 +
 .../apache/eventmesh/tcp/demo/AsyncSubscribe.java  |   74 +
 .../tcp/demo/AsyncSubscribeBroadcast.java          |   74 +
 .../org/apache/eventmesh/tcp/demo/SyncRequest.java |   55 +
 .../apache/eventmesh/tcp/demo/SyncResponse.java    |   70 +
 .../main/java/org/apache/eventmesh/util/Utils.java |  108 +
 gradle.properties                                  |   19 +-
 gradle/wrapper/gradle-wrapper.jar                  |  Bin 0 -> 58910 bytes
 .../wrapper/gradle-wrapper.properties              |   11 +-
 gradlew                                            |   26 +-
 gradlew.bat                                        |   25 +-
 install.sh                                         |   18 +
 package.json                                       |   19 -
 settings.gradle                                    |    5 +-
 style/codeStyle.xml                                |    2 +-
 yarn.lock                                          | 7839 --------------------
 520 files changed, 20972 insertions(+), 21212 deletions(-)

diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 0000000..24bcbcd
--- /dev/null
+++ b/.asf.yaml
@@ -0,0 +1,45 @@
+#
+# 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.
+#
+
+github:
+  description: EventMesh is a dynamic cloud-native eventing infrastruture used to decouple the application and backend middleware layer, which supports a wide range of use cases that encompass complex multi-cloud, widely distributed topologies using diverse technology stacks.
+  homepage: https://eventmesh.apache.org/
+  labels:
+    - event-mesh
+    - event-gateway
+    - event-driven
+    - event-streaming
+    - event-sourcing
+    - event-governance
+    - event-routing
+    - cloud-native
+    - serverless
+    - serverless-workflow
+    - esb
+    - message-bus
+    - cqrs
+  enabled_merge_buttons:
+    squash:  true
+    merge:   false
+    rebase:  false
+  protected_branches:
+    master:
+      required_status_checks:
+        strict: true
+      required_pull_request_reviews:
+        dismiss_stale_reviews: true
+        required_approving_review_count: 2
diff --git a/.coveralls.yml b/.coveralls.yml
deleted file mode 100644
index cf27a37..0000000
--- a/.coveralls.yml
+++ /dev/null
@@ -1 +0,0 @@
-service_name: travis-pro
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..381e4d7
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1 @@
+#TBD
\ No newline at end of file
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..1d0cbfc
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,84 @@
+#
+# 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.
+#
+
+name: "Continuous Integration"
+
+on:
+  push:
+    branches:
+      - develop
+  pull_request:
+    branches:
+      - develop
+  workflow_dispatch:
+
+jobs:
+  build:
+    name: Build
+
+    runs-on: ubuntu-latest
+
+    strategy:
+      fail-fast: false
+      matrix:
+        language:
+          - 'java'
+        java:
+          - 8
+
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v2
+
+      - name: Initialize CodeQL
+        uses: github/codeql-action/init@v1
+        with:
+          # If you wish to specify custom queries, you can do so here or in a config file.
+          # By default, queries listed here will override any specified in a config file.
+          # Prefix the list here with "+" to use these queries and those in the config file.
+          # queries: ./path/to/local/query, your-org/your-repo/queries@main
+          languages: ${{ matrix.language }}
+
+      - name: Set up JDK ${{ matrix.java }}
+        uses: actions/setup-java@v1
+        with:
+          java-version: ${{ matrix.java }}
+
+      - name: Build
+        run: ./gradlew clean build jacocoTestReport
+
+      - name: Perform CodeQL analysis
+        uses: github/codeql-action/analyze@v1
+
+      - name: Upload coverage report to codecov.io
+        run: bash <(curl -s https://codecov.io/bash) || echo 'Failed to upload coverage report!'
+
+  license-check:
+    name: License Check
+
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v2
+
+      - name: Check license header
+        uses: apache/skywalking-eyes@9bd5feb86b5817aa6072b008f9866a2c3bbc8587
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/gitee-mirror.yml b/.github/workflows/gitee-mirror.yml
deleted file mode 100644
index 6582dfd..0000000
--- a/.github/workflows/gitee-mirror.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-# 使用 GitHub Action 来解决手动同步到 Gitee 的问题
-# 效果:github repo 代码更新之后,会自动同步至 gitee
-# 使用到的 GitHub Action:https://github.com/Yikun/hub-mirror-action
-
-# This is a basic workflow to help you get started with Actions
-
-name: Gitee Mirror
-
-# Controls when the action will run. Triggers the workflow on push or pull request
-# events but only for the master branch
-on:
-  push:
-    branches:
-      - '*'
-
-jobs:
-  # This workflow contains a single job called "build"
-  build:
-    # The type of runner that the job will run on
-    runs-on: ubuntu-latest
-
-    # Steps represent a sequence of tasks that will be executed as part of the job
-    steps:
-    - name: Mirror the Github organization repos to Gitee.
-      uses: Yikun/hub-mirror-action@master
-      with:
-        src: github/WeBankFinTech
-        dst: gitee/webank
-        # 这里请填写与gitee上公钥匹配的的 ssh private key,参见:https://gitee.com/profile/sshkeys
-        # 填写地址:https://github.com/WeBankFinTech/fes.js/settings/secrets
-        dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
-        # 这里请填写 gitee的令牌,参见:https://gitee.com/profile/personal_access_tokens
-        # 填写地址:https://github.com/WeBankFinTech/fes.js/settings/secrets
-        dst_token: ${{ secrets.GITEE_TOKEN }}
-        # 项目同步白名单,可以选择填写多个,以英文逗号分割
-        static_list: "EventMesh"
-        # 是否强制同步
-        force_update: true
-        # 账号类型:对 luban-h5 而言是 user,因为是个人项目;如果是企业项目,请填写 org,因为是组织下的项目
-        account_type: org
-        clone_style: ssh
-        
-  build-and-deploy:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout 🛎️
-        uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly.
-        with:
-          persist-credentials: false
-
-      - name: Install and Build 🔧 # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
-        run: |
-          yarn install
-          yarn run docs:build
-      - name: Deploy 🚀
-        uses: JamesIves/github-pages-deploy-action@3.7.1
-        with:
-          GITHUB_TOKEN: ${{ secrets.EVENTMESH }}
-          BRANCH: gh-pages 
-          FOLDER: docs/.vuepress/dist # The folder the action should deploy.
diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml
new file mode 100644
index 0000000..8883906
--- /dev/null
+++ b/.github/workflows/greetings.yml
@@ -0,0 +1,72 @@
+#
+# 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.
+#
+
+name: Greetings
+
+on: [pull_request, issues]
+
+jobs:
+  greeting:
+    name: Greeting
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/first-interaction@v1
+        with:
+          repo-token: ${{ secrets.GITHUB_TOKEN }}
+          issue-message: |
+            Welcome to the Apache EventMesh (incubating) community!!
+            We are glad that you are contributing by opening this issue. :D
+
+            Please make sure to include all the relevant context.
+            We will be here shortly.
+
+            If you are interested in contributing to our project, please let us know!
+            You can check out our contributing guide on [contributing to EventMesh](https://github.com/apache/incubator-eventmesh/blob/develop/CONTRIBUTING.md).
+
+            Want to get closer to the community?
+
+            WeChat Group:
+            ![wechat_qr](https://github.com/apache/incubator-eventmesh/blob/develop/docs/images/mesh-helper.png?raw=true)
+
+            Mailing Lists:
+            | Name | Description |Subscribe	|Unsubscribe|Archive
+            | ----    | ----    |----    | ----    | ----    |
+            |Users	|User support and questions mailing list|	[Subscribe](mailto:users-subscribe@eventmesh.incubator.apache.org)	|[Unsubscribe](mailto:users-unsubscribe@eventmesh.incubator.apache.org)	|[Mail Archives](https://lists.apache.org/list.html?users@eventmesh.apache.org)|
+            |Development	|Development related discussions|	[Subscribe](mailto:dev-subscribe@eventmesh.incubator.apache.org)	|[Unsubscribe](mailto:dev-unsubscribe@eventmesh.incubator.apache.org)	|[Mail Archives](https://lists.apache.org/list.html?dev@eventmesh.apache.org)|
+            |Commits	|All commits to repositories|	[Subscribe](mailto:commits-subscribe@eventmesh.incubator.apache.org)	|[Unsubscribe](mailto:commits-unsubscribe@eventmesh.incubator.apache.org)	|[Mail Archives](https://lists.apache.org/list.html?commits@eventmesh.apache.org)|
+
+          pr-message: |
+            Welcome to the Apache EventMesh (incubating) community!!
+            This is your first PR in our project. We're very excited to have you onboard contributing. Your contributions are greatly appreciated!
+
+            Please make sure that the changes are covered by tests.
+            We will be here shortly.
+            Let us know if you need any help!
+
+            Want to get closer to the community?
+
+            WeChat Group:
+            ![wechat_qr](https://github.com/apache/incubator-eventmesh/blob/develop/docs/images/mesh-helper.png?raw=true)
+
+            Mailing Lists:
+            | Name | Description |Subscribe	|Unsubscribe|Archive
+            | ----    | ----    |----    | ----    | ----    |
+            |Users	|User support and questions mailing list|	[Subscribe](mailto:users-subscribe@eventmesh.incubator.apache.org)	|[Unsubscribe](mailto:users-unsubscribe@eventmesh.incubator.apache.org)	|[Mail Archives](https://lists.apache.org/list.html?users@eventmesh.apache.org)|
+            |Development	|Development related discussions|	[Subscribe](mailto:dev-subscribe@eventmesh.incubator.apache.org)	|[Unsubscribe](mailto:dev-unsubscribe@eventmesh.incubator.apache.org)	|[Mail Archives](https://lists.apache.org/list.html?dev@eventmesh.apache.org)|
+            |Commits	|All commits to repositories|	[Subscribe](mailto:commits-subscribe@eventmesh.incubator.apache.org)	|[Unsubscribe](mailto:commits-unsubscribe@eventmesh.incubator.apache.org)	|[Mail Archives](https://lists.apache.org/list.html?commits@eventmesh.apache.org)|
diff --git a/.licenserc.yaml b/.licenserc.yaml
new file mode 100644
index 0000000..5046f8e
--- /dev/null
+++ b/.licenserc.yaml
@@ -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.
+#
+
+header:
+  license:
+    spdx-id: Apache-2.0
+    copyright-owner: Apache Software Foundation
+
+  paths-ignore:
+    - '.github/PULL_REQUEST_TEMPLATE'
+    - '.gitmodules'
+    - '**/.gitkeep'
+    - '**/.gitignore'
+    - '**/*.md'
+    - '**/*.json'
+    - '**/*.ftl'
+    - '**/*.iml'
+    - '**/*.ini'
+    - '**/*.crt'
+    - '**/*.pem'
+    - 'LICENSE'
+    - 'NOTICE'
+    - 'DISCLAIMER-WIP'
+
+  comment: on-failure
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 4c2ba8b..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-dist: trusty
-
-language: java
-jdk:
-- oraclejdk8
-
-script:
-- travis_retry gradle check
-
-after_success:
-- gradle clean test jacocoAllTestReport coveralls
-
-env:
-  global:
-  - secure: "T1QAuaAzcB7K8YjAAVVb4P9+W0JAdOFbyBwRxliyyoSZUShlIqa0eE7ioXHXWBP/d5f3XtROse6lq2qILqcU9sFSncKE2vRJlwJ5p7R23WIsCXdV70A9AVE2gLJcIJiOTMwd/YYYzNDrGLp3CSJNcKo8t7t70V2j/11I9xPTOHnaZ8FHGC3d/7bjfR/+g/3d4EOCvV8Vm6ndEmmailmF8OJ/kcbuRbArKIehjUwNDyQZfwAc9+vvPZlHgnQvR1pJ/KiK6muEIi7RQohDq7lMTmcc2LZSYgy/+aqFrmBcQwXScABFmSwysQ4KMXfrCqqMsBdmvno/NoKVGofHHKdym/oauv/G3lxLx5sgM9A7ZSFBK08x08r7u/6TDsTFmQ9LzVFDNo/OLZhxs3dr9x2C9Pa2A7IP1i1oVbbYkwBJv4z6o3khWpQAAY/IWijlCZ9vkjFfqdIXbvlPqamEaFRAmK5I3MVqL2+ [...]
\ No newline at end of file
diff --git a/CNAME b/CNAME
deleted file mode 100644
index 8feffb1..0000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-www.eventmesher.com
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index de1080b..68c870c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,7 +1,7 @@
 # Contributing to EventMesh
 
-Welcome to EventMesh! This document is a guideline about how to contribute to EventMesh.
-If you find something incorrect or missing, please leave comments / suggestions.
+Welcome to EventMesh! This document is a guideline about how to contribute to EventMesh. If you find something incorrect
+or missing, please leave comments / suggestions.
 
 ## Before you get started
 
@@ -11,11 +11,11 @@ You should have JDK installed in your operating system.
 
 ## Contributing
 
-We are always very happy to have contributions, whether for typo fix, bug fix or big new features.
-Please do not ever hesitate to ask a question or send a pull request.
+We are always very happy to have contributions, whether for typo fix, bug fix or big new features. Please do not ever
+hesitate to ask a question or send a pull request.
 
-We strongly value documentation and integration with other projects.
-We are very glad to accept improvements for these aspects.
+We strongly value documentation and integration with other projects. We are very glad to accept improvements for these
+aspects.
 
 ### GitHub workflow
 
@@ -31,29 +31,29 @@ Here are the workflow for contributors:
 6. Push your commits to your forked repository
 7. Create a pull request
 
-Please follow [the pull request template](./.github/PULL_REQUEST_TEMPLATE.md).
-Please make sure the PR has a corresponding issue. [GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)
+Please follow [the pull request template](./.github/PULL_REQUEST_TEMPLATE.md). Please make sure the PR has a
+corresponding issue. [GitHub Issues](https://github.com/apache/incubator-eventmesh/issues)
 
-After creating a PR, one or more reviewers will be assigned to the pull request.
-The reviewers will review the code.
+After creating a PR, one or more reviewers will be assigned to the pull request. The reviewers will review the code.
 
-Before merging a PR, squash any fix review feedback, typo, merged, and rebased sorts of commits.
-The final commit message should be clear and concise.
+Before merging a PR, squash any fix review feedback, typo, merged, and rebased sorts of commits. The final commit
+message should be clear and concise.
 
 ### Open an issue / PR
 
-We use [GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues) and [Pull Requests](https://github.com/WeBankFinTech/EventMesh/pulls) for trackers.
+We use [GitHub Issues](https://github.com/apache/incubator-eventmesh/issues)
+and [Pull Requests](https://github.com/apache/incubator-eventmesh/pulls) for trackers.
 
-If you find a typo in a document, find a bug in code, or want new features, or want to give suggestions,
-you can [open an issue on GitHub](https://github.com/WeBankFinTech/EventMesh/issues/new) to report it.
-Please follow the guideline message in the issue template.
+If you find a typo in a document, find a bug in code, or want new features, or want to give suggestions, you
+can [open an issue on GitHub](https://github.com/apache/incubator-eventmesh/issues/new) to report it. Please follow the
+guideline message in the issue template.
 
-If you want to contribute, please follow the [contribution workflow](#github-workflow) and create a new pull request.
-If your PR contains large changes, e.g. component refactor or new components, please write detailed documents
-about its design and usage.
+If you want to contribute, please follow the [contribution workflow](#github-workflow) and create a new pull request. If
+your PR contains large changes, e.g. component refactor or new components, please write detailed documents about its
+design and usage.
 
-Note that a single pull request should not be too large. If heavy changes are required, it's better to separate the changes
-to a few individual PRs.
+Note that a single pull request should not be too large. If heavy changes are required, it's better to separate the
+changes to a few individual PRs.
 
 ### Code review
 
diff --git a/CONTRIBUTING.zh-CN.md b/CONTRIBUTING.zh-CN.md
index 29e6367..742ccbd 100644
--- a/CONTRIBUTING.zh-CN.md
+++ b/CONTRIBUTING.zh-CN.md
@@ -1,7 +1,6 @@
 # 贡献给EventMesh
 
-欢迎使用EventMesh! 本文档是有关如何为EventMesh做出贡献的指南。
-如果发现不正确或缺失的内容,请留下评论/建议。
+欢迎使用EventMesh! 本文档是有关如何为EventMesh做出贡献的指南。 如果发现不正确或缺失的内容,请留下评论/建议。
 
 ## 开始之前
 
@@ -11,11 +10,9 @@
 
 ## 贡献
 
-无论是对于拼写错误,BUG修复还是重要的新功能,我们总是很乐意为您做出贡献。
-请不要犹豫,提出问题或发送请求请求。
+无论是对于拼写错误,BUG修复还是重要的新功能,我们总是很乐意为您做出贡献。 请不要犹豫,提出问题或发送请求请求。
 
-我们非常重视文档以及与其他项目的集成。
-我们很高兴接受这些方面的改进。
+我们非常重视文档以及与其他项目的集成。 我们很高兴接受这些方面的改进。
 
 ### GitHub工作流程
 
@@ -23,39 +20,33 @@
 
 这是贡献者的工作流程 :
 
-1.Fork到您个人仓库
-2.克隆到本地存储库
-3.创建一个新分支并对其进行处理
-4.保持分支同步
-5.提交您的更改(确保您的提交消息简明扼要)
-6.将您的提交推送到分叉的存储库
-7.创建PR合并请求
+1. Fork到您个人仓库
+2. 克隆到本地存储库
+3. 创建一个新分支并对其进行处理
+4. 保持分支同步
+5. 提交您的更改(确保您的提交消息简明扼要)
+6. 将您的提交推送到分叉的存储库
+7. 创建PR合并请求
 
 请遵循[Pull Requests模板](./.github/PULL_REQUEST_TEMPLATE.md).
-请确保PR对应有相应的问题. [GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)
+请确保PR对应有相应的问题. [GitHub Issues](https://github.com/apache/incubator-eventmesh/issues)
 
-创建PR后,将为拉取请求分配一个或多个审阅者。
-审阅者将审阅代码。
+创建PR后,将为拉取请求分配一个或多个审阅者。 审阅者将审阅代码。
 
-在合并PR之前,请压缩所有修订审阅反馈,拼写错误,合并的内容和基于基础的提交内容。
-最终的提交消息应该清晰简洁。
+在合并PR之前,请压缩所有修订审阅反馈,拼写错误,合并的内容和基于基础的提交内容。 最终的提交消息应该清晰简洁。
 
 ### 打开问题/ PR
 
-我们将使用Issues和Pull Requests作为跟踪器 
-[GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)
-[Pull Requests](https://github.com/WeBankFinTech/EventMesh/pulls)
+我们将使用Issues和Pull Requests作为跟踪器
+[GitHub Issues](https://github.com/apache/incubator-eventmesh/issues)
+[Pull Requests](https://github.com/apache/incubator-eventmesh/pulls)
 
-如果您在文档中发现拼写错误,在代码中发现错误,想要新功能或提出建议,
-您可以提出问题[在GitHub上打开问题](https://github.com/WeBankFinTech/EventMesh/issues/new)
+如果您在文档中发现拼写错误,在代码中发现错误,想要新功能或提出建议, 您可以提出问题[在GitHub上打开问题](https://github.com/apache/incubator-eventmesh/issues/new)
 请按照问题模板中的准则消息进行操作。
 
-如果您想贡献,请遵循[贡献工作流程](#github-workflow)并创建一个新的拉取请求。
-如果您的PR包含较大的更改,例如组件重构或新组件,请写详细文档
-有关其设计和使用的信息。
+如果您想贡献,请遵循[贡献工作流程](#github-workflow)并创建一个新的拉取请求。 如果您的PR包含较大的更改,例如组件重构或新组件,请写详细文档 有关其设计和使用的信息。
 
-请注意,单个拉取请求不应太大。如果需要进行重大更改,最好将更改分开
-到一些个人PR。
+请注意,单个拉取请求不应太大。如果需要进行重大更改,最好将更改分开 到一些个人PR。
 
 ### 代码审查
 
@@ -67,4 +58,4 @@
 
 ## 社区
 
-### 联系我们
\ No newline at end of file
+### 联系我们
diff --git a/DISCLAIMER-WIP b/DISCLAIMER-WIP
new file mode 100644
index 0000000..e72dd1b
--- /dev/null
+++ b/DISCLAIMER-WIP
@@ -0,0 +1,19 @@
+Apache EventMesh is an effort undergoing incubation at The Apache Software Foundation (ASF),
+sponsored by the Apache Incubator PMC.
+
+Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, 
+communications, and decision-making process have stabilized in a manner consistent with other successful ASF projects.
+
+While incubation status is not necessarily a reflection of the completeness or stability of the code, 
+it does indicate that the project has yet to be fully endorsed by the ASF.
+
+Some of the incubating project’s releases may not be fully compliant with ASF policy.
+For example, releases may have incomplete or un-reviewed licensing conditions. 
+What follows is a list of issues the project is currently aware of (this list is likely to be incomplete): 
+
+1- Releases may have incomplete licensing conditions
+
+
+If you are planning to incorporate this work into your product/project, 
+please be aware that you will need to conduct a thorough licensing review to determine the overall implications of including this work.
+For the current status of this project through the Apache Incubator, visit: https://incubator.apache.org/projects/eventmesh.html
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..19d0bec
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,5 @@
+Apache EventMesh (incubating)
+Copyright 2021 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/README.md b/README.md
index 968c229..43cfc86 100644
--- a/README.md
+++ b/README.md
@@ -1,73 +1,91 @@
-[![Build Status](https://www.travis-ci.org/WeBankFinTech/DeFiBus.svg?branch=master)](https://www.travis-ci.org/WeBankFinTech/EventMesh)
-[![Coverage Status](https://coveralls.io/repos/github/WeBankFinTech/DeFiBus/badge.svg?branch=master)](https://coveralls.io/github/WeBankFinTech/EventMesh?branch=master)
-[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/WeBankFinTech/EventMesh/releases)
+# Apache EventMesh (incubating) 
+[![CI status](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml/badge.svg)](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml)
+[![CodeCov](https://codecov.io/gh/apache/incubator-eventmesh/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/incubator-eventmesh)
+[![Language grade: Java](https://img.shields.io/lgtm/grade/java/g/apache/incubator-eventmesh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-eventmesh/context:java)
+[![Total alerts](https://img.shields.io/lgtm/alerts/g/apache/incubator-eventmesh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-eventmesh/alerts/)
+[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/apache/incubator-eventmesh/releases)
 [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
 
 [点我查看中文版](README.zh-CN.md)
 
-## What is Event Mesh?
-This figure shows the positioning of the event mesh relative to other similar technologies (such as service mesh) in the application framework.
+![logo](docs/images/logo2.png)
+## What is EventMesh?
+EventMesh(incubating) is a dynamic cloud-native eventing infrastruture used to decouple the application and backend middleware layer, which supports a wide range of use cases that encompass complex multi-cloud, widely distributed topologies using diverse technology stacks.
+
+![architecture1](docs/images/eventmesh-multi-runtime.png)
+
+**EventMesh Ecosystem:**
+
 ![architecture1](docs/images/eventmesh-define.png)
 
-Event Mesh is a dynamic plug-in cloud-native basic service layer used to decouple the application and middleware layer. It provides flexible, reliable and fast event distribution, and can be managed.
-![architecture1](docs/images/eventmesher.png)
+**EventMesh Architecture:**
+
+![architecture1](docs/images/eventmesh-runtime.png)
+
+**EventMesh Cloud Native:**
+
+![architecture2](docs/images/eventmesh-panels.png)
+
+
+**Support connecting event store:**
+
+* [RocketMQ](https://github.com/apache/rocketmq):RocketMQ is a distributed messaging and streaming platform with low latency, high performance and reliability, trillion-level capacity and flexible scalability.
 
-Cloud Native Event Mesh:
-![architecture2](docs/images/bus.png)
+**Components:**
 
-The event mesh allows events from one application to be dynamically routed to any other application.
-General functions of the event mesh:
-* Event driven;
-* Event governance;
-* Dynamic routing;
-* Cloud native
+* **eventmesh-runtime** : an middleware to transmit events between event producers and consumers, support cloud native apps and microservices.
+* **eventmesh-sdk-java** : currently supports HTTP and TCP protocols.
+* **eventmesh-connector-api** : an api layer based on OpenMessaging api and SPI pluggin, which can be implemented by popular EventStores such as IMDG, Messaging Engine and OSS etc.
+* **eventmesh-connector-rocketmq** : an implementation of eventmesh-connector-api, pub event to or sub event from RocketMQ as EventStore.
 
-Dependent components:
-* DeFiBus : a distributed messaging platform with low latency, high performance and reliability, flexible scalability. [DeFiBus](https://github.com/WeBankFinTech/DeFiBus)
-* RocketMQ
+**Protocol:**
 
-Key components:
-* eventmesh-emesher : an middleware to transmit events between event producers and consumers, support cloud native apps and microservices
-* eventmesh-sdk-java : currently supports HTTP and TCP protocols, and will support gRPC in the future
-* eventmesh-registry : automatically routes events between applications and services connected to seperate event meshers, manage eventmesh-emesher
+The protocol of eventmesh is easier and more convenient, you can read more [here](docs/en/instructions/eventmesh-runtime-protocol.md)
 
 ## RoadMap
 | version | feature |
 | ----    | ----    |
-| v1.0.0  |Support DeFiBus as eventstore, support pub/sub, http api, java-sdk|
-| v1.1.0  |Support rocketmq as eventstore|
+| v1.0.0  |Support java-sdk , tcp pub/sub, http pub|
+| v1.1.0  |Support RocketMQ as eventstore|
 | v1.1.1  |Support https|
-| v1.2.0  |Support transaction event|
-| v1.3.0  |Support Plug-in architectur|
-|         |Support Event Sourcing|
-|         |Support Event orchestration|
-|         |Support Dashboard|
-|         |Support Event governance|
-|         |Support Nacos as an event router|
-|         |Support Promethus|
-|         |Support Skywalking|
-|         |Support Spiffe|
-|         |Support gRPC|
-|         |Support c/go/python/nodejs SDK|
+| v1.2.0  |Support EventMesh store layer pluggable by OpenMessaging Pub/Sub API, http sub, docker|
+| V1.3.0  |Support CloudEvents, Event Streaming|
+|         |Support Event function,triggers and bindings|
+|         |Support Event orchestration, Servelss workflow|
+|         |Support Event transaction|
+|         |Support Event schema|
+|         |Support Event governance, dashboard|
+|         |Support Event security|
+|         |Support multi language SDK(c\go\python\wasm)|
+|         |Support Promethus as metrics|
+|         |Support Skywalking as tracing|
+|         |Support streaming event store|
+|         |Support gRPC protocol|
+|         |Support MQTT protocol|
 
 ## Quick Start
-1. Build and deploy event-store([DeFiBus](https://github.com/WeBankFinTech/DeFiBus)), 
-   see instruction ['event-store quickstart'](docs/en/instructions/eventmesh-store-quickstart.md).
-2. Build and deploy eventmesh-emesher, see instruction ['eventmesh-emesher quickstart'](docs/en/instructions/eventmesh-emesher-quickstart.md).
-3. Run eventmesh-sdk-java demo, see instruction ['eventmesh-sdk-java quickstart'](docs/en/instructions/eventmesh-sdk-java-quickstart.md). 
+1. Build and deploy event-store(default RocketMQ), see [instruction](https://rocketmq.apache.org/docs/quick-start/).
+2. Build and deploy eventmesh-runtime, see instruction ['eventmesh-runtime quickstart'](docs/en/instructions/eventmesh-runtime-quickstart.md).
+3. Run eventmesh-sdk-java demo, see instruction ['eventmesh-sdk-java quickstart'](docs/en/instructions/eventmesh-sdk-java-quickstart.md).
 
 ## Contributing
-Contributions are always welcomed! Please see [CONTRIBUTING](CONTRIBUTING.md) for detailed guidelines
+Contributions are always welcomed! Please see [CONTRIBUTING](CONTRIBUTING.md) for detailed guidelines.
 
-You can start with the issues labeled with good first issue. 
-[GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)
+You can start with the issues labeled with good first issue.
+[GitHub Issues](https://github.com/apache/incubator-eventmesh/issues)
 
 ## License
-[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) Copyright (C) Apache Software Foundation
+[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) Copyright (C) Apache Software Foundation.
 
-## Contacts
+## Community
 WeChat group:
 
 ![wechat_qr](docs/images/mesh-helper.png)
 
+Mailing Lists:
 
+| Name | Description |Subscribe	|Unsubscribe|Archive
+| ----    | ----    |----    | ----    | ----    |
+|Users	|User support and questions mailing list|	[Subscribe](mailto:users-subscribe@eventmesh.incubator.apache.org)	|[Unsubscribe](mailto:users-unsubscribe@eventmesh.incubator.apache.org)	|[Mail Archives](https://lists.apache.org/list.html?users@eventmesh.apache.org)|
+|Development	|Development related discussions|	[Subscribe](mailto:dev-subscribe@eventmesh.incubator.apache.org)	|[Unsubscribe](mailto:dev-unsubscribe@eventmesh.incubator.apache.org)	|[Mail Archives](https://lists.apache.org/list.html?dev@eventmesh.apache.org)|
+|Commits	|All commits to repositories|	[Subscribe](mailto:commits-subscribe@eventmesh.incubator.apache.org)	|[Unsubscribe](mailto:commits-unsubscribe@eventmesh.incubator.apache.org)	|[Mail Archives](https://lists.apache.org/list.html?commits@eventmesh.apache.org)|
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 5ceb16a..8dadfaa 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -1,69 +1,87 @@
-[![Build Status](https://www.travis-ci.org/WeBankFinTech/DeFiBus.svg?branch=master)](https://www.travis-ci.org/WeBankFinTech/EventMesh)
-[![Coverage Status](https://coveralls.io/repos/github/WeBankFinTech/DeFiBus/badge.svg?branch=master)](https://coveralls.io/github/WeBankFinTech/EventMesh?branch=master)
-[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/WeBankFinTech/EventMesh/releases)
+# Apache EventMesh (incubating)
+[![CI status](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml/badge.svg)](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml)
+[![CodeCov](https://codecov.io/gh/apache/incubator-eventmesh/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/incubator-eventmesh)
+[![Language grade: Java](https://img.shields.io/lgtm/grade/java/g/apache/incubator-eventmesh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-eventmesh/context:java)
+[![Total alerts](https://img.shields.io/lgtm/alerts/g/apache/incubator-eventmesh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-eventmesh/alerts/)
+[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/apache/incubator-eventmesh/releases)
 [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
 
+![logo](docs/images/logo2.png)
 ## 什么是Event Mesh?
-该图显示了Event Mesh相对于应用程序框架中其他类似技术(例如Service Mesh)的定位.
+EventMesh是一个动态的云原生事件驱动架构基础设施,用于分离应用程序和后端中间件层,它支持广泛的用例,包括复杂的混合云、使用了不同技术栈的分布式架构。
+
+![architecture1](docs/images/eventmesh-multi-runtime.png)
+
+**EventMesh生态:**
 ![architecture1](docs/images/eventmesh-define.png)
 
-Event Mesh是一个动态的插件式云原生基础服务层,用于分离应用程序和中间件层。它提供了灵活,可靠和快速的事件分发,并且可以进行管理:
-![architecture1](docs/images/eventmesher.png)
+**EventMesh架构:**
+
+![architecture1](docs/images/eventmesh-runtime.png)
+
+**EventMesh云原生结构:**
+
+![architecture2](docs/images/eventmesh-panels.png)
 
-云原生Event Mesh:
-![architecture2](docs/images/bus.png)
+**支持连接的事件存储:**
 
-Event Mesh允许将来自一个应用程序的事件动态路由到任何其他应用程序.
-Event Mesh的一般功能:
-* 事件驱动;
-* 事件治理;
-* 动态路由;
-* 云原生
+* [RocketMQ](https://github.com/apache/rocketmq):RocketMQ是一个分布式消息流平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的可伸缩性。
 
-依赖部件:
-* DeFiBus:具有低延迟,高性能和可靠性,和灵活可伸缩性的分布式消息传递平台 [DeFiBus](https://github.com/WeBankFinTech/DeFiBus)
-* RocketMQ
+**关键部件:**
 
-关键部件:
-* eventmesh-emesher:一种中间件,用于在事件产生者和使用者之间传输事件,支持云原生应用程序和微服务
-* eventmesh-sdk-java:当前支持HTTP和TCP协议,未来会支持gRPC等
-* eventmesh-registry:自动在连接到单独事件网格器的应用程序和服务之间路由事件, 管理emesher
+* **eventmesh-runtime**:一种中间件,用于在事件产生者和使用者之间传输事件,支持云原生应用程序和微服务
+* **eventmesh-sdk-java**:当前支持HTTP和TCP协议,未来会支持gRPC等
+* **eventmesh-connector-api**:一个基于OpenMessaging api和SPI插件机制的接口层,可以有很多不同的事件存储的实现,比如IMDG,Messaging Engine和OSS等
+* **eventmesh-connector-rocketmq** : 一种基于eventmesh-connector-api的实现,该实现支持将RocketMQ作为事件存储,实现事件的发布与订阅
+
+**通信协议:**
+
+eventmesh的通信协议更加简洁方便,详细内容,阅读更多[这里](docs/cn/instructions/eventmesh-runtime-protocol.zh-CN.md)
 
 ## RoadMap
 | version | feature |
 | ----    | ----    |
-| v1.0.0  |Support DeFiBus as eventstore, support pub/sub, http api, java-sdk|
-| v1.1.0  |Support rocketmq as eventstore|
+| v1.0.0  |Support java-sdk , tcp pub/sub, http pub|
+| v1.1.0  |Support RocketMQ as eventstore|
 | v1.1.1  |Support https|
-| v1.2.0  |Support transaction event|
-| v1.3.0  |Support Plug-in architectur|
-|         |Support Event Sourcing|
-|         |Support Event orchestration|
-|         |Support Dashboard|
-|         |Support Event governance|
-|         |Support Nacos as an event router|
-|         |Support Promethus|
-|         |Support Skywalking|
-|         |Support Spiffe|
-|         |Support gRPC|
-|         |Support c/go/python/nodejs SDK|
+| v1.2.0  |Support EventMesh store layer pluggable by OpenMessaging Pub/Sub API, http sub, docker|
+| V1.3.0  |Support CloudEvents, Event Streaming|
+|         |Support Event function,triggers and bindings|
+|         |Support Event orchestration, Servelss workflow|
+|         |Support Event transaction|
+|         |Support Event schema|
+|         |Support Event governance, dashboard|
+|         |Support Event security|
+|         |Support multi language SDK(c\go\python\wasm)|
+|         |Support Promethus as metrics|
+|         |Support Skywalking as tracing|
+|         |Support streaming event store|
+|         |Support gRPC protocol|
+|         |Support MQTT protocol|
 
 ## 快速开始
-1. 构建并部署event-store([DeFiBus](https://github.com/WeBankFinTech/DeFiBus))
-   请参见说明['event-store quickstart.zh-CN'](docs/cn/instructions/eventmesh-store-quickstart.zh-CN.md)
-2. 构建并部署eventmesh-emesher,请参见说明['eventmesh-emesher quickstart.zh-CN'](docs/cn/instructions/eventmesh-emesher-quickstart.zh-CN.md)
+1. 构建并部署event-store(RocketMQ), 请参见[说明](https://rocketmq.apache.org/docs/quick-start/)
+2. 构建并部署eventmesh-runtime,请参见说明['eventmesh-runtime quickstart.zh-CN'](docs/cn/instructions/eventmesh-runtime-quickstart.zh-CN.md)
 3. 运行eventmesh-sdk-java演示,请参见说明['eventmesh-sdk-java quickstart.zh-CN'](docs/cn/instructions/eventmesh-sdk-java-quickstart.zh-CN.md)
 
 ## 贡献
 永远欢迎参与共建, 请参阅[贡献](CONTRIBUTING.zh-CN.md)了解详细指南
 
-您可以从问题开始. 
-[GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)
+您可以从问题开始.
+[GitHub Issues](https://github.com/apache/incubator-eventmesh/issues)
 
 ## License
 [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) Copyright (C) Apache Software Foundation
 
-## 联系人
+## 开发社区
 微信群:
 
 ![wechat_qr](docs/images/mesh-helper.png)
+
+Mailing Lists:
+
+| 列表名称 | 描述 |订阅	|取消订阅|邮件列表存档
+| ----    | ----    |----    | ----    | ----    |
+|Users	|用户支持与用户问题|	[点击订阅](mailto:users-subscribe@eventmesh.incubator.apache.org)	|[点击取消订阅](mailto:users-unsubscribe@eventmesh.incubator.apache.org)	|[邮件列表存档](https://lists.apache.org/list.html?users@eventmesh.apache.org)|
+|Development	|开发相关|	[点击订阅](mailto:dev-subscribe@eventmesh.incubator.apache.org)	|[点击取消订阅](mailto:dev-unsubscribe@eventmesh.incubator.apache.org)	|[邮件列表存档](https://lists.apache.org/list.html?dev@eventmesh.apache.org)|
+|Commits	|所有与仓库相关的commits信息通知|	[点击订阅](mailto:commits-subscribe@eventmesh.incubator.apache.org)	|[点击取消订阅](mailto:commits-unsubscribe@eventmesh.incubator.apache.org)	|[邮件列表存档](https://lists.apache.org/list.html?commits@eventmesh.apache.org)|
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index c419263..0000000
--- a/_config.yml
+++ /dev/null
@@ -1 +0,0 @@
-theme: jekyll-theme-cayman
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index bddbceb..12a2b00 100644
--- a/build.gradle
+++ b/build.gradle
@@ -17,6 +17,8 @@
 
 import java.util.concurrent.TimeUnit
 
+//import com.github.spotbugs.snom.SpotBugsTask
+
 buildscript {
     repositories {
         maven {
@@ -26,46 +28,66 @@ buildscript {
         maven {
             url "https://plugins.gradle.org/m2/"
         }
-
     }
 
     dependencies {
-        //classpath("net.sourceforge.pmd:pmd-java:5.4.1")
-        //classpath("com.puppycrawl.tools:checkstyle:6.16.1")
-        classpath("gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.0.7")
-        classpath('com.github.spotbugs:spotbugs:4.0.0')
+        classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.7.1"
     }
 }
 
 allprojects {
     apply plugin: 'java'
+    apply plugin: "eclipse"
+    apply plugin: "idea"
+    apply plugin: "project-reports"
+    apply plugin: "maven-publish"
+    apply plugin: "com.github.spotbugs"
+    apply plugin: "project-reports"
+    apply plugin: "jacoco"
+    apply plugin: "pmd"
+    apply plugin: "java-library"
+    apply plugin: 'signing'
+
+//    print(project)
+//    if (project.findProperty("jdk") == "1.7") {
+//        sourceCompatibility = 1.7
+//        targetCompatibility = 1.7
+//        version = version + "-jdk7"
+//    } else {
+//        sourceCompatibility = 1.8
+//        targetCompatibility = 1.8
+//        version = version + "-jdk8"
+//    }
+    [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
 
+    compileJava.options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
 
     clean.doFirst {
         delete 'build'
         delete 'dist'
+        delete 'out'
     }
 
-    if (project.findProperty("snapshot") instanceof String) {
-        if (project.property("snapshot").toBoolean())
-            version = version + "-SNAPSHOT"
+    if ((project.findProperty("snapshot") instanceof String) && (Boolean.valueOf(project.property("snapshot")))) {
+        version = version + "-SNAPSHOT"
     }
 }
 
 task tar(type: Tar) {
     extension = 'tar.gz'
     compression = Compression.GZIP
-    archiveName = project.name + '_' + project.version + '.' + extension
-    destinationDir = new File(projectDir, 'build')
+    archiveFileName = project.name + '_' + project.version + '.' + extension
+    destinationDirectory = new File(projectDir, 'build')
     into('/') {
         from 'dist'
     }
 }
 
+
 task zip(type: Zip) {
     extension = 'zip'
-    archiveName = project.name + '.' + project.version + '.' + extension
-    destinationDir = new File(projectDir, 'build')
+    archiveFileName = project.name + '.' + project.version + '.' + extension
+    destinationDirectory = new File(projectDir, 'build')
     into('/') {
         from 'dist'
     }
@@ -73,33 +95,95 @@ task zip(type: Zip) {
 
 subprojects {
 
+    List fastjson = [
+            "com.alibaba:fastjson:1.2.71"
+    ]
 
-    apply plugin: "maven"
-    apply plugin: "eclipse"
-    apply plugin: "idea"
-    apply plugin: "project-reports"
-    apply plugin: "jacoco"
-//    apply plugin: "checkstyle"
-    apply plugin: "pmd"
-    apply plugin: 'com.github.spotbugs'
+    List jackson = [
+            'com.fasterxml.jackson.core:jackson-databind:2.11.0',
+            'com.fasterxml.jackson.core:jackson-core:2.11.0',
+            'com.fasterxml.jackson.core:jackson-annotations:2.11.0'
+    ]
 
-    [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
+    List apache_commons = [
+            "org.apache.commons:commons-lang3:3.6",
+            "org.apache.commons:commons-collections4:4.1"
+    ]
 
-    compileJava.options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
+    List httpclient = [
+            "org.apache.httpcomponents:httpclient:4.5.2"
+    ]
+
+    List guava = [
+            "com.google.guava:guava:29.0-jre"
+    ]
+
+    List netty = [
+            "io.netty:netty-all:4.1.49.Final"
+    ]
+
+    List junit = [
+            "junit:junit:4.12"
+    ]
+
+    List log = [
+            "org.slf4j:slf4j-api:1.7.30"
+    ]
+
+    List log4j2 = [
+            "org.apache.logging.log4j:log4j-api:2.13.3",
+            "org.apache.logging.log4j:log4j-core:2.13.3",
+            "org.apache.logging.log4j:log4j-slf4j-impl:2.13.3",
+            "org.apache.logging.log4j:log4j-web:2.13.3",
+            "com.lmax:disruptor:3.4.2"
+    ]
+
+    List common = [
+            "commons-io:commons-io:2.4",
+            "org.apache.commons:commons-text:1.9"
+    ]
+
+    List assertj = [
+            "org.assertj:assertj-core:2.6.0"
+    ]
+
+    List mock = [
+            "org.mockito:mockito-core:2.23.0",
+            "org.powermock:powermock-module-junit4:2.0.2",
+            "org.powermock:powermock-api-mockito2:2.0.2",
+    ]
+
+    dependencies {
+        implementation apache_commons, guava, log, log4j2, fastjson, jackson, common, httpclient, netty
+        testImplementation apache_commons, guava, log, log4j2, fastjson, jackson, common, junit, assertj, mock, httpclient, netty
+        spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.11.0'
+        spotbugsPlugins 'com.mebigfatguy.fb-contrib:fb-contrib:7.4.7'
+    }
+
+    sourceSets {
+        main {
+            java.srcDirs = ['src/main/java']
+        }
+
+        test {
+            java.srcDirs = ['src/test/java']
+        }
+    }
+
+    clean.doFirst {
+        delete 'build'
+        delete 'dist'
+    }
 
     jacoco {
-        toolVersion = "0.8.5"
-        reportsDir = file("$buildDir/reports/jacoco")
+        toolVersion = "0.8.6"
     }
 
     jacocoTestReport {
-//        sourceSets sourceSets.main
-//        executionData files("$buildDir/jacoco/jacocoTest.exec")
-
         reports {
-            xml.enabled false
+            xml.enabled true
             csv.enabled false
-            html.destination file("${buildDir}/reports/jacoco")
+            html.enabled false
         }
     }
 
@@ -117,99 +201,91 @@ subprojects {
 //            html.enabled true
 //        }
 //    }
+//
+//    sourceSets {
+//        main {
+//            java {
+//                srcDir 'src/main/java'
+//            }
+//
+//            resources {
+//                srcDir 'src/main/resources'
+//            }
+//
+//        }
+//
+//        test {
+//            java {
+//                srcDir 'src/test/java'
+//            }
+//
+//            resources {
+//                srcDir 'src/test/resources'
+//            }
+//
+//        }
+//    }
 
     spotbugs {
-        toolVersion = '4.0.2'
+        //toolVersion = '4.2.3'
         ignoreFailures = true
-        effort = "default"
-        reportLevel = "default"
         showProgress = true
+        showStackTraces = true
+        //reportLevel = 'default'
+        effort = 'default'
+        //visitors = [ 'FindSqlInjection', 'SwitchFallthrough' ]
+        //omitVisitors = [ 'FindNonShortCircuit' ]
+        reportsDir = file("$buildDir/reports/spotbugs")
+        //includeFilter = file('spotbugs-include.xml')
+        //excludeFilter = file('spotbugs-exclude.xml')
+        //onlyAnalyze = ['org/apache/eventmesh/**']
+        projectName = rootProject.name
+        release = version
+        extraArgs = ['-nested:false']
+        //jvmArgs = [ '-Duser.language=zh' ]
+        maxHeapSize = '256m'
+
     }
 
-//    tasks.withType(com.github.spotbugs.SpotBugsTask) {
-//        sourceDirs = [sourceSets.main]
-//        reports {
-//            xml.enabled = false
-//            html.enabled = true
-//        }
-//    }
     spotbugsMain {
+
         reports {
             xml.enabled = false
-            html.enabled = true
+            html {
+                enabled = true
+                destination = file("$buildDir/reports/spotbugs/main/spotbugs.html")
+                stylesheet = 'fancy-hist.xsl'
+            }
         }
     }
 
     spotbugsTest {
         reports {
             xml.enabled = false
-            html.enabled = true
+            html {
+                enabled = true
+                destination = file("$buildDir/reports/spotbugs/test/spotbugs.html")
+                stylesheet = 'fancy-hist.xsl'
+            }
         }
     }
 
-    tasks.withType(Pmd) {
-        reports {
-            xml.enabled = false
-            html.enabled = true
-        }
-    }
+//        tasks.withType(Pmd) {
+//            reports {
+//                xml.enabled = false
+//                html.enabled = true
+//            }
+//        }
 
 
     pmd {
         consoleOutput = true
         toolVersion = "6.23.0"
-        rulePriority = 5
+        rulesMinimumPriority = 5
         ruleSets = ["category/java/errorprone.xml", "category/java/bestpractices.xml"]
         ignoreFailures = true
     }
 
-
-
-    List junit = [
-            "junit:junit:4.12"
-    ]
-
-    List apache_commons = [
-            "org.apache.commons:commons-collections4:4.1",
-            "commons-beanutils:commons-beanutils:1.9.3",
-            "org.apache.commons:commons-lang3:3.6",
-            "commons-codec:commons-codec:1.10"
-
-    ]
-
-    List log = [
-            "org.slf4j:slf4j-api:1.7.30"
-    ]
-
-    List guava = [
-            "com.google.guava:guava:29.0-jre"
-    ]
-
-    List fastjson = [
-            "com.alibaba:fastjson:1.2.71"
-    ]
-
-    List common_io = [
-            "commons-io:commons-io:2.4"
-    ]
-
-    List assertj = [
-            "org.assertj:assertj-core:2.6.0"
-    ]
-
-    List mock = [
-//        "org.mockito:mockito-core:1.10.19",
-"org.mockito:mockito-core:2.23.0",
-"org.powermock:powermock-module-junit4:2.0.2",
-"org.powermock:powermock-api-mockito2:2.0.2",
-    ]
-
-    dependencies {
-        compile apache_commons, guava, log, fastjson, common_io
-        testCompile apache_commons, guava, log, fastjson, common_io, junit, assertj, mock
-        runtime apache_commons, guava, log, fastjson, common_io
-    }
-
     jar {
         manifest {
             attributes("Specification-Version": project.version,
@@ -235,10 +311,15 @@ subprojects {
             copy {
                 into('../dist/apps/')
                 from project.jar.getArchivePath()
+                exclude 'eventmesh-common*.jar'
+                exclude 'eventmesh-connector-api*.jar'
+                exclude 'eventmesh-starter*.jar'
+                exclude 'eventmesh-test*.jar'
+                exclude 'eventmesh-sdk*.jar'
             }
             copy {
                 into '../dist/lib'
-                from project.configurations.runtime
+                from project.configurations.runtimeClasspath
                 exclude '**/*.properties*'
                 exclude '**/*testng*.jar'
                 exclude '**/*powermock*.jar'
@@ -248,26 +329,27 @@ subprojects {
                 exclude '**/*log4j2.xml*'
                 exclude '**/spring-boot-devtools*.jar'
                 exclude '**/mumble-sdk-test*.jar'
-                exclude '**/defibus*.jar'
-                exclude '*log4j*.jar'
+                exclude '*connector-rocketmq*.jar'
+                exclude 'eventmesh-runtime*.jar'
+//                exclude '*log4j*.jar'
                 exclude 'commons-collections-3.2.2.jar'
             }
 
             copy {
                 into '../dist/bin'
-                from '../script'
+                from '../eventmesh-runtime/bin'
             }
 
             copy {
                 into '../dist/conf'
-                from '../conf/'
+                from '../eventmesh-runtime/conf'
             }
         }
     }
 
     javadoc {
         source = sourceSets.main.java
-        classpath = configurations.compile
+        //classpath = configurations.implementation
         destinationDir = reporting.file("javadoc")
     }
 
@@ -287,15 +369,82 @@ subprojects {
         archives packageSources
     }
 
+    if (!Boolean.valueOf(signEnabled)) {
+        tasks.whenTaskAdded {task ->
+            if(task.name.contains("sign")) {
+                task.enabled = false
+            }
+        }
+    }
+
     repositories {
         maven { url "https://maven.aliyun.com/repository/public" }
         mavenCentral()
+        mavenLocal()
     }
 
+
     configurations.all {
         resolutionStrategy.cacheChangingModulesFor 0, TimeUnit.SECONDS
         resolutionStrategy.cacheDynamicVersionsFor 0, TimeUnit.SECONDS
     }
 
+    publishing {
+        publications {
+            mavenJava(MavenPublication) {
+                from components.java
+                artifact packageSources
+                artifact packageJavadoc
+                versionMapping {
+                    usage('java-api') {
+                        fromResolutionOf('runtimeClasspath')
+                    }
+                    usage('java-runtime') {
+                        fromResolutionResult()
+                    }
+                }
+                pom {
+                    name = 'EventMesh'
+                    description = 'Apache EventMesh'
+                    url = 'https://github.com/apache/incubator-eventmesh'
+                    licenses {
+                        license {
+                            name = 'The Apache License, Version 2.0'
+                            url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+                        }
+                    }
+                    developers {
+                        developer {
+                            id = 'Apache EventMesh(incubating)'
+                            name = 'Apache EventMesh(incubating) of ASF'
+                            url = 'https://eventmesh.apache.org/'
+                        }
+                    }
+                    scm {
+                        connection = 'scm:git:git@github.com:apache/incubator-eventmesh.git'
+                        developerConnection = 'scm:git:git@github.com:apache/incubator-eventmesh.git'
+                        url = 'https://github.com/apache/incubator-eventmesh'
+                    }
+                }
+            }
+        }
+        repositories {
+            maven {
+                def releasesRepoUrl = 'https://repository.apache.org/content/repositories/releases/'
+                def snapshotsRepoUrl = 'https://repository.apache.org/content/repositories/snapshots/'
+                url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
+                credentials {
+                    username apacheUserName
+                    password apachePassWord
+                }
+
+            }
+        }
+    }
+
+    signing {
+        sign publishing.publications.mavenJava
+    }
+
 }
 
diff --git a/docker/centos7-jdk8/Dockerfile b/docker/centos7-jdk8/Dockerfile
new file mode 100644
index 0000000..7d96841
--- /dev/null
+++ b/docker/centos7-jdk8/Dockerfile
@@ -0,0 +1,31 @@
+#
+# 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.
+#
+
+FROM docker.io/centos:7
+
+MAINTAINER mikexue <mi...@126.com>
+
+RUN yum update -y && yum install net-tools -y && yum install lrzsz -y && yum install vim -y
+ADD jdk-8u281-linux-x64.tar.gz /usr/local/src/
+RUN ln -s /usr/local/src/jdk1.8.0_281/ /usr/local/jdk
+
+ENV JAVA_HOME /usr/local/jdk
+ENV JRE_HOME $JAVA_HOME/jre
+ENV CLASSPATH .:$JAVA_HOME/lib/:$JRE_HOME/lib/
+ENV PATH $PATH:$JAVA_HOME/bin
diff --git a/docker/eventmesh-rocketmq/Dockerfile b/docker/eventmesh-rocketmq/Dockerfile
new file mode 100644
index 0000000..5b61cc4
--- /dev/null
+++ b/docker/eventmesh-rocketmq/Dockerfile
@@ -0,0 +1,35 @@
+#
+# 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.
+#
+
+FROM centos7-jdk8:latest
+
+MAINTAINER mikexue mike_xwm@126.com
+
+WORKDIR /data
+RUN mkdir /data/app
+ADD EventMesh_1.2.0-SNAPSHOT.tar.gz  /data/app/eventmesh
+WORKDIR /data/app/eventmesh/bin
+
+EXPOSE 10000
+EXPOSE 10105
+
+ENV DOCKER true
+
+CMD sh start.sh
+
diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js
index 76c3bc6..870c593 100644
--- a/docs/.vuepress/config.js
+++ b/docs/.vuepress/config.js
@@ -1,74 +1,93 @@
+/*
+ * 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.
+ */
+
 module.exports = {
-  title: 'EventMesh',
-  description: 'EventMesh',
-  head: [
-    ['link', { rel: 'icon', href: '/logo.png' }]
-  ],
-  locales: {
-    '/': {
-      lang: 'English', 
-      title: 'EventMesh',
-      description: ''
-    },
-    '/cn/': {
-      lang: '中文',
-      title: 'EventMesh',
-      description: ''
-    },
-  },
-  themeConfig: {
+    title: 'EventMesh',
+    description: 'EventMesh',
+    head: [
+        ['link', {rel: 'icon', href: '/logo.png'}]
+    ],
     locales: {
-      '/': {
-        selectText: 'Languages',
-        label: 'English',
-        ariaLabel: 'Languages',
-        nav: [
-          { text: 'Community', link: '/en/community/' },
-          { 
-            text: 'Blog', 
-            link: '/en/blog/'
-          },
-          { 
-            text: 'Documentation', link: '/en/documentation/'
-          },
-          { text: 'Github', link: 'https://github.com/WeBankFinTech/EventMesh'},
-        ],
-      },
-      '/en/': {
-        selectText: 'Languages',
-        label: 'English',
-        ariaLabel: 'Languages',
-        nav: [
-          { text: 'Community', link: '/en/community/' },
-          { 
-           text: 'Blog', 
-            link: '/en/blog/'
-          },
-          { 
-            text: 'Documentation', link: '/en/documentation/'
-          },
-          { text: 'Github', link: 'https://github.com/WeBankFinTech/EventMesh'},
-        ],
-      },
-      '/cn/': {
-        // 多语言下拉菜单的标题
-        selectText: '选择语言',
-        // 该语言在下拉菜单中的标签
-        label: '简体中文',
-        nav: [
-          { text: '社区', link: '/cn/community/' },
-          { 
-            text: '博客', 
-            link: '/cn/blog/'
-          },
-          { 
-            text: '文档', link: '/en/documentation/'
-          },
-          { text: 'Github', link: 'https://github.com/WeBankFinTech/EventMesh'},
-        ],
-      }
+        '/': {
+            lang: 'English',
+            title: 'EventMesh',
+            description: ''
+        },
+        '/cn/': {
+            lang: '中文',
+            title: 'EventMesh',
+            description: ''
+        },
     },
-    
-    sidebar: true
-  }
+    themeConfig: {
+        locales: {
+            '/': {
+                selectText: 'Languages',
+                label: 'English',
+                ariaLabel: 'Languages',
+                nav: [
+                    {text: 'Community', link: '/en/community/'},
+                    {
+                        text: 'Blog',
+                        link: '/en/blog/'
+                    },
+                    {
+                        text: 'Documentation', link: '/en/documentation/'
+                    },
+                    {text: 'Github', link: 'https://github.com/WeBankFinTech/EventMesh'},
+                ],
+            },
+            '/en/': {
+                selectText: 'Languages',
+                label: 'English',
+                ariaLabel: 'Languages',
+                nav: [
+                    {text: 'Community', link: '/en/community/'},
+                    {
+                        text: 'Blog',
+                        link: '/en/blog/'
+                    },
+                    {
+                        text: 'Documentation', link: '/en/documentation/'
+                    },
+                    {text: 'Github', link: 'https://github.com/WeBankFinTech/EventMesh'},
+                ],
+            },
+            '/cn/': {
+                // 多语言下拉菜单的标题
+                selectText: '选择语言',
+                // 该语言在下拉菜单中的标签
+                label: '简体中文',
+                nav: [
+                    {text: '社区', link: '/cn/community/'},
+                    {
+                        text: '博客',
+                        link: '/cn/blog/'
+                    },
+                    {
+                        text: '文档', link: '/en/documentation/'
+                    },
+                    {text: 'Github', link: 'https://github.com/WeBankFinTech/EventMesh'},
+                ],
+            }
+        },
+
+        sidebar: true
+    }
 }
diff --git a/docs/README.md b/docs/README.md
index e063bba..5909122 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,43 +1,56 @@
-[![Build Status](https://www.travis-ci.org/WeBankFinTech/DeFiBus.svg?branch=master)](https://www.travis-ci.org/WeBankFinTech/EventMesh)
-[![Coverage Status](https://coveralls.io/repos/github/WeBankFinTech/DeFiBus/badge.svg?branch=master)](https://coveralls.io/github/WeBankFinTech/EventMesh?branch=master)
-[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/WeBankFinTech/EventMesh/releases)
+# Apache EventMesh (Incubating)
+[![CI status](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml/badge.svg)](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml)
+[![CodeCov](https://codecov.io/gh/apache/incubator-eventmesh/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/incubator-eventmesh)
+[![Language grade: Java](https://img.shields.io/lgtm/grade/java/g/apache/incubator-eventmesh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-eventmesh/context:java)
+[![Total alerts](https://img.shields.io/lgtm/alerts/g/apache/incubator-eventmesh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-eventmesh/alerts/)
+[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/apache/incubator-eventmesh/releases)
 [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
 
 [点我查看中文版](cn/README.md)
 
 ## What is Event Mesh?
-This figure shows the positioning of the event mesh relative to other similar technologies (such as service mesh) in the application framework.
+
+EventMesh is a dynamic cloud-native eventing infrastruture used to decouple the application and backend middleware
+layer, which supports a wide range of use cases that encompass complex multi-cloud, widely distributed topologies using
+diverse technology stacks.
 ![architecture1](images/eventmesh-define.png)
 
-Event Mesh is a dynamic plug-in cloud-native basic service layer used to decouple the application and middleware layer. It provides flexible, reliable and fast event distribution, and can be managed.
-![architecture1](/images/eventmesher.png)
+**EventMesh Architecture:**
+
+![architecture1](images/eventmesh-runtime.png)
+
+**EventMesh Cloud Native Structure:**
 
-Cloud Native Event Mesh:
-![architecture2](/images/bus.png)
+![architecture2](images/eventmesh-panels.png)
+
+The event mesh allows events from one application to be dynamically routed to any other application. General functions
+of the event mesh:
 
-The event mesh allows events from one application to be dynamically routed to any other application.
-General functions of the event mesh:
 * Event driven;
 * Event governance;
 * Dynamic routing;
 * Cloud native
 
 Dependent components:
-* DeFiBus : a distributed messaging platform with low latency, high performance and reliability, flexible scalability. [DeFiBus](https://github.com/WeBankFinTech/DeFiBus)
-* RocketMQ
+
+* [RocketMQ](https://github.com/apache/rocketmq):RocketMQ is a distributed messaging and streaming platform with low
+  latency, high performance and reliability, trillion-level capacity and flexible scalability.
 
 Key components:
-* eventmesh-emesher : an middleware to transmit events between event producers and consumers, support cloud native apps and microservices
+
+* eventmesh-runtime : an middleware to transmit events between event producers and consumers, support cloud native apps
+  and microservices
 * eventmesh-sdk-java : currently supports HTTP and TCP protocols, and will support gRPC in the future
-* eventmesh-registry : automatically routes events between applications and services connected to seperate event meshers, manage eventmesh-emesher
 
 ## RoadMap
+
 | version | feature |
 | ----    | ----    |
-| v1.0.0  |Support DeFiBus as eventstore, support pub/sub, http api, java-sdk|
+| v1.0.0  |Support pub/sub, http api, java-sdk|
 | v1.1.0  |Support rocketmq as eventstore|
-| v1.2.0  |Support transaction event|
-| v1.3.0  |Support Plug-in architectur|
+| v1.2.0  |Support Plug-in architecture, support http sub,support cloud native deploy|
+| V1.3.0 |Support CloudEvents protocol|
+|   |Support transaction event|
 |         |Support Event Sourcing|
 |         |Support Event orchestration|
 |         |Support Dashboard|
@@ -47,26 +60,31 @@ Key components:
 |         |Support Skywalking|
 |         |Support Spiffe|
 |         |Support gRPC|
-|         |Support c/go/python/nodejs SDK|
+|         |Support c/go/python/NodeJs/wasm SDK|
 
 ## Quick Start
-1. Build and deploy event-store([DeFiBus](https://github.com/WeBankFinTech/DeFiBus)), 
-   see instruction ['event-store quickstart'](instructions/eventmesh-store-quickstart.md).
-2. Build and deploy eventmesh-emesher, see instruction ['eventmesh-emesher quickstart'](instructions/eventmesh-emesher-quickstart.md).
-3. Run eventmesh-sdk-java demo, see instruction ['eventmesh-sdk-java quickstart'](instructions/eventmesh-sdk-java-quickstart.md). 
+
+1. Build and deploy event-store(RocketMQ), see [instruction](https://rocketmq.apache.org/docs/quick-start/).
+2. Build and deploy eventmesh-runtime, see
+   instruction ['eventmesh-runtime quickstart'](en/instructions/eventmesh-runtime-quickstart.md).
+3. Run eventmesh-sdk-java demo, see
+   instruction ['eventmesh-sdk-java quickstart'](en/instructions/eventmesh-sdk-java-quickstart.md).
 
 ## Contributing
-Contributions are always welcomed! Please see [CONTRIBUTING](CONTRIBUTING.md) for detailed guidelines
 
-You can start with the issues labeled with good first issue. 
+Contributions are always welcomed! Please see [CONTRIBUTING](../CONTRIBUTING.md) for detailed guidelines
+
+You can start with the issues labeled with good first issue.
 [GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)
 
 ## License
+
 [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) Copyright (C) Apache Software Foundation
 
 ## Contacts
+
 WeChat group:
 
-![wechat_qr](/images/mesh-helper.png)
+![wechat_qr](images/mesh-helper.png)
 
 
diff --git a/docs/_config.yml b/docs/_config.yml
index c419263..3ef20c1 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -1 +1,20 @@
-theme: jekyll-theme-cayman
\ No newline at end of file
+#
+# 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.
+#
+
+theme: jekyll-theme-cayman
diff --git a/docs/cn/README.md b/docs/cn/README.md
index ff6141c..3aae2a3 100644
--- a/docs/cn/README.md
+++ b/docs/cn/README.md
@@ -1,41 +1,50 @@
-[![Build Status](https://www.travis-ci.org/WeBankFinTech/DeFiBus.svg?branch=master)](https://www.travis-ci.org/WeBankFinTech/EventMesh)
-[![Coverage Status](https://coveralls.io/repos/github/WeBankFinTech/DeFiBus/badge.svg?branch=master)](https://coveralls.io/github/WeBankFinTech/EventMesh?branch=master)
-[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/WeBankFinTech/EventMesh/releases)
+# Apache EventMesh (Incubating)
+[![CI status](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml/badge.svg)](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml)
+[![CodeCov](https://codecov.io/gh/apache/incubator-eventmesh/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/incubator-eventmesh)
+[![Language grade: Java](https://img.shields.io/lgtm/grade/java/g/apache/incubator-eventmesh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-eventmesh/context:java)
+[![Total alerts](https://img.shields.io/lgtm/alerts/g/apache/incubator-eventmesh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-eventmesh/alerts/)
+[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/apache/incubator-eventmesh/releases)
 [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
 
 ## 什么是Event Mesh?
-该图显示了Event Mesh相对于应用程序框架中其他类似技术(例如Service Mesh)的定位.
-![architecture1](/images/eventmesh-define.png)
 
-Event Mesh是一个动态的插件式云原生基础服务层,用于分离应用程序和中间件层。它提供了灵活,可靠和快速的事件分发,并且可以进行管理:
-![architecture1](/images/eventmesher.png)
+EventMesh是一个动态的云原生事件驱动架构基础设施,用于分离应用程序和后端中间件层,它支持广泛的用例,包括复杂的混合云、使用了不同技术栈的分布式架构。
 
-云原生Event Mesh:
-![architecture2](/images/bus.png)
+![architecture1](../images/eventmesh-define.png)
+
+**EventMesh架构:**
+
+![architecture1](../images/eventmesh-runtime.png)
+
+**EventMesh云原生结构:**
+
+![architecture2](../images/eventmesh-panels.png)
+
+Event Mesh允许将来自一个应用程序的事件动态路由到任何其他应用程序. Event Mesh的一般功能:
 
-Event Mesh允许将来自一个应用程序的事件动态路由到任何其他应用程序.
-Event Mesh的一般功能:
 * 事件驱动;
 * 事件治理;
 * 动态路由;
 * 云原生
 
 依赖部件:
-* DeFiBus:具有低延迟,高性能和可靠性,和灵活可伸缩性的分布式消息传递平台 [DeFiBus](https://github.com/WeBankFinTech/DeFiBus)
-* RocketMQ
+
+* [RocketMQ](https://github.com/apache/rocketmq):RocketMQ是一个分布式消息流平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的可伸缩性。
 
 关键部件:
-* eventmesh-emesher:一种中间件,用于在事件产生者和使用者之间传输事件,支持云原生应用程序和微服务
+
+* eventmesh-runtime:一种中间件,用于在事件产生者和使用者之间传输事件,支持云原生应用程序和微服务
 * eventmesh-sdk-java:当前支持HTTP和TCP协议,未来会支持gRPC等
-* eventmesh-registry:自动在连接到单独事件网格器的应用程序和服务之间路由事件, 管理emesher
 
 ## RoadMap
+
 | version | feature |
 | ----    | ----    |
-| v1.0.0  |Support DeFiBus as eventstore, support pub/sub, http api, java-sdk|
+| v1.0.0  |Support pub/sub, http api, java-sdk|
 | v1.1.0  |Support rocketmq as eventstore|
-| v1.2.0  |Support transaction event|
-| v1.3.0  |Support Plug-in architectur|
+| v1.2.0  |Support Plug-in architecture, support http sub|
+| V1.3.0 |Support CloudEvents protocol|
+|   |Support transaction event|
 |         |Support Event Sourcing|
 |         |Support Event orchestration|
 |         |Support Dashboard|
@@ -45,24 +54,27 @@ Event Mesh的一般功能:
 |         |Support Skywalking|
 |         |Support Spiffe|
 |         |Support gRPC|
-|         |Support c/go/python/nodejs SDK|
+|         |Support c/go/python/NodeJs/wasm SDK|
 
 ## 快速开始
-1. 构建并部署event-store([DeFiBus](https://github.com/WeBankFinTech/DeFiBus))
-   请参见说明['event-store quickstart'](instructions/eventmesh-store-quickstart.md)
-2. 构建并部署eventmesh-emesher,请参见说明['eventmesh-emesher quickstart'](   instructions/eventmesh-emesher-quickstart.md)
-3. 运行eventmesh-sdk-java演示,请参见说明['eventmesh-sdk-java quickstart'](instructions/eventmesh-sdk-java-quickstart.md)
+
+1. 构建并部署event-store(RocketMQ), 请参见[说明](https://rocketmq.apache.org/docs/quick-start/)
+2. 构建并部署eventmesh-runtime,请参见说明['eventmesh-runtime quickstart'](instructions/eventmesh-runtime-quickstart.zh-CN.md)
+3. 运行eventmesh-sdk-java演示,请参见说明['eventmesh-sdk-java quickstart'](instructions/eventmesh-sdk-java-quickstart.zh-CN.md)
 
 ## 贡献
-永远欢迎参与共建, 请参阅[贡献](CONTRIBUTING.md)了解详细指南
 
-您可以从问题开始. 
-[GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)
+永远欢迎参与共建, 请参阅[贡献](../../CONTRIBUTING.zh-CN.md)了解详细指南
+
+您可以从问题开始.
+[GitHub Issues](https://github.com/apache/incubator-eventmesh/issues)
 
 ## License
+
 [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) Copyright (C) Apache Software Foundation
 
 ## 联系人
+
 微信群:
 
-![wechat_qr](/images/mesh-helper.png)
+![wechat_qr](../images/mesh-helper.png)
diff --git a/docs/cn/features/0-introduction.md b/docs/cn/features/0-introduction.md
deleted file mode 100644
index 195054f..0000000
--- a/docs/cn/features/0-introduction.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# DeFiBus
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-**DeFiBus=RPC+MQ,是基于开源消息中间件打造的安全可靠的分布式金融级消息总线。DeFibus不仅提供了RPC同步调用,还提供了MQ的异步事件通知、事件组播和广播等常用服务调用和消息模式,同时增加了应用多中心多活、服务就近、灰度发布等分布式场景下的高可用能力。在对于机器故障的容错能力方面的增强,也让消息总线的服务更加稳定可靠,为业务提供7x24的服务。**
-
-### 整体架构  
-<div align=center>
-
-![architecture1](../../../docs/images/features/a-distributing-architecture-in-financial.png)
-
-</div>
-
-![architecture2](../../../docs/images/features/architecture-p1.png)
-  
-DeFiBus主要包括以下几个组件(模块):  
-
-* **Broker**:通过轻量的Topic和Queue机制提供消息存储功能。Broker定期将Topic信息上报到NameServer中,同集群中的Broker实例上报的NameServer必须保持一致,避免路由信息不一致。  
-
-* **NameServer**:NameServer提供Topic的发现和路由,每一个NameServer接受Broker上报的Topic信息,并维护Topic的路由信息供客户端查询。  
-
-* **GSL**:全局服务定位(Global Service Location)服务提供服务级别的路由发现。服务可以部署在不同的区域(比如不同的数据中心、逻辑分区等),服务请求方在请求某一个具体服务时,无需关注服务部署的区域,GSL能够根据服务发现规则自动定位到具体的服务,将服务信息返回给客户端。  
-
-* **SGS**:服务治理系统(Service Government System)负责全局的服务管理,包括服务的申请、服务部署规划、服务下线等服务全生命周期的管理。在DeFiBus中,服务与Topic一一对应,Topic的名称由对应的服务按照一定的规则来命名。Topic的创建、更新和删除由SGS统一管理。SGS在服务的部署区域对应的Broker集群中创建Topic之后,将更新全局服务路由数据,供GSL定位服务使用。
-
-* **Proxy**:服务代理(Proxy)提供HTTP接入方式,同时允许按照协议规范开发的C、GO、Python等其他语言客户端的接入。
-
-### 服务和Topic的定义
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-DeFiBus把服务和Topic做了一一对应,每个服务必须对应一个Topic。Topic根据服务的唯一ID和服务的部署区域来命名。每个服务需要有服务的唯一标识,可以用数字ID或者字符串来表示。每个部署区域使用3位长度的字符串(限数字和字母构成)表示。  
-Topic按照如下格式来命名:
-```
-[区域代码]-[服务唯一ID]
-```
-
-比如,余额查询服务的服务ID为20190001表示,部署在“A10”这个区域,那么该服务在A10区域的Topic就命名为“A10-20190001”。Topic的命名规则
-
-
-### 特性列表:
-* [RPC调用:即“Request-Reply”模式,支持系统间的同步调用](docs/cn/features/1-request-response-call.md)
-* 消息发布/订阅:消息的发布和订阅
-* [灰度发布:服务级别的灰度发布](docs/cn/features/2-dark-launch.md)
-* [熔断机制:应用实例级别的熔断](docs/cn/features/3-circuit-break-mechanism.md)
-* [服务就近:就近进行服务的请求和响应,减少跨区调用](docs/cn/features/4-invoke-service-nearby.md)
-* [应用多活:应用多中心多活](docs/cn/features/5-multi-active.md)
-* [动态扩缩队列 :自适应应用实例数量,动态调整队列个数](docs/cn/features/6-dynamic-adjust-queue.md)
-* [容错机制:故障和错误隔离](docs/cn/features/8-fault-tolerant.md)
-* 服务路由和定位:动态路由及定位(后续开源)
-* 服务代理:HTTP及多语言的代理(后续开源)
-* 服务治理:服务元数据的管理(后续开源)
-* 平滑升级:平滑升级、平滑扩容(后续开源)
\ No newline at end of file
diff --git a/docs/cn/features/1-request-response-call.md b/docs/cn/features/1-request-response-call.md
deleted file mode 100644
index 1feabaf..0000000
--- a/docs/cn/features/1-request-response-call.md
+++ /dev/null
@@ -1,34 +0,0 @@
-## 1. Request-Reply同步调用
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-Request-Reply同步调用指的是请求方发出一条消息之后,需要响应方在消费完这条消息后回复一个响应结果。
-
-<div align=center>
-
-![RR](../../images/features/RR-call-p1.png)
-
-</div>
-
-整个调用过程包含了两个消息的产生和消费过程。  
-**1.请求方产生请求消息,服务响应方消费这条请求消息**  
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-请求方根据服务提供方的协议将请求内容设置到消息体中,并将消息发送到Broker上。服务响应方订阅相应的Topic,从Broker上获取到请求消息,并消费。
-
-**2.服务响应方产生响应消息,请求方接收这条响应消息**  
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-服务响应方收到请求消息后,执行相应的处理,并将请求结果设置到响应消息的消息体中,将响应消息发送到Broker上。请求方接收响应消息的方式采用的是Broker推送的形式,而不是由Producer订阅的方式,从而使得响应消息能够精准回到发出请求消息的实例上。  
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-DeFiBus在每条请求消息中增加REPLY_TO属性来唯一标识每一个请求方实例。在创建响应消息时将REPLY_TO属性透传到响应消息中。Broker收到响应消息后,根据REPLY_TO属性,查找出对应的请求方实例的连接,将响应消息推送给该请求方实例。
-
-
----
-#### Links:
-* [架构介绍](../../../README.md)
-* [Request-Reply调用](docs/cn/features/1-request-response-call.md)
-* [灰度发布](docs/cn/features/2-dark-launch.md)
-* [熔断机制](docs/cn/features/3-circuit-break-mechanism.md)
-* [服务就近](docs/cn/features/4-invoke-service-nearby.md)
-* [应用多活](docs/cn/features/5-multi-active.md)
-* [动态扩缩队列](docs/cn/features/6-dynamic-adjust-queue.md)
-* [容错机制](docs/cn/features/8-fault-tolerant.md)
\ No newline at end of file
diff --git a/docs/cn/features/10-flow-control.md b/docs/cn/features/10-flow-control.md
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/cn/features/2-dark-launch.md b/docs/cn/features/2-dark-launch.md
deleted file mode 100644
index e6e7e20..0000000
--- a/docs/cn/features/2-dark-launch.md
+++ /dev/null
@@ -1,24 +0,0 @@
-## 2.灰度发布
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-同一个消费组中的消费者实例通常订阅的Topic是相同的。在有新业务上线时,我们希望仅仅在个别实例上进行灰度,验证通过之后再进行全量。DeFiBus提供了灰度发布的能力,同一个消费组中,允许不同消费者实例订阅不同的Topic,只有订阅了某个具体Topic的实例才能够收到这个Topic的消息,同消费组中没有订阅这个Topic的实例不会收到消息。
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-假设一个消费组有3个消费者实例,上线初期只涉及到Topic1和Topic2。当业务扩展,需要增加Topic3的订阅时,可以先灰度其中一个实例,验证Topic3在灰度实例上执行正常之后,逐步再替换其他实例。在这期间,实例1和实例2不会收到Topic3的消息。
-
-<div align=center>
-
-![avater](../../images/features/dark-launch-p1.png)
-
-</div>
-
----
-#### Links:
-* [架构介绍](../../../README.md)
-* [Request-Reply调用](docs/cn/features/1-request-response-call.md)
-* [灰度发布](docs/cn/features/2-dark-launch.md)
-* [熔断机制](docs/cn/features/3-circuit-break-mechanism.md)
-* [服务就近](docs/cn/features/4-invoke-service-nearby.md)
-* [应用多活](docs/cn/features/5-multi-active.md)
-* [动态扩缩队列](docs/cn/features/6-dynamic-adjust-queue.md)
-* [容错机制](docs/cn/features/8-fault-tolerant.md)
\ No newline at end of file
diff --git a/docs/cn/features/3-circuit-break-mechanism.md b/docs/cn/features/3-circuit-break-mechanism.md
deleted file mode 100644
index 06eec22..0000000
--- a/docs/cn/features/3-circuit-break-mechanism.md
+++ /dev/null
@@ -1,25 +0,0 @@
-## 3.熔断
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-DeFiBus基于队列来做消费端的负载均衡,对同一个消费组,除广播模式外,每个队列只由一个消费者实例消费。当一个实例处理能力下降或者异常出现消息堆积时,为了避免堆积情况继续加剧,DeFiBus会触发队列的熔断,此时生产者实例在感知到队列熔断之后,会优先把消息发送到其他没有熔断的队列上,暂停往熔断队列上写入新消息。当堆积消除后,熔断被解除,生产者恢复往该队列发送消息。
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-DeFiBus对每个Topic定义了深度的属性,表示Topic的队列允许堆积的最大消息条数。消息堆积数表示队列中尚未下发给消费者实例的消息条数,可由队列中最新一条消息的offset与消费者实例已经获取到的消息的offset的差值计算。
-<div align=center>
-
-![offset](../../../docs/images/features/circuit-break-p1.png)
-
-</div>
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-当Consumer出现异常或者触发了流控,Consumer拉消息过程受阻,队列的DeliverOffset停止不前,新消息持续写入,MaxOffset不断变大,最终MaxOffset与DeliverOffset将超过Topic的最大深度限制,触发队列熔断。
-
----
-#### Links:
-* [架构介绍](../../../README.md)
-* [Request-Reply调用](docs/cn/features/1-request-response-call.md)
-* [灰度发布](docs/cn/features/2-dark-launch.md)
-* [熔断机制](docs/cn/features/3-circuit-break-mechanism.md)
-* [服务就近](docs/cn/features/4-invoke-service-nearby.md)
-* [应用多活](docs/cn/features/5-multi-active.md)
-* [动态扩缩队列](docs/cn/features/6-dynamic-adjust-queue.md)
-* [容错机制](docs/cn/features/8-fault-tolerant.md)
diff --git a/docs/cn/features/4-invoke-service-nearby.md b/docs/cn/features/4-invoke-service-nearby.md
deleted file mode 100644
index 209940c..0000000
--- a/docs/cn/features/4-invoke-service-nearby.md
+++ /dev/null
@@ -1,29 +0,0 @@
-## 4.服务就近
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-为了保证高可用,服务的部署通常分布在多个机房、区域。我们希望服务之间能够就近调用,减少跨机房跨区域网络访问的时延问题。对此,DeFiBus在Broker和客户端上都增加了区域的属性来标识实例属于哪个区域。对于Producer,消息会优先发往同区域内的Broker集群上;对于Consumer,则优先监听同区域内的Queue;当一个区域内没有Consumer实例监听时,则由其他区域的Consumer实例跨区域监听。
-
-### 就近发送
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-在创建Producer时,通过设置```DeFiBusClientConfig.setClusterPrefix("your region")```来标识Producer实例所在的区域。Producer在每次发送消息会先选则一个Queue来作为发送的目标队列。当启用就近发送时,Producer优先选择与自己同区域内的Queue,当本区域内没有可用Queue时,则选择其他区域的Queue。
-<div align=center>
-<img src="../../images/features/invoke_nearby-p1.png" width="600" />
-</div>
-
-### 就近监听
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-就近监听指的是Consumer在做负载均衡分配Queue的时候,每个区域内的Queue只由该区域内的Consumer监听和消费,当且仅当一个区域内没有订阅该Topic的Consumer时,由其他区域订阅了该Topic的Consumer跨区域监听和消费这些Queue。虽然Consumer是在同区域内就近消费,但仍通过心跳维持跨区域的连接,以保证能够随时跨区域接管消费。
-
-<div align=center>
-<img src="../../images/features/subscribe-nearby-p1.png" width="600" />
-</div>
-
----
-#### Links:
-* [架构介绍](../../../README.md)
-* [Request-Reply调用](docs/cn/features/1-request-response-call.md)
-* [灰度发布](docs/cn/features/2-dark-launch.md)
-* [熔断机制](docs/cn/features/3-circuit-break-mechanism.md)
-* [服务就近](docs/cn/features/4-invoke-service-nearby.md)
-* [应用多活](docs/cn/features/5-multi-active.md)
-* [动态扩缩队列](docs/cn/features/6-dynamic-adjust-queue.md)
-* [容错机制](docs/cn/features/8-fault-tolerant.md)
\ No newline at end of file
diff --git a/docs/cn/features/5-multi-active.md b/docs/cn/features/5-multi-active.md
deleted file mode 100644
index f243666..0000000
--- a/docs/cn/features/5-multi-active.md
+++ /dev/null
@@ -1,18 +0,0 @@
-## 5.同城多中心多活
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-同城多中心多活指的是应用的多活,在DeFiBus集群正常运行的情况下,应用部署在多个数据中心,一个数据中心的应用实例全部挂掉后,DeFiBus能够自动将应用流量切换到另一个数据中心的应用实例上,保证应用能够持续稳定地提供服务而不中断。同城多中心多活得益于DeFiBus的服务就近特性,结合应用部署的规划,使得正常情况下服务调用发生在同一个数据中心,当一个中心的应用出现故障时,能够有其他中心的实例接管服务。
-
-<div align=center>
-<img src="../../images/features/tongchengduohuo-p1.png" width="800" />
-</div>
-
----
-#### Links:
-* [架构介绍](../../../README.md)
-* [Request-Reply调用](docs/cn/features/1-request-response-call.md)
-* [灰度发布](docs/cn/features/2-dark-launch.md)
-* [熔断机制](docs/cn/features/3-circuit-break-mechanism.md)
-* [服务就近](docs/cn/features/4-invoke-service-nearby.md)
-* [应用多活](docs/cn/features/5-multi-active.md)
-* [动态扩缩队列](docs/cn/features/6-dynamic-adjust-queue.md)
-* [容错机制](docs/cn/features/8-fault-tolerant.md)
\ No newline at end of file
diff --git a/docs/cn/features/6-dynamic-adjust-queue.md b/docs/cn/features/6-dynamic-adjust-queue.md
deleted file mode 100644
index 9c27b7d..0000000
--- a/docs/cn/features/6-dynamic-adjust-queue.md
+++ /dev/null
@@ -1,35 +0,0 @@
-## 自动伸缩Queue
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-在同一个消费组内,每个队列只由一个实例消费。当队列数小于消费者实例数时,会有部分消费者实例分不到队列;反之,当队列数大于消费者实例数时,每个消费者需要消费多个队列。队列数不是消费者实例数的整数倍时,则会出现部分实例需要消费比同组内的其他实例更多的队列,出现负载不均衡问题。
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-DeFiBus提供了队列数量自动调整的特性。当有Consumer新注册或者去注册时,Broker触发队列的自动伸缩,根据当前在线的消费者实例个数,增加或者减少队列个数,使队列个数与消费者实例数保持一致。
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-当队列数需要增加时,首先调整Topic的ReadQueueNum,将可读的队列数扩增;10s之后,再调整Topic的WriteQueueNum,将可写的队列数扩增。这样使得新扩增的队列能够先被消费者感知并监听上,然后才让生产者感知到,往新队列上发送消息,是扩增操作更平滑。
-
-<div align=center>
-<img src="../../images/features/adjust-queue-expand-p1.png" width="500" />
-</div>
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-当队列数需要减少时,首先调整Topic的WriteQueueNum,将可写的队列数缩减;5分钟(默认,可配置)后先检查即将被缩减的队列中是否有消息没有被消费完,如果有,则继续延迟缩减操作,使消费者能够继续消费完队列中的消息;如果没有,则调整ReadQueueNum,将可写的队列数缩减。
-
-<div align=center>
-<img src="../../images/features/adjust-queue-shrink-p1.png" width="500" />
-</div>
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-对于多个消费组订阅相同Topic并且是集群消费模式时,在计算扩缩的队列个数时,以最大的消费组的消费者实例数为准,保证拥有最多实例数的消费组内每个消费者实例都能够分到Queue进行消费。
-
-
----
-#### Links:
-* [架构介绍](../../../README.md)
-* [Request-Reply调用](docs/cn/features/1-request-response-call.md)
-* [灰度发布](docs/cn/features/2-dark-launch.md)
-* [熔断机制](docs/cn/features/3-circuit-break-mechanism.md)
-* [服务就近](docs/cn/features/4-invoke-service-nearby.md)
-* [应用多活](docs/cn/features/5-multi-active.md)
-* [动态扩缩队列](docs/cn/features/6-dynamic-adjust-queue.md)
-* [容错机制](docs/cn/features/8-fault-tolerant.md)
\ No newline at end of file
diff --git a/docs/cn/features/7-isolation-mechanism.md b/docs/cn/features/7-isolation-mechanism.md
deleted file mode 100644
index 298efc4..0000000
--- a/docs/cn/features/7-isolation-mechanism.md
+++ /dev/null
@@ -1,23 +0,0 @@
-## 隔离机制
-Producer在往Topic发送消息时,会按照MessageQueueSelector定义的选择策略,从Topic的所有MessageQueue中选择一个作为目标队列发送消息。
-当队列发生熔断,或者Broker故障导致队列发送消息异常时,如果没有对这些队列进行特殊处理,下次再轮到发这个队列的时候仍然可能失败。
-
-DeFiBus提供异常队列的隔离机制,当往某个队列发送消息失败时,将队列标记为隔离状态,在隔离过期之前将不再往这个队列发送消息,避免再次失败,降低失败概率。
-
-异常队列隔离机制分为两步:  
-**-发现并标记队列为隔离**  
-在发送回调中更新发送队列的健康状态,如果执行的是onSuccess分支,则标记队列为健康,去除队列的隔离标记;如果执行的是onException分支,则标记队列为隔离状态。  
-
-**-不选择隔离中的队列发送消息**  
-在MessageQueueSelector中实现隔离机制的过滤逻辑,每次进行队列的选择时,优先从没有标记为隔离的队列中选择。当所有队列都被标记为隔离时,则从所有队列中选择,保证每次都要选出一个队列。
-
----
-#### Links:
-* [架构介绍](../../../README.md)
-* [Request-Reply调用](docs/cn/features/1-request-response-call.md)
-* [灰度发布](docs/cn/features/2-dark-launch.md)
-* [熔断机制](docs/cn/features/3-circuit-break-mechanism.md)
-* [服务就近](docs/cn/features/4-invoke-service-nearby.md)
-* [应用多活](docs/cn/features/5-multi-active.md)
-* [动态扩缩队列](docs/cn/features/6-dynamic-adjust-queue.md)
-* [容错机制](docs/cn/features/8-fault-tolerant.md)
\ No newline at end of file
diff --git a/docs/cn/features/8-fault-tolerant.md b/docs/cn/features/8-fault-tolerant.md
deleted file mode 100644
index f118c9d..0000000
--- a/docs/cn/features/8-fault-tolerant.md
+++ /dev/null
@@ -1,50 +0,0 @@
-## 8.容错机制
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-在金融场景下,对可用性和稳定性的要求非常高,中间件对机器故障、网络故障、应用故障以及中间件本身的故障等常见故障场景需要有容错能力,降低故障带来的影响。
-
-### 隔离机制
-##### 1. Producer端的隔离  
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-Producer在往Topic发送消息时,会按照MessageQueueSelector定义的选择策略,从Topic的所有MessageQueue中选择一个作为目标队列发送消息。
-当队列发生熔断,或者Broker故障导致队列发送消息异常时,如果没有对这些队列进行特殊处理,下次再轮到发这个队列的时候仍然可能失败。
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-DeFiBus提供异常队列的隔离机制,当往某个队列发送消息失败时,将队列标记为隔离状态,在隔离过期之前将不再往这个队列发送消息,避免再次失败,降低失败概率。
-
-异常队列隔离机制分为两步:  
-**-发现并标记队列为隔离**  
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-在发送回调中更新发送队列的健康状态,如果执行的是onSuccess分支,则标记队列为健康,去除队列的隔离标记;如果执行的是onException分支,则标记队列为隔离状态。  
-
-**-不选择隔离中的队列发送消息**  
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-在MessageQueueSelector中实现隔离机制的过滤逻辑,每次进行队列的选择时,优先从没有标记为隔离的队列中选择。当所有队列都被标记为隔离时,则从所有队列中选择,保证每次都要选出一个队列。
-
-
-##### 2. Consumer端的隔离  
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-Consumer由拉消息线程只负责把拉消息请求以异步发送的形式发送出去。在正常情况下,每次拉消息请求的执行都很快,不会有卡顿。一旦有Broker故障导致PullRequest的执行发生了卡顿,则该Consumer监听的所有Queue都会因为PullRequest执行的延迟而出现消息消费延迟。对于RR同步请求的场景,这种是不能够接受的。
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-创建连接采用的是同步建立连接的策略,线程执行创建新连接时必须等待连接创建完成或者连接超时。当有Broker故障连不上时,就算是异步发送,也会因为同步等待连接建立而阻塞。此时就会出现一个Broker的故障导致其他健康Broker的消息消费出现延迟。
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-DeFiBus在Consumer拉消息的过程中增加了对拉消息任务的隔离,此处的隔离指的是将疑似有问题的任务隔离到另外的线程中执行,保证拉消息线程能够正常处理其他正常的任务。当发现执行拉消息耗时超过设定的阈值时,将该拉消息任务对应的Broker列入“隔离名单”中,在隔离过期之前,隔离Broker的拉消息请求都转交给另外线程执行,避免阻塞拉消息主线程,从而避免故障的Broker影响健康Broker的消息消费时效。
-
-### 连接空闲机制
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-当连接的读或者写空闲超过60秒时,将主动断开连接。
-
-
----
-#### Links:
-* [架构介绍](../../../README.md)
-* [Request-Reply调用](docs/cn/features/1-request-response-call.md)
-* [灰度发布](docs/cn/features/2-dark-launch.md)
-* [熔断机制](docs/cn/features/3-circuit-break-mechanism.md)
-* [服务就近](docs/cn/features/4-invoke-service-nearby.md)
-* [应用多活](docs/cn/features/5-multi-active.md)
-* [动态扩缩队列](docs/cn/features/6-dynamic-adjust-queue.md)
-* [容错机制](docs/cn/features/8-fault-tolerant.md)
\ No newline at end of file
diff --git a/docs/cn/features/9-publish-type.md b/docs/cn/features/9-publish-type.md
deleted file mode 100644
index 74c3446..0000000
--- a/docs/cn/features/9-publish-type.md
+++ /dev/null
@@ -1,35 +0,0 @@
-## 2. 单播、多播、广播
-
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-DeFiBus支持单播、多播、广播消费模式。
-
-### 单播
-
-<div align=center>
-
-![unicast](../../images/features/unicast.png)
-
-</div>
-
-单播模式下,topic只被一个消费组监听;接收消息时,消费组内有且仅有一个实例会收到消息。
-
-### 多播
-
-<div align=center>
-
-![multicast](../../images/features/multicast.png)
-
-</div>
-
-多播模式下,topic被多个消费组监听;接收消息时,每个消费组内有且仅有一个实例会收到消息。
-
-
-### 广播
-
-<div align=center>
-
-![broadcast](../../images/features/broadcast.png)
-
-</div>
-
-广播模式下,监听此topic的每个消费组中的每个实例都需要收到消息。
\ No newline at end of file
diff --git a/docs/cn/features/https.zh-CN.md b/docs/cn/features/https.zh-CN.md
index 768a3aa..fa1244f 100644
--- a/docs/cn/features/https.zh-CN.md
+++ b/docs/cn/features/https.zh-CN.md
@@ -1,19 +1,18 @@
-1.在eventmesh-emesher 中配置
+1.在eventmesh-runtime 中配置
 
 ```
-proxy.properties(添加如下配置)
-proxy.server.useTls.enabled=true   //默认值 false
+eventMesh.properties(添加如下配置)
+eventMesh.server.useTls.enabled=true   //默认值 false
 
 
 config env varible
 -Dssl.server.protocol=TLSv1.1   //默认值 TLSv1.1 
 -Dssl.server.cer=sChat2.jks     //把文件放到启动脚本start.sh 指定的conPath目录下
 -Dssl.server.pass=sNetty
-
 ```
 
-
 2.在eventmesh-sdk-java 中配置
+
 ```
 //创建producer
 LiteClientConfig liteClientConfig = new liteClientConfig();
diff --git a/docs/cn/instructions/eventmesh-emesher-quickstart.zh-CN.md b/docs/cn/instructions/eventmesh-emesher-quickstart.zh-CN.md
deleted file mode 100644
index b75899b..0000000
--- a/docs/cn/instructions/eventmesh-emesher-quickstart.zh-CN.md
+++ /dev/null
@@ -1,32 +0,0 @@
-#Eventmesh-emesher快速入门说明
-
-###依赖
-```
-建议使用64位操作系统,建议使用Linux / Unix;
-64位JDK 1.8+;
-Gradle至少为5.6, 推荐 5.6.*
-```
-
-###下载源码
-[https://github.com/WeBankFinTech/EventMesh](https://github.com/WeBankFinTech/EventMesh)
-您将获得**EventMesh-master.zip**
-  
-###构建源码
-```$ xslt
-unzip EventMesh-master.zip
-cd / *您的部署路径* /EventMesh-master/eventmesh-emesher
-gradle clean tar -x test
-```
-您将在目录/ *您的部署路径* /EventMesh-master/eventmesh-emesher/dist中获得**eventmesh-emesher_1.0.0.tar.gz**
-
-###部署
--部署eventmesn-emesher
-```$ xslt
-upload eventmesh-emesher_1.0.0.tar.gz
-tar -zxvf eventmesh-emesher_1.0.0.tar.gz
-cd bin
-配置 proxy.properties
-cd ../bin
-sh start.sh
-```
-如果看到"ProxyTCPServer[port=10000] started....",则说明设置成功。
\ No newline at end of file
diff --git a/docs/cn/instructions/eventmesh-runtime-protocol.zh-CN.md b/docs/cn/instructions/eventmesh-runtime-protocol.zh-CN.md
new file mode 100644
index 0000000..a3d152d
--- /dev/null
+++ b/docs/cn/instructions/eventmesh-runtime-protocol.zh-CN.md
@@ -0,0 +1,260 @@
+## TCP协议文档
+
+#### 1. 协议格式
+
+![dataFlow](../../images/protocol/eventmesh-tcp-dataFlow.png)
+
+**消息组成详解:**
+
+```
+魔术字:9位,当前值为“EventMesh”
+
+通信协议版本号:4位,当前值为“0000”
+
+消息总长度值(length):4位,int类型
+
+消息头长度值(headerLength):4位,int类型
+
+消息头(header):长度 = headerLength
+
+消息体(body):长度 = length - headerLength - 4 - 4  
+```
+
+#### 2. 业务逻辑层
+
++ 消息组成
+
+消息头(header)+ 消息体(body)
+
+```java
+public class Package {
+
+    private Header header;
+    private Object body;
+}
+
+
+public class Header {
+
+    private Command cmd;
+    private int code;
+    private String msg;
+    private String seq;
+}
+```
+
++ 详解
+
+消息头(header):类型为Header,Header中有Command字段,用于区分不同的消息类型
+
+消息体(body):对于不同的消息类型,body的类型不同
+
+| 消息命令字                                                   | body类型     |
+| ------------------------------------------------------------ | ------------ |
+| HEARTBEAT_REQUEST, HEARTBEAT_RESPONSE, HELLO_RESPONSE, CLIENT_GOODBYE_REQUEST, CLIENT_GOODBYE_RESPONSE, SERVER_GOODBYE_REQUEST, SERVER_GOODBYE_RESPONSE, LISTEN_REQUEST, LISTEN_RESPONSE, UNSUBSCRIBE_REQUEST, SUBSCRIBE_RESPONSE, UNSUBSCRIBE_RESPONSE, ASYNC_MESSAGE_TO_SERVER_ACK, BROADCAST_MESSAGE_TO_SERVER_ACK | 无           |
+| HELLO_REQUEST                                                | UserAgent    |
+| SUBSCRIBE_REQUEST                                            | Subscription |
+| REQUEST_TO_SERVER, REQUEST_TO_CLIENT, RESPONSE_TO_SERVER, RESPONSE_TO_CLIENT, ASYNC_MESSAGE_TO_SERVER, ASYNC_MESSAGE_TO_CLIENT, BROADCAST_MESSAGE_TO_SERVER, BROADCAST_MESSAGE_TO_CLIENT, ASYNC_MESSAGE_TO_CLIENT_ACK, BROADCAST_MESSAGE_TO_CLIENT_ACK, RESPONSE_TO_CLIENT_ACK, REQUEST_TO_CLIENT_ACK | OpenMessage  |
+| REDIRECT_TO_CLIENT                                           | RedirectInfo |
+
+#### 3. Client 与 Eventmesh-Runtime(Server)交互场景详解
+
+```java
+public enum Command {
+
+    //心跳
+    HEARTBEAT_REQUEST(0),                              //client发给server的心跳包
+    HEARTBEAT_RESPONSE(1),                             //server回复client的心跳包
+
+    //握手
+    HELLO_REQUEST(2),                                  //client发给server的握手请求
+    HELLO_RESPONSE(3),                                 //server回复client的握手请求
+
+    //断连
+    CLIENT_GOODBYE_REQUEST(4),                         //client主动断连时通知server
+    CLIENT_GOODBYE_RESPONSE(5),                        //server回复client的主动断连通知
+    SERVER_GOODBYE_REQUEST(6),                         //server主动断连时通知client
+    SERVER_GOODBYE_RESPONSE(7),                        //client回复server的主动断连通知
+
+    //订阅管理
+    SUBSCRIBE_REQUEST(8),                              //client发给server的订阅请求
+    SUBSCRIBE_RESPONSE(9),                             //server回复client的订阅请求
+    UNSUBSCRIBE_REQUEST(10),                           //client发给server的取消订阅请求
+    UNSUBSCRIBE_RESPONSE(11),                          //server回复client的取消订阅请求
+
+    //监听
+    LISTEN_REQUEST(12),                            	   //client发给server的启动监听请求
+    LISTEN_RESPONSE(13),                               //server回复client的监听请求
+
+    //RR
+    REQUEST_TO_SERVER(14),                             //client将RR请求发送给server
+    REQUEST_TO_CLIENT(15),                             //server将RR请求推送给client
+    REQUEST_TO_CLIENT_ACK(16),                         //client收到RR请求后ACK给server
+    RESPONSE_TO_SERVER(17),                            //client将RR回包发送给server
+    RESPONSE_TO_CLIENT(18),                            //server将RR回包推送给client
+    RESPONSE_TO_CLIENT_ACK(19),                        //client收到回包后ACK给server
+
+    //异步事件
+    ASYNC_MESSAGE_TO_SERVER(20),                       //client将异步事件发送给server
+    ASYNC_MESSAGE_TO_SERVER_ACK(21),                   //server收到异步事件后ACK给client
+    ASYNC_MESSAGE_TO_CLIENT(22),                       //server将异步事件推送给client
+    ASYNC_MESSAGE_TO_CLIENT_ACK(23),                   //client收到异步事件后ACK给server
+
+    //广播
+    BROADCAST_MESSAGE_TO_SERVER(24),                   //client将广播消息发送给server
+    BROADCAST_MESSAGE_TO_SERVER_ACK(25),               //server收到广播消息后ACK给client
+    BROADCAST_MESSAGE_TO_CLIENT(26),                   //server将广播消息推送给client
+    BROADCAST_MESSAGE_TO_CLIENT_ACK(27),               //client收到广播消息后ACK给server
+
+    //重定向指令
+    REDIRECT_TO_CLIENT(30),                            //server将重定向指令推动给client
+}
+```
+
+#### 4. Client发起交互
+
+| 场景           | Client向Server发送消息命令字 | Server回复Client消息的命令字    | 说明 |
+| -------------- | ---------------------------- | ------------------------------- | ---- |
+| 握手           | HELLO_REQUEST                | HELLO_RESPONSE                  |      |
+| 心跳           | HEARTBEAT_REQUEST            | HEARTBEAT_RESPONSE              |      |
+| 订阅           | SUBSCRIBE_REQUEST            | SUBSCRIBE_RESPONSE              |      |
+| 取消订阅       | UNSUBSCRIBE_REQUEST          | UNSUBSCRIBE_RESPONSE            |      |
+| 开始监听消息   | LISTEN_REQUEST               | LISTEN_RESPONSE                 |      |
+| 发送RR请求     | REQUEST_TO_SERVER            | RESPONSE_TO_CLIENT              |      |
+| 发送RR回包     | RESPONSE_TO_SERVER           | 无                              |      |
+| 发送异步事件   | ASYNC_MESSAGE_TO_SERVER      | ASYNC_MESSAGE_TO_SERVER_ACK     |      |
+| 发送广播事件   | BROADCAST_MESSAGE_TO_SERVER  | BROADCAST_MESSAGE_TO_SERVER_ACK |      |
+| 客户端主动断连 | CLIENT_GOODBYE_REQUEST       | CLIENT_GOODBYE_RESPONSE         |      |
+
+#### 5. Server发起交互
+
+| 场景               | Server向Client发送消息命令字 | Client回复Server消息命令字      | 说明 |
+| ------------------ | ---------------------------- | ------------------------------- | ---- |
+| 客户端接收RR请求   | REQUEST_TO_CLIENT            | REQUEST_TO_CLIENT_ACK           |      |
+| 客户端接收RR回包   | RESPONSE_TO_CLIENT           | RESPONSE_TO_CLIENT_ACK          |      |
+| 客户端接收异步事件 | ASYNC_MESSAGE_TO_CLIENT      | ASYNC_MESSAGE_TO_CLIENT_ACK     |      |
+| 客户端接收广播事件 | BROADCAST_MESSAGE_TO_CLIENT  | BROADCAST_MESSAGE_TO_CLIENT_ACK |      |
+| 服务端主动断连     | SERVER_GOODBYE_REQUEST       | 无                              |      |
+| 服务端进行重定向   | REDIRECT_TO_CLIENT           | 无                              |      |
+|                    |                              |                                 |      |
+
+#### 6. 消息类型
+
++ 发送RR消息
+
+![rr-msg](../../images/protocol/eventmesh-rr-msg.png)
+
++ 发送异步单播消息
+
+![async-msg](../../images/protocol/eventmesh-async-msg.png)
+
++ 发送广播消息
+
+![broadcast-msg](../../images/protocol/eventmesh-broadcast-msg.png)
+
+## HTTP协议文档
+
+Java类`LiteMessage`的`content`字段表示一个特殊的协议,因此,如果您要使用eventmesh-sdk-java的http-client,则只需设计协议的`content`即可。`LiteMessage`组成如下:
+
+```java
+public class LiteMessage {
+
+    private String bizSeqNo;
+
+    private String uniqueId;
+
+    private String topic;
+
+    private String content;
+
+    private Map<String, String> prop;
+
+    private long createTime = System.currentTimeMillis();
+}
+```
+
+#### 1. 消息发送方式与组成
+
+**消息发送方式**:POST方式
+
+**消息组成**:请求头(RequestHeader) + 请求体(RequestBody)
+
++ 心跳消息
+
+**RequestHeader**
+
+| Key      | 说明             |
+| -------- | ---------------- |
+| Env      | client所属环境   |
+| Region   | client所属区域   |
+| Idc      | client所属IDC    |
+| Dcn      | client所在DCN    |
+| Sys      | client所属子系统 |
+| Pid      | client进程号     |
+| Ip       | client Ip        |
+| Username | client 用户名    |
+| Passwd   | client 密码      |
+| Version  | 协议版本         |
+| Language | 语言描述         |
+| Code     | 请求码           |
+
+**RequestBody**
+
+| Key               | 说明                           |
+| ----------------- | ------------------------------ |
+| clientType        | 客户端类型                     |
+| heartbeatEntities | 心跳实体,包含topic、url等信息 |
+
++ 订阅消息:
+
+**RequestHeader**
+
+与心跳消息一致
+
+**RequestBody**
+
+| Key   | 说明              |
+| ----- | ----------------- |
+| topic | 客户端订阅的topic |
+| url   | topic对应的url    |
+
++ 取消订阅消息:
+
+**RequestHeader**
+
+与心跳消息一致
+
+**RequestBody**
+
+与订阅消息一致
+
++ 发送异步事件:
+
+**RequestHeader**
+
+与心跳消息一致
+
+**RequestBody**
+
+| Key      | 说明                    |
+| -------- | ----------------------- |
+| topic    | 客户端请求的topic       |
+| content  | 客户端发送的topic的内容 |
+| ttl      | 客户端请求超时时间      |
+| bizSeqNo | 客户端请求业务流水号    |
+| uniqueId | 客户端请求消息唯一标识  |
+
+#### 2. Client发起交互
+
+| 场景         | Client向Server发送消息请求码 | Server回复Client消息的响应码            | 说明 |
+| ------------ | ---------------------------- | --------------------------------------- | ---- |
+| 心跳         | HEARTBEAT(203)               | SUCCESS(0)/EVENTMESH_HEARTBEAT_ERROR(19)    |      |
+| 订阅         | SUBSCRIBE(206)               | SUCCESS(0)/EVENTMESH_SUBSCRIBE_ERROR(17)    |      |
+| 取消订阅     | UNSUBSCRIBE(207)             | SUCCESS(0)/EVENTMESH_UNSUBSCRIBE_ERROR(18)  |      |
+| 发送异步事件 | MSG_SEND_ASYNC(104)          | SUCCESS(0)/EVENTMESH_SEND_ASYNC_MSG_ERR(14) |      |
+
+#### 3. Server发起交互
+
+| 场景               | Server向Client发送消息请求码 | Client回复Server消息响应码 | 说明                   |
+| ------------------ | ---------------------------- | -------------------------- | ---------------------- |
+| 客户端接收异步事件 | HTTP_PUSH_CLIENT_ASYNC(105)  | retCode                    | retCode值为0时代表成功 |
\ No newline at end of file
diff --git a/docs/cn/instructions/eventmesh-runtime-quickstart.zh-CN.md b/docs/cn/instructions/eventmesh-runtime-quickstart.zh-CN.md
new file mode 100644
index 0000000..adc9703
--- /dev/null
+++ b/docs/cn/instructions/eventmesh-runtime-quickstart.zh-CN.md
@@ -0,0 +1,268 @@
+<h1>Eventmesh-runtime快速入门说明</h1>
+
+## 1 远程部署
+
+### 1.1 依赖
+
+```
+建议使用64位操作系统,建议使用Linux / Unix;
+64位JDK 1.8+;
+Gradle至少为7.0, 推荐 7.0.*
+```
+
+### 1.2 下载源码
+
+[https://github.com/apache/incubator-eventmesh](https://github.com/apache/incubator-eventmesh)
+您将获得**EventMesh-master.zip**
+
+### 1.3 构建源码
+
+```$ xslt
+unzip EventMesh-master.zip
+cd / *您的部署路径* /EventMesh-master
+gradle clean dist tar -x test
+```
+
+您将在目录/ *您的部署路径* /EventMesh-master/eventmesh-runtime/dist中获得**eventmesh-runtime_1.0.0.tar.gz**
+
+### 1.4 部署
+
+- 部署eventmesh-runtime
+
+```$ xslt
+upload eventmesh-runtime_1.0.0.tar.gz
+tar -zxvf eventmesh-runtime_1.0.0.tar.gz
+cd bin
+配置 eventMesh.properties
+cd ../bin
+sh start.sh
+```
+
+如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。
+
+## 2 本地构建运行
+
+### 2.1 依赖
+
+同上述步骤 1.1
+
+### 2.2 下载源码
+
+同上述步骤 1.2
+
+### 2.3 本地启动
+
+**2.3.1 项目结构说明:**
+
+![project-structure](../../images/project-structure.png)
+
+- eventmesh-common : eventmesh公共类与方法模块
+- eventmesh-connector-api : eventmesh插件接口定义模块
+- eventmesh-connector-rocketmq : eventmesh rocketmq插件模块
+- eventmesh-runtime : eventmesh运行时模块
+- eventmesh-sdk-java : eventmesh java客户端sdk
+- eventmesh-starter : eventmesh本地启动运行项目入口
+
+> 注:插件模块遵循java spi机制,需要在对应模块中的/main/resources/META-INF/services 下配置相关接口与实现类的映射文件
+
+**2.3.2 配置VM启动参数**
+
+```java
+-Dlog4j.configurationFile=eventmesh-runtime/conf/log4j2.xml
+-Deventmesh.log.home=eventmesh-runtime/logs
+-Deventmesh.home=eventmesh-runtime
+-DconfPath=eventmesh-runtime/conf
+```
+> 注:如果操作系统为Windows, 可能需要将文件分隔符换成\
+
+**2.3.3 配置build.gradle文件**
+
+通过修改dependencies,compile project 项来指定项目启动后加载的插件
+
+修改`eventmesh-starter`模块下面的`build.gradle`文件
+
+加载**RocketMQ**插件配置:
+
+```java
+dependencies {
+    compile project(":eventmesh-runtime"), project(":eventmesh-connector-rocketmq")
+}
+```
+
+**2.3.4 启动运行**
+
+```
+运行org.apache.eventmesh.starter.StartUp的主要方法
+```
+
+## 3 Docker 运行
+
+### 3.1 拉取镜像
+
+执行 `docker pull eventmesh/eventmesh-rocketmq:v1.2.0` , 你将会获取到EventMesh的镜像,如下图所示:
+
+![image-20210309155255510](../../images/docker/docker-image.png)
+
+### 3.2 配置
+
+> **预先准备** : 你可能需要从github上下载源代码,并参考这两个文件(eventMesh.properties 和 rocketmq-client.properties)的内容来做下面的操作
+
+**3.2.1 需要配置的文件**
+
+在运行容器之前,你需要配置如下文件:
+
+**eventMesh.properties**
+
+| 配置项                 | 默认值 | 备注                    |
+| ---------------------- | ------ | ----------------------- |
+| eventMesh.server.http.port | 10105  | EventMesh http 服务端口 |
+| eventMesh.server.tcp.port  | 10000  | EventMesh tcp 服务端口  |
+
+**rocketmq-client.properties**
+
+| 配置项                            | 默认值                        | 备注                  |
+| --------------------------------- | ----------------------------- | --------------------- |
+| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv 地址 |
+
+拉取了EventMesh镜像到你的宿主机后,你可以执行下面的命令来完成**eventMesh.properties**和**rocketmq-client.properties** 文件的配置
+
+**3.2.2 创建文件**
+
+```shell
+mkdir -p /data/eventmesh/rocketmq/conf
+cd /data/eventmesh/rocketmq/conf
+vi eventMesh.properties
+vi rocketmq-client.properties
+```
+
+这两个文件内容可以参考 [eventMesh.properties](https://github.com/apache/incubator-eventmesh/blob/develop/eventmesh-runtime/conf/eventMesh.properties)
+和 [rocketmq-client.properties](https://github.com/apache/incubator-eventmesh/blob/develop/eventmesh-runtime/conf/rocketmq-client.properties)
+
+### 3.3 运行
+
+**3.3.1 运行**
+
+执行下面的命令来运行容器
+
+```shell
+docker run -d -p 10000:10000 -p 10105:10105 -v /data/eventmesh/rocketmq/conf/eventMesh.properties:/data/app/eventmesh/conf/eventMesh.properties -v /data/eventmesh/rocketmq/conf/rocketmq-client.properties:/data/app/eventmesh/conf/rocketmq-client.properties docker.io/eventmesh/eventmesh-rocketmq:v1.2.0
+```
+
+> -p : 将容器内端口与宿主机端口绑定,容器的端口应与配置文件中的端口一致
+>
+> -v : 将容器内的配置文件挂载到宿主机下,需注意配置文件的路径
+
+**3.3.2 检查容器的运行状况**
+
+执行 `docker ps` 来检查容器的运行状况
+
+![image-docker-ps](../../images/docker/docker-ps.png)
+
+执行 `docker logs [container id]` 可以得到如下结果
+
+![image-docker-logs](../../images/docker/docker-logs.png)
+
+执行 `docker exec -it [container id] /bin/bash` 可以进入到容器中并查看详细信息
+
+![image-docker-exec](../../images/docker/docker-exec.png)
+
+### 3.4 测试
+
+**预先准备** :RocketMQ Namesrv & Broker
+
+你可以通过[这里](https://github.com/apache/rocketmq-docker)来构建rocketmq镜像或者从 docker hub上获取rocketmq镜像.
+
+```shell
+#获取namesrv镜像
+docker pull rocketmqinc/rocketmq-namesrv:4.5.0-alpine
+#获取broker镜像
+docker pull rocketmqinc/rocketmq-broker:4.5.0-alpine
+
+#运行namerv容器 
+docker run -d -p 9876:9876 -v `pwd` /data/namesrv/logs:/root/logs -v `pwd`/data/namesrv/store:/root/store --name rmqnamesrv  rocketmqinc/rocketmq-namesrv:4.5.0-alpine sh mqnamesrv 
+
+#运行broker容器 
+docker run -d -p 10911:10911 -p 10909:10909 -v `pwd`/data/broker/logs:/root/logs -v `pwd`/data/broker/store:/root/store --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" rocketmqinc/rocketmq-broker:4.5.0-alpine sh mqbroker -c ../conf/broker.conf
+```
+
+这里 **rocketmq-broker ip** 是 **pod ip**, 如果你想修改这个ip, 可以通过挂载容器中 **broker.conf** 文件的方式并修改文件中的 **brokerIP1** 配置项为自定义值
+
+**3.4.1 运行示例**
+
+Windows
+
+- Windows系统下运行示例可以参考[这里](https://github.com/apache/incubator-eventmesh/blob/develop/docs/cn/instructions/eventmesh-sdk-java-quickstart.zh-CN.md)
+
+Linux
+
+- **获取 eventmesh-test_1.2.0-SNAPSHOT.tar.gz**
+
+  你可以从我们的 **releases** 获取或者**通过源码的方式进行构建**
+
+  **通过源码的方式进行构建**:
+
+  ```shell
+  cd /* Your Deploy Path */EventMesh/eventmesh-test 
+  gradle clean testdist testtar -x test`
+  ```
+
+  可以在 `/eventmesh-test/build` 目录下获得 **eventmesh-test_1.2.0-SNAPSHOT.tar.gz**
+
+- **修改配置文件**
+
+  ```shell
+  #上传
+  upload eventmesh-test_1.2.0-SNAPSHOT.tar.gz
+  #解压
+  tar -zxvf eventmesh-test_1.2.0-SNAPSHOT.tar.gz
+  #配置
+  cd conf
+  config your application.properties
+  ```
+
+- **运行**
+
+  TCP Sub
+
+  ```shell
+  cd bin
+  sh tcp_sub.sh
+  ```
+
+  TCP Pub
+
+  ```shell
+  cd bin
+  sh tcp_pub.sh
+  ```
+
+  TCP Sub Broadcast
+
+  ```shell
+  cd bin
+  sh tcp_sub_broadcast.sh
+  ```
+
+  TCP Pub Broadcast
+
+  ```shell
+  cd bin
+  sh tcp_pub_broadcast.sh
+  ```
+
+  HTTP Sub
+
+  ```shell
+  cd bin
+  sh http_sub.sh
+  ```
+
+  HTTP Pub
+
+  ```shell
+  cd bin
+  sh http_pub.sh
+  ```
+
+  之后 , 你可以在 `/logs` 目录下面看到不同模式的运行日志
+
diff --git a/docs/cn/instructions/eventmesh-sdk-java-quickstart.zh-CN.md b/docs/cn/instructions/eventmesh-sdk-java-quickstart.zh-CN.md
index 67d7994..aa5768a 100644
--- a/docs/cn/instructions/eventmesh-sdk-java-quickstart.zh-CN.md
+++ b/docs/cn/instructions/eventmesh-sdk-java-quickstart.zh-CN.md
@@ -1,118 +1,76 @@
-##如何运行eventmesh-sdk-java演示
+<h2>如何运行eventmesh-sdk-java演示</h2>
 
-> Eventmesh-sdk-java作为客户端,与eventmesh-emesher通信,用于完成消息的发送和接收。
+> Eventmesh-sdk-java作为客户端,与eventmesh-runtime通信,用于完成消息的发送和接收。
 >
-> Eventmesh-sdk-java支持同步消息,异步消息和广播消息。同步消息表示生产者发送消息,需要消费者提供响应消息;异步消息表示生产者只发送消息,不关心回复消息。广播消息表示生产者发送一次消息,所有订阅广播主题的消费者都将收到消息
+> Eventmesh-sdk-java支持异步消息和广播消息。异步消息表示生产者只发送消息,不关心回复消息。广播消息表示生产者发送一次消息,所有订阅广播主题的消费者都将收到消息
 >
 > Eventmesh-sdk-java支持HTTP和TCP协议。
 
+TCP 和 Http 示例都在**eventmesh-test**模块下
 
-### 1. TCP DEMO
-
-####同步消息
-
-- 创建主题
-
-```
-sh runadmin.sh updateTopic -c $ {ClusterName} -t $ {topic} -n $ {namesrvAddr}
-```
-
-
-
-*启动消费者,订阅上一步骤已经创建的Topic
-
-```
-运行com.webank.eventmesh.client.tcp.demo.SyncResponse的主要方法
-```
-
-
-
-启动发送端,发送消息
-
-```
-运行com.webank.eventmesh.client.tcp.demo.SyncRequest的主要方法
-```
-
-
+**注意**:下载了源代码后,需要将`/conf/application.properties` 和 `/conf/log4j2.xml` 复制到 `resources` 目录下
 
-####异步消息
+![image-test-structure](../../images/eventmesh-test-structure.png)
 
-- 创建主题
-
-```
-sh runadmin.sh updateTopic -c $ {ClusterName} -t $ {topic} -n $ {namesrvAddr}
-```
+### 1. TCP DEMO
 
+<h4>异步消息</h4>
 
+- 创建主题TEST-TOPIC-TCP-ASYNC,可以通过rocketmq-console或者rocketmq tools 命令
 
 - 启动消费者,订阅上一步骤已经创建的Topic
 
 ```
-运行com.webank.eventmesh.client.tcp.demo.AsyncSubscribe的主要方法
-```
-
-
-
-启动发送端,发送消息
-
-```
-运行com.webank.eventmesh.client.tcp.demo.AsyncPublish的主要方法
+运行org.apache.eventmesh.tcp.demo.AsyncSubscribe的主要方法
 ```
 
-
-
-####广播消息
-
-- 创建主题
+- 启动发送端,发送消息
 
 ```
-sh runadmin.sh updateTopic -c $ {ClusterName} -t $ {topic} -n $ {namesrvAddr}
+运行org.apache.eventmesh.tcp.demo.AsyncPublish的主要方法
 ```
 
+<h4>广播消息</h4>
 
+- 创建主题TEST-TOPIC-TCP-BROADCAST,可以通过rocketmq-console或者rocketmq tools 命令
 
 - 启动消费端,订阅上一步骤已经创建的Topic
 
 ```
-运行com.webank.eventmesh.client.tcp.demo.AsyncSubscribeBroadcast的主要方法
+运行org.apache.eventmesh.tcp.demo.AsyncSubscribeBroadcast的主要方法
 ```
 
-
-
-*启动发送端,发送广播消息
+- 启动发送端,发送广播消息
 
 ```
-运行com.webank.eventmesh.client.tcp.demo.AsyncPublishBroadcast的主要方法
+运行org.apache.eventmesh.tcp.demo.AsyncPublishBroadcast的主要方法
 ```
 
 ### 2. HTTP演示
 
->对于http,eventmesh-sdk-java仅实现msg的发送。而且它已经支持同步消息和异步消息。
+> 对于http,eventmesh-sdk-java对对于异步事件实现了发送与订阅
 >
->在演示中,Java类`LiteMessage`的`content`字段表示一个特殊的协议,因此,如果您要使用eventmesh-sdk-java的http-client,则只需设计协议的内容并提供消费者的应用程序在同一时间。
+>在演示中,Java类`LiteMessage`的`content`字段表示一个特殊的协议,因此,如果您要使用eventmesh-sdk-java的http-client,则只需设计协议的内容并在同一时间提供消费者的应用程序。
 
+<h4>异步事件</h4>
 
+> 生产者将事件发送给下游即可,无需等待响应
 
-####同步消息
+- 创建主题TEST-TOPIC-HTTP-ASYNC,可以通过rocketmq-console或者rocketmq tools 命令
 
->发送消息,生产者需要等到收到用户的响应消息
+- 启动消费端,订阅Topic
+
+  异步事件消费端为spring boot demo,运行demo即可启动服务并完成Topic订阅
 
 ```
-运行com.webank.eventmesh.client.http.demo.SyncRequestInstance的主要方法
+运行org.apache.eventmesh.http.demo.sub.SpringBootDemoApplication的主要方法
 ```
 
-
-
->发送消息,生产者在回调中处理响应消息
+- 启动发送端,发送消息
 
 ```
-运行com.webank.eventmesh.client.http.demo.AsyncSyncRequestInstance的主要方法
+运行org.apache.eventmesh.http.demo.AsyncPublishInstance的主要方法
 ```
 
 
 
-####异步消息
-
-```
-运行com.webank.eventmesh.client.http.demo.AsyncPublishInstance的主要方法
-```
\ No newline at end of file
diff --git a/docs/cn/instructions/eventmesh-store-quickstart.zh-CN.md b/docs/cn/instructions/eventmesh-store-quickstart.zh-CN.md
index b7bbb9e..a9ca24c 100644
--- a/docs/cn/instructions/eventmesh-store-quickstart.zh-CN.md
+++ b/docs/cn/instructions/eventmesh-store-quickstart.zh-CN.md
@@ -1,6 +1,7 @@
-#Eventmesh-store快速入门说明
+# Eventmesh-store快速入门说明
+
+### 依赖
 
-###依赖
 ```
 建议使用64位操作系统,建议使用Linux / Unix;
 64位JDK 1.8+;
@@ -8,30 +9,38 @@ Gradle至少为5.6, 推荐 5.6.*
 4g +可用磁盘用于eventmesh-store服务器
 ```
 
-###下载源码
+### 下载源码
+
 下载源代码[https://github.com/WeBankFinTech/DeFiBus](https://github.com/WeBankFinTech/DeFiBus)
 您将获得**DefiBus-master.zip**
 
-###构建源码
+### 构建源码
+
 eventmesh-store在下面的部分采用DeFiBus为例,因为默认情况下,eventmesh依赖于defibus作为存储层,其他工具如Rocketmq等也即将推出。
+
 ```
 unzip DefiBus-master.zip
 cd / *您的部署路径* / DefiBus-master
 gradle clean dist tar -x test
 ```
+
 您将在目录/*您的部署路径*/DefiBus-master/build中获得**DeFiBus_1.0.0.tar.gz**
 
-###部署
+### 部署
+
 - 部署DeFiBusNamesrv
+
 ```
 上传DeFiBus_1.0.0.tar.gz
 tar -zxvf DeFiBus_1.0.0.tar.gz
 cd bin
 sh runnamesrv.sh
 ```
+
 如果在../logs/namesrv.log中看到"Thre Name Server boot success”,则说明已成功设置DeFiBus Namesrv。
 
 -部署DeFiBusBroker
+
 ```
 上传DeFiBus_1.0.0.tar.gz
 tar -zxvf DeFiBus_1.0.0.tar.gz
@@ -40,5 +49,5 @@ cd conf
 cd ../bin
 sh runbroker.sh
 ```
-如果看到"The broker \[YOUR-BROKER-NAME, IP:PORT\] boot success."在../logs/broker.log中,
-您可以成功设置eventmesh-store。
\ No newline at end of file
+
+如果看到"The broker \[YOUR-BROKER-NAME, IP:PORT\] boot success."在../logs/broker.log中, 您可以成功设置eventmesh-store。
\ No newline at end of file
diff --git a/docs/cn/instructions/quickstart.zh-CN.md b/docs/cn/instructions/quickstart.zh-CN.md
index 6ab5078..e14bf12 100644
--- a/docs/cn/instructions/quickstart.zh-CN.md
+++ b/docs/cn/instructions/quickstart.zh-CN.md
@@ -1,17 +1,25 @@
-#快速入门说明
+# 快速入门说明
+
+### 依赖
 
-###依赖
 ```
 建议使用64位操作系统,建议使用Linux / Unix;
 64位JDK 1.8+;
 Gradle至少为5.6, 推荐 5.6.*
 ```
 
-###部署eventmesh-store
-阅读更多[这里](eventmesh-store-quickstart.md)
+### 部署eventmesh-store
+
+阅读更多[这里](eventmesh-store-quickstart.zh-CN.md)
+
+### 部署eventmesh-runtime
+
+阅读更多[这里](eventmesh-runtime-quickstart.zh-CN.md)
+
+### 运行eventmesh sdk演示
+
+阅读更多[这里](eventmesh-sdk-java-quickstart.zh-CN.md)
 
-###部署eventmesn-emesher
-阅读更多[这里](eventmesh-emesher-quickstart.md)
+### 通信协议
 
-###运行eventmesh sdk演示
-阅读更多[这里](eventmesh-sdk-java-quickstart.md)
\ No newline at end of file
+阅读更多[这里](eventmesh-runtime-protocol.zh-CN.md)
\ No newline at end of file
diff --git a/docs/en/README.md b/docs/en/README.md
index 8a8f338..1b8d3c1 100644
--- a/docs/en/README.md
+++ b/docs/en/README.md
@@ -1,43 +1,58 @@
-[![Build Status](https://www.travis-ci.org/WeBankFinTech/DeFiBus.svg?branch=master)](https://www.travis-ci.org/WeBankFinTech/EventMesh)
-[![Coverage Status](https://coveralls.io/repos/github/WeBankFinTech/DeFiBus/badge.svg?branch=master)](https://coveralls.io/github/WeBankFinTech/EventMesh?branch=master)
-[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/WeBankFinTech/EventMesh/releases)
+# Apache EventMesh (Incubating)
+[![CI status](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml/badge.svg)](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml)
+[![CodeCov](https://codecov.io/gh/apache/incubator-eventmesh/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/incubator-eventmesh)
+[![Language grade: Java](https://img.shields.io/lgtm/grade/java/g/apache/incubator-eventmesh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-eventmesh/context:java)
+[![Total alerts](https://img.shields.io/lgtm/alerts/g/apache/incubator-eventmesh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-eventmesh/alerts/)
+[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/apache/incubator-eventmesh/releases)
 [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
 
-[点我查看中文版](/cn/README.md)
+[点我查看中文版](../cn/README.md)
 
 ## What is Event Mesh?
-This figure shows the positioning of the event mesh relative to other similar technologies (such as service mesh) in the application framework.
-![architecture1](images/eventmesh-define.png)
 
-Event Mesh is a dynamic plug-in cloud-native basic service layer used to decouple the application and middleware layer. It provides flexible, reliable and fast event distribution, and can be managed.
-![architecture1](/images/eventmesher.png)
+This figure shows the positioning of the event mesh relative to other similar technologies (such as service mesh) in the
+application framework.
+
+![architecture1](../images/eventmesh-define.png)
+
+Event Mesh is a dynamic plug-in cloud-native basic service layer used to decouple the application and middleware layer.
+It provides flexible, reliable and fast event distribution, and can be managed.
+
+![architecture1](../images/eventmesh-runtime.png)
 
 Cloud Native Event Mesh:
-![architecture2](/images/bus.png)
 
-The event mesh allows events from one application to be dynamically routed to any other application.
-General functions of the event mesh:
+![architecture2](../images/eventmesh-panels.png)
+
+The event mesh allows events from one application to be dynamically routed to any other application. General functions
+of the event mesh:
+
 * Event driven;
 * Event governance;
 * Dynamic routing;
 * Cloud native
 
 Dependent components:
-* DeFiBus : a distributed messaging platform with low latency, high performance and reliability, flexible scalability. [DeFiBus](https://github.com/WeBankFinTech/DeFiBus)
+
+* DeFiBus : a distributed messaging platform with low latency, high performance and reliability, flexible
+  scalability. [DeFiBus](https://github.com/WeBankFinTech/DeFiBus)
 * RocketMQ
 
 Key components:
-* eventmesh-emesher : an middleware to transmit events between event producers and consumers, support cloud native apps and microservices
+
+* eventmesh-runtime : an middleware to transmit events between event producers and consumers, support cloud native apps
+  and microservices
 * eventmesh-sdk-java : currently supports HTTP and TCP protocols, and will support gRPC in the future
-* eventmesh-registry : automatically routes events between applications and services connected to seperate event meshers, manage eventmesh-emesher
 
 ## RoadMap
+
 | version | feature |
 | ----    | ----    |
 | v1.0.0  |Support DeFiBus as eventstore, support pub/sub, http api, java-sdk|
 | v1.1.0  |Support rocketmq as eventstore|
-| v1.2.0  |Support transaction event|
-| v1.3.0  |Support Plug-in architectur|
+| v1.2.0  |Support Plug-in architecture, support http sub|
+| v1.3.0 |Support cloud event protocal|
+|   |Support transaction event|
 |         |Support Event Sourcing|
 |         |Support Event orchestration|
 |         |Support Dashboard|
@@ -50,23 +65,29 @@ Key components:
 |         |Support c/go/python/nodejs SDK|
 
 ## Quick Start
-1. Build and deploy event-store([DeFiBus](https://github.com/WeBankFinTech/DeFiBus)), 
-   see instruction ['event-store quickstart'](instructions/eventmesh-store-quickstart.md).
-2. Build and deploy eventmesh-emesher, see instruction ['eventmesh-emesher quickstart'](instructions/eventmesh-emesher-quickstart.md).
-3. Run eventmesh-sdk-java demo, see instruction ['eventmesh-sdk-java quickstart'](instructions/eventmesh-sdk-java-quickstart.md). 
+
+1. Build and deploy event-store([DeFiBus](https://github.com/WeBankFinTech/DeFiBus)), see
+   instruction ['event-store quickstart'](instructions/eventmesh-store-quickstart.md).
+2. Build and deploy eventmesh-runtime, see
+   instruction ['eventmesh-runtime quickstart'](instructions/eventmesh-runtime-quickstart.md).
+3. Run eventmesh-sdk-java demo, see
+   instruction ['eventmesh-sdk-java quickstart'](instructions/eventmesh-sdk-java-quickstart.md).
 
 ## Contributing
-Contributions are always welcomed! Please see [CONTRIBUTING](CONTRIBUTING.md) for detailed guidelines
 
-You can start with the issues labeled with good first issue. 
-[GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)
+Contributions are always welcomed! Please see [CONTRIBUTING](../../CONTRIBUTING.md) for detailed guidelines
+
+You can start with the issues labeled with good first issue.
+[GitHub Issues](https://github.com/apache/incubator-eventmesh/issues)
 
 ## License
+
 [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) Copyright (C) Apache Software Foundation
 
 ## Contacts
+
 WeChat group:
 
-![wechat_qr](/images/mesh-helper.png)
+![wechat_qr](../images/mesh-helper.png)
 
 
diff --git a/docs/en/features/architecture.md b/docs/en/features/architecture.md
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/en/features/eventmesh-cloudevents-sdk-binding.md b/docs/en/features/eventmesh-cloudevents-sdk-binding.md
new file mode 100644
index 0000000..3c1224f
--- /dev/null
+++ b/docs/en/features/eventmesh-cloudevents-sdk-binding.md
@@ -0,0 +1,55 @@
+# Lightweight EventMesh SDK (CloudEvents)
+
+## Introduction
+
+[EventMesh(incubating)](https://github.com/apache/incubator-eventmesh) is a dynamic
+cloud-native eventing infrastructure.
+
+[CloudEvents](https://github.com/cloudevents/spec) is a specification for describing
+event data in common formats to provide interoperability across services, platforms and systems.
+
+As of May 2021, EventMesh contains the following
+major components: `eventmesh-runtime`, `eventmesh-sdk-java` and `eventmesh-connector-rocketmq`.
+For a customer to use EventMesh, `eventmesh-runtime` can be deployed as microservices to transmit
+customer's events between event producers and consumers. Customer's applications can then interact
+with `eventmesh-runtime` using `eventmesh-sdk-java` to publish/subscribe for events on given topics.
+
+CloudEvents support has been a highly desired feature by EventMesh users. There are many reasons
+for users to prefer using a SDK with CloudEvents support:
+- CloudEvents is a more widely accepted and supported way to describe events. `eventmesh-sdk-java`
+  currently uses the `LiteMessage` structure to describe events, which is less standardized.
+- CloudEvents's Java SDK has a wider range of distribution methods. For example, EventMesh users
+  currently need to use the SDK tarball or build from source for every EventMesh release. With
+  CloudEvents support, it's easier for users to take a dependency on EventMesh's SDK using CloudEvents's
+  public distributions (e.g. through a Maven configuration).
+- CloudEvents's SDK supports multiple languages. Although EventMesh currently only supports a Java SDK,
+  in future if more languages need to be supported, the extensions can be easier with experience on
+  binding Java SDK with CloudEvents.
+
+## Requirements
+
+### Functional Requirements
+
+| Requirement ID | Requirement Description | Comments |
+| -------------- | ----------------------- | -------- |
+| F-1            | EventMesh users should be able to depend on a public SDK to publish/subscribe events in CloudEvents format | Functionality |
+| F-2            | EventMesh users should continue to have access to existing EventMesh client features (e.g. load balancing) with an SDK that supports CloudEvent | Feature Parity |
+| F-3            | EventMesh developers should be able to sync `eventmesh-sdk-java` and an SDK with CloudEvents support without much effort/pain | Maintainability |
+
+### Performance Requirements
+
+| Requirement ID | Requirement Description | Comments |
+| -------------- | ----------------------- | -------- |
+| P-1            | Client side latency for SDK with CloudEvents support should be similar to current SDK | |
+
+## Design Details
+
+Binding with the CloudEvents Java SDK (similar to what Kafka already did, see Reference for more details)
+should be an easy way to achieve the requirements.
+
+Design details TBD.
+
+## Appendix
+
+### References
+- https://cloudevents.github.io/sdk-java/kafka
diff --git a/docs/en/features/https.md b/docs/en/features/https.md
index 570c6d4..2478539 100644
--- a/docs/en/features/https.md
+++ b/docs/en/features/https.md
@@ -1,8 +1,8 @@
-1.config in eventmesh-emesher
+1.config in eventmesh-runtime
 
 ```
-proxy.properties(add config as follows)
-proxy.server.useTls.enabled=true   //default value is false
+eventMesh.properties(add config as follows)
+eventMesh.server.useTls.enabled=true   //default value is false
 
 
 config env varible
@@ -12,8 +12,8 @@ config env varible
 
 ```
 
+2.config in eventmesh-sdk-java
 
-2.config in eventmesh-sdk-java 
 ```
 // create producer
 LiteClientConfig liteClientConfig = new liteClientConfig();
diff --git a/docs/en/features/request-response-call.md b/docs/en/features/request-response-call.md
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/en/instructions/eventmesh-emesher-quickstart.md b/docs/en/instructions/eventmesh-emesher-quickstart.md
deleted file mode 100644
index 713de86..0000000
--- a/docs/en/instructions/eventmesh-emesher-quickstart.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Eventmesh-emesher Quick start Instruction
-
-### dependencies
-```
-64bit OS, Linux/Unix is recommended;
-64bit JDK 1.8+;
-Gradle at least 5.6, eg 5.6.*
-```
-
-### download sources
-download source code from [https://github.com/WeBankFinTech/EventMesh](https://github.com/WeBankFinTech/EventMesh)  
-You will get **EventMesh-master.zip**
-  
-### build sources
-```$xslt
-unzip EventMesh-master.zip
-cd /*YOUR DEPLOY PATH*/EventMesh-master/eventmesh-emesher
-gradle clean tar -x test
-```
-You will get **eventmesh-emesher_1.0.0.tar.gz** in directory /* YOUR DEPLOY PATH */EventMesh-master/eventmesh-emesher/dist
-
-### Deployment
-- deploy eventmesn-emesher  
-```$xslt
-upload eventmesh-emesher_1.0.0.tar.gz
-tar -zxvf eventmesh-emesher_1.0.0.tar.gz
-cd conf
-config your proxy.properties
-cd ../bin
-sh start.sh
-```
-If you see "ProxyTCPServer[port=10000] started....", you setup emesher successfully.
-
diff --git a/docs/en/instructions/eventmesh-runtime-protocol.md b/docs/en/instructions/eventmesh-runtime-protocol.md
new file mode 100644
index 0000000..a884a49
--- /dev/null
+++ b/docs/en/instructions/eventmesh-runtime-protocol.md
@@ -0,0 +1,261 @@
+## TCP Protocol Document In Eventmesh-Runtime
+
+#### 1. Protocol Format
+
+![dataFlow](../../images/protocol/eventmesh-tcp-dataFlow_EN.png)
+
+**Protocol Specification**
+
+```
+Magic Code: 9 bit, defaultValue:EventMesh
+
+Protocol Version: 4 bit, defaultValue:0000
+
+Message Size: 4 bit, the total length of message
+
+Header Size: 4 bit,the length of Message Header
+
+Message Header: the specific header content of message 
+
+Message Body: the specific body content of message 
+```
+
+#### 2. Message Object in business logic layer
+
+* Message Composition
+
+The class of `Package.java` is message object in business logic layer. It contains two parts: header and body.
+
+```java
+public class Package {
+
+    private Header header;
+    private Object body;
+}
+
+
+public class Header {
+
+    private Command cmd;
+    private int code;
+    private String msg;
+    private String seq;
+}
+```
+
+* Specificatiion
+
+Message Header(header): The field of Command in Header, used to distinguishing different message types.
+
+Message Body(body): The message body is defined as different objects according to the message type.
+
+| Command                                                   | type of Body     |
+| ------------------------------------------------------------ | ------------ |
+| HEARTBEAT_REQUEST, HEARTBEAT_RESPONSE, HELLO_RESPONSE, CLIENT_GOODBYE_REQUEST, CLIENT_GOODBYE_RESPONSE, SERVER_GOODBYE_REQUEST, SERVER_GOODBYE_RESPONSE, LISTEN_REQUEST, LISTEN_RESPONSE, UNSUBSCRIBE_REQUEST, SUBSCRIBE_RESPONSE, UNSUBSCRIBE_RESPONSE, ASYNC_MESSAGE_TO_SERVER_ACK, BROADCAST_MESSAGE_TO_SERVER_ACK | --           |
+| HELLO_REQUEST                                                | UserAgent    |
+| SUBSCRIBE_REQUEST                                            | Subscription |
+| REQUEST_TO_SERVER, REQUEST_TO_CLIENT, RESPONSE_TO_SERVER, RESPONSE_TO_CLIENT, ASYNC_MESSAGE_TO_SERVER, ASYNC_MESSAGE_TO_CLIENT, BROADCAST_MESSAGE_TO_SERVER, BROADCAST_MESSAGE_TO_CLIENT, ASYNC_MESSAGE_TO_CLIENT_ACK, BROADCAST_MESSAGE_TO_CLIENT_ACK, RESPONSE_TO_CLIENT_ACK, REQUEST_TO_CLIENT_ACK | OpenMessage  |
+| REDIRECT_TO_CLIENT                                           | RedirectInfo |
+
+#### 3. The Interactive Command between Client and Server(Eventmesh-Runtime)
+
+```java
+public enum Command {
+
+    //HeartBeat
+    HEARTBEAT_REQUEST(0),                              //client send heartbeat request to server
+    HEARTBEAT_RESPONSE(1),                             //server reply heartbeat response to client
+
+    //Hello
+    HELLO_REQUEST(2),                                  //client send connect request to server
+    HELLO_RESPONSE(3),                                 //server reply connect response to client
+
+    //Disconncet
+    CLIENT_GOODBYE_REQUEST(4),                         //client send disconnect request to server
+    CLIENT_GOODBYE_RESPONSE(5),                        //server reply disconnect response to client
+    SERVER_GOODBYE_REQUEST(6),                         //server send disconncet request to client
+    SERVER_GOODBYE_RESPONSE(7),                        //client reply disconnect response to server
+
+    //Subscribe and UnSubscribe
+    SUBSCRIBE_REQUEST(8),                              //client send subscribe request to server
+    SUBSCRIBE_RESPONSE(9),                             //server reply subscribe response to client
+    UNSUBSCRIBE_REQUEST(10),                           //client send unsubscribe request to server
+    UNSUBSCRIBE_RESPONSE(11),                          //server reply unsubscribe response to client
+
+    //Listen
+    LISTEN_REQUEST(12),                            	   //client send listen request to server
+    LISTEN_RESPONSE(13),                               //server reply listen response to client
+
+    //send sync message
+    REQUEST_TO_SERVER(14),                             //client(Producer) send sync msg to server
+    REQUEST_TO_CLIENT(15),                             //server push sync msg to client(Consumer)
+    REQUEST_TO_CLIENT_ACK(16),                         //client(Consumer) send ack of sync msg to server
+    RESPONSE_TO_SERVER(17),                            //client(Consumer) send reply msg to server
+    RESPONSE_TO_CLIENT(18),                            //server push reply msg to client(Producer)
+    RESPONSE_TO_CLIENT_ACK(19),                        //client(Producer) send ack of reply msg to server
+
+    //send async message
+    ASYNC_MESSAGE_TO_SERVER(20),                       //client send async msg to server
+    ASYNC_MESSAGE_TO_SERVER_ACK(21),                   //server reply ack of async msg to client
+    ASYNC_MESSAGE_TO_CLIENT(22),                       //server push async msg to client
+    ASYNC_MESSAGE_TO_CLIENT_ACK(23),                   //client reply ack of async msg to server
+
+    //send broadcast message
+    BROADCAST_MESSAGE_TO_SERVER(24),                   //client send broadcast msg to server
+    BROADCAST_MESSAGE_TO_SERVER_ACK(25),               //server reply ack of broadcast msg to client
+    BROADCAST_MESSAGE_TO_CLIENT(26),                   //server push broadcast msg to client
+    BROADCAST_MESSAGE_TO_CLIENT_ACK(27),               //client reply ack of broadcast msg to server
+
+    //redirect
+    REDIRECT_TO_CLIENT(30),                            //server send redirect instruction to client
+}
+```
+
+#### 4. Client initiates interaction
+
+| Scene          | Client Send | Server Reply    | Remark |
+| -------------- | ---------------------------- | ------------------------------- | ---- |
+| Hello           | HELLO_REQUEST                | HELLO_RESPONSE                  |      |
+| Heartbeat           | HEARTBEAT_REQUEST            | HEARTBEAT_RESPONSE              |      |
+| Subscribe           | SUBSCRIBE_REQUEST            | SUBSCRIBE_RESPONSE              |      |
+| Unsubscribe       | UNSUBSCRIBE_REQUEST          | UNSUBSCRIBE_RESPONSE            |      |
+| Listen   | LISTEN_REQUEST               | LISTEN_RESPONSE                 |      |
+| Send sync msg     | REQUEST_TO_SERVER            | RESPONSE_TO_CLIENT              |      |
+| Send reply msg of sync msg     | RESPONSE_TO_SERVER           | --                              |      |
+| Send async msg   | ASYNC_MESSAGE_TO_SERVER      | ASYNC_MESSAGE_TO_SERVER_ACK     |      |
+| Send broadcast msg   | BROADCAST_MESSAGE_TO_SERVER  | BROADCAST_MESSAGE_TO_SERVER_ACK |      |
+| Client start disconnect | CLIENT_GOODBYE_REQUEST       | CLIENT_GOODBYE_RESPONSE         |      |
+
+#### 5. Server initiates interaction
+
+| Scene              | Server Send | Client Reply      | Remark |
+| ------------------ | ---------------------------- | ------------------------------- | ---- |
+| Push sync msg to client   | REQUEST_TO_CLIENT            | REQUEST_TO_CLIENT_ACK           |      |
+| Push reply msg of sync msg to client   | RESPONSE_TO_CLIENT           | RESPONSE_TO_CLIENT_ACK          |      |
+| Push async msg to client | ASYNC_MESSAGE_TO_CLIENT      | ASYNC_MESSAGE_TO_CLIENT_ACK     |      |
+| Push broadcast msg to client | BROADCAST_MESSAGE_TO_CLIENT  | BROADCAST_MESSAGE_TO_CLIENT_ACK |      |
+| Server start disconnect     | SERVER_GOODBYE_REQUEST       | --                              |      |
+| Server send redirect   | REDIRECT_TO_CLIENT           | --                              |      |
+
+#### 6. Message classification
+
++ Send sync msg
+
+![rr-msg](../../images/protocol/eventmesh-rr-msg.png)
+
++ Send async msg
+
+![async-msg](../../images/protocol/eventmesh-async-msg.png)
+
++ Send broadcast msg
+
+![broadcast-msg](../../images/protocol/eventmesh-broadcast-msg.png)
+
+## HTTP Protocol Document In Eventmesh-Runtime
+
+The class of `LiteMessage.java` is message definition in http protocal of EventMesh-Runtime.If you want to send msg by
+using http protocol,you can use client in eventmesh-sdk-java, and you just need care the specific protocol in the field
+of content.
+
+```java
+public class LiteMessage {
+
+    private String bizSeqNo;
+
+    private String uniqueId;
+
+    private String topic;
+
+    private String content;
+
+    private Map<String, String> prop;
+
+    private long createTime = System.currentTimeMillis();
+}
+```
+
+#### 1. Message Send and Message Composition
+
+**Request Method**: POST
+
+**Message Composition**: RequestHeader + RequestBody
+
++ Heartbeat Msg
+
+**RequestHeader**
+
+| Key      | Description             |
+| -------- | ---------------- |
+| Env      | Enviroment of Client   |
+| Region   | Region of Client  |
+| Idc      | IDC of Client    |
+| Dcn      | DCN of Client    |
+| Sys      | Subsystem ID of Client |
+| Pid      | Client Process ID     |
+| Ip       | Client Ip        |
+| Username | Client username    |
+| Passwd   | Client password      |
+| Version  | Protocol version        |
+| Language | Develop language         |
+| Code     | Request Code           |
+
+**RequestBody**
+
+| Key               | Description                           |
+| ----------------- | ------------------------------ |
+| clientType        | Producer:clientType is ClientType.PUB,Consumer:clientType is ClientType.SUB                   |
+| heartbeatEntities | Heartbeat content,contains topic,url... |
+
++ Subscribe Msg
+
+**RequestHeader**
+
+same with RequestHeader of heartbeat msg
+
+**RequestBody**
+
+| Key   | Description              |
+| ----- | ----------------- |
+| topic | topic of client want to subscribe |
+| url   | url of client, server push msg to the url when receiving msg from other components   |
+
++ Unsubscribe Msg
+
+**RequestHeader**
+
+same with RequestHeader of Heartbeat Msg
+
+**RequestBody**
+
+same with RequestBody of Subscribe Msg
+
++ Send async msg
+
+**RequestHeader**
+
+same with RequestHeader of Heartbeat Msg
+
+**RequestBody**
+
+| Key      | Description                    |
+| -------- | ----------------------- |
+| topic    | topic of msg       |
+| content  | msg content |
+| ttl      | timeout time of  msg      |
+| bizSeqNo | biz sequence number of msg    |
+| uniqueId | unique mark of msg  |
+
+#### 2. Client initiates interaction
+
+| Scene         | Client Send | Server Reply           | Remark |
+| ------------ | ---------------------------- | --------------------------------------- | ---- |
+| Heartbeat         | HEARTBEAT(203)               | SUCCESS(0)/EVENTMESH_HEARTBEAT_ERROR(19)    |      |
+| Subscribe         | SUBSCRIBE(206)               | SUCCESS(0)/EVENTMESH_SUBSCRIBE_ERROR(17)    |      |
+| Unsubscribe     | UNSUBSCRIBE(207)             | SUCCESS(0)/EVENTMESH_UNSUBSCRIBE_ERROR(18)  |      |
+| Send async msg | MSG_SEND_ASYNC(104)          | SUCCESS(0)/EVENTMESH_SEND_ASYNC_MSG_ERR(14) |      |
+
+#### 3. Server initiates interaction
+
+| Scene                | Server Send | Client Reply | Remark                  |
+| ------------------ | ---------------------------- | -------------------------- | ---------------------- |
+| Push async msg to client | HTTP_PUSH_CLIENT_ASYNC(105)  | retCode              | retCode=0,send success |
\ No newline at end of file
diff --git a/docs/en/instructions/eventmesh-runtime-quickstart.md b/docs/en/instructions/eventmesh-runtime-quickstart.md
new file mode 100644
index 0000000..0536e5b
--- /dev/null
+++ b/docs/en/instructions/eventmesh-runtime-quickstart.md
@@ -0,0 +1,267 @@
+# Eventmesh-runtime Quick start Instruction
+
+## 1 Remote Deploy
+
+### 1.1 dependencies
+
+```
+64bit OS, Linux/Unix is recommended;
+64bit JDK 1.8+;
+Gradle at least 7.0, eg 7.0.*
+```
+
+### 1.2 download sources
+
+download source code from [https://github.com/apache/incubator-eventmesh](https://github.com/apache/incubator-eventmesh)  
+You will get **EventMesh-master.zip**
+
+### 1.3 build sources
+
+```$xslt
+unzip EventMesh-master.zip
+cd /*YOUR DEPLOY PATH*/EventMesh-master
+gradle clean dist tar -x test
+```
+
+You will get **EventMesh_1.2.0.tar.gz** in directory /* YOUR DEPLOY PATH */EventMesh-master/build
+
+### 1.4 Deployment
+
+- deploy eventmesh-runtime
+
+```shell
+upload Eventmesh_1.2.0.tar.gz
+tar -zxvf Eventmesh_1.2.0.tar.gz
+cd conf
+config your eventMesh.properties
+cd ../bin
+sh start.sh
+```
+
+If you see "EventMeshTCPServer[port=10000] started....", you setup runtime successfully.
+
+## 2 Run Locally
+
+### 2.1 dependencies
+
+Same with 1.1
+
+### 2.2 download sources
+
+Same with 1.2
+
+### 2.3 Run
+
+**2.3.1 Project structure:**
+
+![project-structure.png](../../images/project-structure.png)
+
+- eventmesh-common : eventmesh common classes and method module
+- eventmesh-connector-api : eventmesh connector api definition module
+- eventmesh-connector-rocketmq : eventmesh rocketmq connector module
+- eventmesh-runtime : eventmesh runtime module
+- eventmesh-sdk-java : eventmesh java client sdk
+- eventmesh-starter : eventmesh project local start entry
+
+> ps: The loading of connector plugin follows the Java SPI mechanism, it's necessary to configure the mapping file of
+related interface and implementation class under /main/resources/meta-inf/services in the corresponding module
+
+**2.3.2 Configure VM Options**
+
+```java
+-Dlog4j.configurationFile=eventmesh-runtime/conf/log4j2.xml
+-Deventmesh.log.home=eventmesh-runtime/logs
+-Deventmesh.home=eventmesh-runtime
+-DconfPath=eventmesh-runtime/conf
+```
+> ps: If you use Windows, you may need to replace the file separator to \
+
+**2.3.3 Configure build.gradle file**
+
+Specify the connector that will be loaded after the project start with updating compile project item in dependencies
+
+update `build.gradle` file under the `eventmesh-starter` module
+
+load **rocketmq connector** configuration:
+
+```java
+dependencies {
+    compile project(":eventmesh-runtime"), project(":eventmesh-connector-rocketmq")
+}
+```
+
+**2.3.4 Run**
+
+running `org.apache.eventmesh.starter.StartUp` main method
+
+## 3 Run with Docker
+
+### 3.1 Pull
+
+execute `docker pull eventmesh/eventmesh-rocketmq:v1.2.0` , you will get EventMesh image like below
+
+![image-20210309155255510](../../images/docker/docker-image.png)
+
+### 3.2 Config
+
+> **prerequisite** : may be you need download the source code from git first and use the contents of these files(eventMesh.properties and rocketmq-client.properties) as a reference for the following actions.
+
+**3.2.1 Files to configure**
+
+Before run the container you should configure some files.
+
+**eventMesh.properties**
+
+| Configuration Key      | Default Value | Remarks                    |
+| ---------------------- | ------------- | -------------------------- |
+| eventMesh.server.http.port | 10105         | EventMesh http server port |
+| eventMesh.server.tcp.port  | 10000         | EventMesh tcp server port  |
+
+**rocketmq-client.properties**
+
+| Configuration Key                 | Default Value                 | Remarks                          |
+| --------------------------------- | ----------------------------- | -------------------------------- |
+| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv default address |
+
+After pull the EventMesh image to your host machine, you can execute command below to configure **eventMesh.properties**
+and **rocketmq-client.properties**
+
+**3.2.2 Create Files**
+
+```shell
+mkdir -p /data/eventmesh/rocketmq/conf
+cd /data/eventmesh/rocketmq/conf
+vi eventMesh.properties
+vi rocketmq-client.properties
+```
+
+The contents of these files can reference
+from [eventMesh.properties](https://github.com/WeBankFinTech/EventMesh/blob/develop/eventmesh-runtime/conf/eventMesh.properties)
+and [rocketmq-client.properties](https://github.com/WeBankFinTech/EventMesh/blob/develop/eventmesh-runtime/conf/rocketmq-client.properties)
+
+### 3.3 Run
+
+**3.3.1 run**
+
+execute command below to run container
+
+```
+docker run -d -p 10000:10000 -p 10105:10105 -v /data/eventmesh/rocketmq/conf/eventMesh.properties:/data/app/eventmesh/conf/eventMesh.properties -v /data/eventmesh/rocketmq/conf/rocketmq-client.properties:/data/app/eventmesh/conf/rocketmq-client.properties docker.io/eventmesh/eventmesh-rocketmq:v1.2.0
+```
+
+> -p : binding the container port with host machine port
+>
+> -v : mount the container configuration files with host machine files
+
+**3.3.2 check container**
+
+execute `docker ps` to check the container health
+
+![image-docker-ps](../../images/docker/docker-ps.png)
+
+execute `docker logs [container id]` you will get following result:
+
+![image-docker-logs](../../images/docker/docker-logs.png)
+
+execute `docker exec -it [container id] /bin/bash` you will go into the container and see the details:
+
+![image-docker-exec](../../images/docker/docker-exec.png)
+
+### 3.4 Test
+
+**Prerequisite** :RocketMQ Namesrv & Broker
+
+you can build the rocketmq image following  [here](https://github.com/apache/rocketmq-docker) or get the rocketmq image
+from docker hub.
+
+```
+docker pull rocketmqinc/rocketmq-namesrv:4.5.0-alpine
+docker pull rocketmqinc/rocketmq-broker:4.5.0-alpine
+
+#namesrv 
+docker run -d -p 9876:9876 -v `pwd` /data/namesrv/logs:/root/logs -v `pwd`/data/namesrv/store:/root/store --name rmqnamesrv  rocketmqinc/rocketmq-namesrv:4.5.0-alpine sh mqnamesrv 
+
+#broker 
+docker run -d -p 10911:10911 -p 10909:10909 -v `pwd`/data/broker/logs:/root/logs -v `pwd`/data/broker/store:/root/store --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" rocketmqinc/rocketmq-broker:4.5.0-alpine sh mqbroker -c ../conf/broker.conf
+```
+
+When we get this point, **rocketmq-broker ip** is the **pod ip**, if you want to change the ip, you can mount the **
+broker.conf** file in container and modify **brokerIP1** configuration in this file to your custom values.
+
+**3.4.1 Run Demo**
+
+Windows
+
+- For demos running under the Windows , you can
+  refer [here](https://github.com/WeBankFinTech/EventMesh/blob/develop/docs/en/instructions/eventmesh-sdk-java-quickstart.md)
+
+Linux
+
+- **Get eventmesh-test_1.2.0-SNAPSHOT.tar.gz**
+
+  you can get this package from **our releases** or **build with source code**.
+
+  **build with source code**:
+
+  ```shell
+  cd /* Your Deploy Path */EventMesh/eventmesh-test 
+  gradle clean testdist testtar -x test`
+  ```
+
+  you will get **eventmesh-test_1.2.0-SNAPSHOT.tar.gz** under the /eventmesh-test/build
+
+- **Modify configuration files**
+
+  ```shell
+  upload eventmesh-test_1.2.0-SNAPSHOT.tar.gz
+  tar -zxvf eventmesh-test_1.2.0-SNAPSHOT.tar.gz
+  cd conf
+  config your application.properties
+  ```
+
+- **Run demo**
+
+  TCP Sub
+
+  ```shell
+  cd bin
+  sh tcp_sub.sh
+  ```
+
+  TCP Pub
+
+  ```shell
+  cd bin
+  sh tcp_pub.sh
+  ```
+
+  TCP Sub Broadcast
+
+  ```shell
+  cd bin
+  sh tcp_sub_broadcast.sh
+  ```
+
+  TCP Pub Broadcast
+
+  ```shell
+  cd bin
+  sh tcp_pub_broadcast.sh
+  ```
+
+  HTTP Sub
+
+  ```shell
+  cd bin
+  sh http_sub.sh
+  ```
+
+  HTTP Pub
+
+  ```shell
+  cd bin
+  sh http_pub.sh
+  ```
+
+  After this , you can see result of different mode in logs file under `/logs` directory
+
diff --git a/docs/en/instructions/eventmesh-sdk-java-quickstart.md b/docs/en/instructions/eventmesh-sdk-java-quickstart.md
index 2a79694..53eb673 100644
--- a/docs/en/instructions/eventmesh-sdk-java-quickstart.md
+++ b/docs/en/instructions/eventmesh-sdk-java-quickstart.md
@@ -1,119 +1,76 @@
 ## How to run eventmesh-sdk-java demo
 
-> Eventmesh-sdk-java , as the client, communicated with eventmesh-emesher, used to complete the sending and receiving of message.  
+> Eventmesh-sdk-java , as the client, communicated with eventmesh-runtime, used to complete the sending and receiving of message.
 >
-> Eventmesh-sdk-java supports sync msg, async msg and broadcast msg. Sync msg means the producer sends msg which need the consumer supplies the response msg, Async msg means the producer just sends msg and does not care reply msg.Broadcast msg means the producer send msg once and all the consumer subscribed the broadcast topic will receive the msg. 
+> Eventmesh-sdk-java supports async msg and broadcast msg. Async msg means the producer just sends msg and does not care reply msg.Broadcast msg means the producer send msg once and all the consumer subscribed the broadcast topic will receive the msg.
 >
-> Eventmesh-sdk-java supports  the protocol  of HTTP and TCP.  
+> Eventmesh-sdk-java supports  the protocol  of HTTP and TCP.
 
+TCP demos and Http demos are both under the **eventmesh-test** module.
 
-###  1. TCP DEMO
+**prerequisite**:after download the source code you should copy `/conf/application.properties` and `/conf/log4j2.xml` to
+the `resources` directory
 
-#### Sync msg 
+![image-test-structure](../../images/eventmesh-test-structure.png)
 
-- create topic
-
-```
-sh runadmin.sh updateTopic  -c ${ClusterName} -t ${topic} -n ${namesrvAddr}
-```
-
-
-
-* start consumer ,subscribe topic in previous step. 
-
-```
-Run the main method of SyncResponse
-```
-
-
-
-* start producer, send message
-
-```
-Run the main method of SyncRequest
-```
-
-
-
-#### Async msg 
-
-- create topic
-
-```
-sh runadmin.sh updateTopic  -c ${ClusterName} -t ${topic} -n ${namesrvAddr}
-```
-
-
-
-- start consumer ,subscribe topic in previous step. 
-
-```
-Run the main method of AsyncSubscribe
-```
+### 1. TCP DEMO
 
+#### Async msg
 
+- create topic TEST-TOPIC-TCP-ASYNC on rocketmq-console
 
-start producer, send  message
+- start consumer ,subscribe topic in previous step.
 
 ```
-Run the main method of AsyncPublish
+Run the main method of org.apache.eventmesh.tcp.demo.AsyncSubscribe
 ```
 
-
-
-#### Broadcast msg 
-
-- create topic
+- start producer, send message
 
 ```
-sh runadmin.sh updateTopic  -c ${ClusterName} -t ${topic} -n ${namesrvAddr}
+Run the main method of org.apache.eventmesh.tcp.demo.AsyncPublish
 ```
 
+#### Broadcast msg
 
+- create topic TEST-TOPIC-TCP-BROADCAST on rocketmq-console
 
-- start consumer ,subscribe topic in previous step. 
+- start consumer ,subscribe topic in previous step.
 
 ```
-Run the main method of AsyncSubscribeBroadcast
+Run the main method of org.apache.eventmesh.tcp.demo.AsyncSubscribeBroadcast
 ```
 
-
-
 * start producer, send broadcast message
 
 ```
-Run the main method of AsyncPublishBroadcast
+Run the main method of org.apache.eventmesh.tcp.demo.AsyncPublishBroadcast
 ```
 
 ### 2. HTTP DEMO
 
-> As to http, eventmesh-sdk-java just implements  the sending of msg. And it already  supports sync msg and async msg.
+> As to http, eventmesh-sdk-java implements  the pub and sub for async event .
 >
 > In the demo ,the field of `content` of the java class `LiteMessage` represents a special protocal, so if you want to use http-client of eventmesh-sdk-java, you just need to design the content of protocal and supply the consumer appliacation at the same time.
 
+#### Async event
 
+> producer send the event to consumer and don't need waiting response msg from consumer
 
-#### Sync msg
-
-> send msg ,producer need waiting until receive the response msg of consumer
-
-```
-Run the main method of SyncRequestInstance
-```
-
+- create topic TEST-TOPIC-HTTP-ASYNC on rocketmq-console
 
+- start consumer, subscribe topic
 
-> send msg,producer handles the reponse msg in callback
+  Async consumer demo is a spring boot application demo, you can easily run this demo to start service and subscribe the
+  topic.
 
 ```
-Run the main method of com.webank.eventmesh.client.http.demo.AsyncSyncRequestInstance
+Run the main method of org.apache.eventmesh.http.demo.sub.SpringBootDemoApplication
 ```
 
-
-
-#### Async msg
+- start producer, produce msg
 
 ```
-Run the main method of AsyncPublishInstance
+Run the main method of org.apache.eventmesh.http.demo.AsyncPublishInstance
 ```
 
diff --git a/docs/en/instructions/eventmesh-store-quickstart.md b/docs/en/instructions/eventmesh-store-quickstart.md
index 8ba16d9..74158e8 100644
--- a/docs/en/instructions/eventmesh-store-quickstart.md
+++ b/docs/en/instructions/eventmesh-store-quickstart.md
@@ -1,6 +1,7 @@
 # Eventmesh-store Quick start Instruction
 
 ### dependencies
+
 ```
 64bit OS, Linux/Unix is recommended;
 64bit JDK 1.8+;
@@ -9,29 +10,38 @@ Gradle at least 5.6, eg 5.6.*
 ```
 
 ### download sources
+
 download source code from [https://github.com/WeBankFinTech/DeFiBus](https://github.com/WeBankFinTech/DeFiBus)  
 You will get **DefiBus-master.zip**
 
 ### build sources
-The eventmesh-store takes DeFiBus for example at the follwing parts, because eventmesh depends on defibus as store layer by default, other implements such as Rocketmq etc. is coming soon.  
+
+The eventmesh-store takes DeFiBus for example at the following parts, because eventmesh depends on defibus as store layer
+by default, other implements such as Rocketmq etc. is coming soon.
+
 ```
 unzip DefiBus-master.zip
 cd /*YOUR DEPLOY PATH*/DefiBus-master
 gradle clean dist tar -x test
 ```
+
 You will get **DeFiBus_1.0.0.tar.gz** in directory /* YOUR DEPLOY PATH */DefiBus-master/build
 
 ### Deployment
-- deploy DeFiBusNamesrv  
+
+- deploy DeFiBusNamesrv
+
 ```
 upload DeFiBus_1.0.0.tar.gz
 tar -zxvf DeFiBus_1.0.0.tar.gz
 cd bin
 sh runnamesrv.sh
 ```
+
 If you see "Thre Name Server boot success" in ../logs/namesrv.log, you setup DeFiBus Namesrv successfully.
 
 - deploy DeFiBusBroker
+
 ```
 upload DeFiBus_1.0.0.tar.gz
 tar -zxvf DeFiBus_1.0.0.tar.gz
@@ -40,6 +50,7 @@ config your broker.properties
 cd ../bin
 sh runbroker.sh
 ```
-If you see "The broker \[YOUR-BROKER-NAME, IP:PORT\] boot success." in ../logs/broker.log, 
-you setup eventmesh-store successfully.
+
+If you see "The broker \[YOUR-BROKER-NAME, IP:PORT\] boot success." in ../logs/broker.log, you setup eventmesh-store
+successfully.
 
diff --git a/docs/en/instructions/quickstart.md b/docs/en/instructions/quickstart.md
index 63e57c9..697dd7c 100644
--- a/docs/en/instructions/quickstart.md
+++ b/docs/en/instructions/quickstart.md
@@ -1,6 +1,7 @@
 # Quick start Instruction
 
 ### dependencies
+
 ```
 64bit OS, Linux/Unix is recommended;
 64bit JDK 1.8+;
@@ -8,10 +9,13 @@ Gradle at least 5.6, eg 5.6.*
 ```
 
 ### Deploy eventmesh-store
+
 Read more [here](eventmesh-store-quickstart.md)
 
-### Deploy eventmesn-emesher
-Read more [here](eventmesh-emesher-quickstart.md)
+### Deploy eventmesh-runtime
+
+Read more [here](eventmesh-runtime-quickstart.md)
 
 ### Run eventmesh sdk demo
+
 Read more [here](eventmesh-sdk-java-quickstart.md)
\ No newline at end of file
diff --git a/docs/eventmesh.md b/docs/eventmesh.md
index 70b6102..432c093 100644
--- a/docs/eventmesh.md
+++ b/docs/eventmesh.md
@@ -1,33 +1,36 @@
 ## 什么是Event Mesh?
-该图显示了Event Mesh相对于应用程序框架中其他类似技术(例如Service Mesh)的定位.
-![architecture1](docs/images/eventmesh-define.png)
 
-Event Mesh是一个动态的插件式云原生基础服务层,用于分离应用程序和中间件层。它提供了灵活,可靠和快速的事件分发,并且可以进行管理:
-![architecture1](docs/images/eventmesher.png)
+EventMesh是一个动态的云原生事件驱动架构基础设施,用于分离应用程序和后端中间件层,它支持广泛的用例,包括复杂的混合云、使用了不同技术栈的分布式架构。
+![architecture1](images/eventmesh-define.png)
 
-云原生Event Mesh:
-![architecture2](docs/images/bus.png)
+**EventMesh架构:**
+
+![architecture1](images/eventmesh-runtime.png)
+
+**EventMesh云原生结构:**
+
+![architecture2](images/eventmesh-panels.png)
+
+EventMesh允许将来自一个应用程序的事件动态路由到任何其他应用程序. EventMesh的一般功能:
 
-Event Mesh允许将来自一个应用程序的事件动态路由到任何其他应用程序.
-Event Mesh的一般功能:
 * 事件驱动;
 * 事件治理;
 * 动态路由;
 * 云原生;
 
 依赖部件:
-* 可选1:DeFiBus:具有低延迟,高性能和可靠性,和灵活可伸缩性的分布式消息传递平台 [DeFiBus](https://github.com/WeBankFinTech/DeFiBus)
-* 可选2:RocketMQ
+
+* [RocketMQ](https://github.com/apache/rocketmq):RocketMQ是一个分布式消息流平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的可伸缩性。
 
 关键部件:
-* event mesher:一种中间件,用于在事件产生者和使用者之间传输事件,支持云原生应用程序和微服务
-* sdk:当前支持HTTP和TCP协议,未来会支持gRPC等
-* registry:自动在连接到事件网格的应用程序和服务之间路由事件, 管理event mesher
 
+* eventmesh-runtime:一种中间件,用于在事件产生者和使用者之间传输事件,支持云原生应用程序和微服务
+* eventmesh-sdk-java:当前支持HTTP和TCP协议,未来会支持gRPC等
 
 ## 开源地址
+
 * https://github.com/WeBankFinTech/DeFiBus
-* https://github.com/WeBankFinTech/EventMesh
+* https://github.com/apache/incubator-eventmesh
 * https://gitee.com/WeBank/DeFiBus
 * https://gitee.com/WeBank/EventMesh
 
diff --git a/docs/images/docker/docker-exec.png b/docs/images/docker/docker-exec.png
new file mode 100644
index 0000000..f605921
Binary files /dev/null and b/docs/images/docker/docker-exec.png differ
diff --git a/docs/images/docker/docker-image.png b/docs/images/docker/docker-image.png
new file mode 100644
index 0000000..5ca8002
Binary files /dev/null and b/docs/images/docker/docker-image.png differ
diff --git a/docs/images/docker/docker-logs.png b/docs/images/docker/docker-logs.png
new file mode 100644
index 0000000..8cd3c4d
Binary files /dev/null and b/docs/images/docker/docker-logs.png differ
diff --git a/docs/images/docker/docker-ps.png b/docs/images/docker/docker-ps.png
new file mode 100644
index 0000000..9ae1c52
Binary files /dev/null and b/docs/images/docker/docker-ps.png differ
diff --git a/docs/images/eventmesh-define.png b/docs/images/eventmesh-define.png
index 0f28170..971afcc 100644
Binary files a/docs/images/eventmesh-define.png and b/docs/images/eventmesh-define.png differ
diff --git a/docs/images/eventmesh-multi-runtime.png b/docs/images/eventmesh-multi-runtime.png
new file mode 100644
index 0000000..a9b90be
Binary files /dev/null and b/docs/images/eventmesh-multi-runtime.png differ
diff --git a/docs/images/eventmesh-panels.png b/docs/images/eventmesh-panels.png
new file mode 100644
index 0000000..898dbb4
Binary files /dev/null and b/docs/images/eventmesh-panels.png differ
diff --git a/docs/images/eventmesh-runtime.png b/docs/images/eventmesh-runtime.png
new file mode 100644
index 0000000..a87a8d6
Binary files /dev/null and b/docs/images/eventmesh-runtime.png differ
diff --git a/docs/images/eventmesh-test-structure.png b/docs/images/eventmesh-test-structure.png
new file mode 100644
index 0000000..b783f1e
Binary files /dev/null and b/docs/images/eventmesh-test-structure.png differ
diff --git a/docs/images/logo1.png b/docs/images/logo1.png
new file mode 100644
index 0000000..00cba89
Binary files /dev/null and b/docs/images/logo1.png differ
diff --git a/docs/images/logo2.png b/docs/images/logo2.png
new file mode 100644
index 0000000..2480208
Binary files /dev/null and b/docs/images/logo2.png differ
diff --git a/docs/images/project-structure.png b/docs/images/project-structure.png
new file mode 100644
index 0000000..252a953
Binary files /dev/null and b/docs/images/project-structure.png differ
diff --git a/docs/images/protocol/eventmesh-async-msg.png b/docs/images/protocol/eventmesh-async-msg.png
new file mode 100644
index 0000000..4ad6ac4
Binary files /dev/null and b/docs/images/protocol/eventmesh-async-msg.png differ
diff --git a/docs/images/protocol/eventmesh-broadcast-msg.png b/docs/images/protocol/eventmesh-broadcast-msg.png
new file mode 100644
index 0000000..7c3be10
Binary files /dev/null and b/docs/images/protocol/eventmesh-broadcast-msg.png differ
diff --git a/docs/images/protocol/eventmesh-rr-msg.png b/docs/images/protocol/eventmesh-rr-msg.png
new file mode 100644
index 0000000..b1c462f
Binary files /dev/null and b/docs/images/protocol/eventmesh-rr-msg.png differ
diff --git a/docs/images/protocol/eventmesh-tcp-dataFlow.png b/docs/images/protocol/eventmesh-tcp-dataFlow.png
new file mode 100644
index 0000000..d3c1249
Binary files /dev/null and b/docs/images/protocol/eventmesh-tcp-dataFlow.png differ
diff --git a/docs/images/protocol/eventmesh-tcp-dataFlow_EN.png b/docs/images/protocol/eventmesh-tcp-dataFlow_EN.png
new file mode 100644
index 0000000..4918cc7
Binary files /dev/null and b/docs/images/protocol/eventmesh-tcp-dataFlow_EN.png differ
diff --git a/eventmesh-common/build.gradle b/eventmesh-common/build.gradle
index e24499d..d973dce 100644
--- a/eventmesh-common/build.gradle
+++ b/eventmesh-common/build.gradle
@@ -13,84 +13,4 @@
  * 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.
- */
-
-apply plugin: 'java'
-apply plugin: "maven"
-apply plugin: "eclipse"
-apply plugin: "idea"
-
-if (project.findProperty("jdk") == "1.7") {
-    sourceCompatibility = 1.7
-    targetCompatibility = 1.7
-} else {
-    sourceCompatibility = 1.8
-    targetCompatibility = 1.8
-    version = version + "-jdk8"
-}
-
-if (project.findProperty("snapshot") instanceof String) {
-    if (project.property("snapshot").toBoolean()) version = version + "-SNAPSHOT"
-}
-
-repositories {
-    mavenLocal()
-    maven {
-        url "https://maven.aliyun.com/repository/public"
-    }
-    mavenCentral()
-}
-
-List fastjson = [
-        "com.alibaba:fastjson:1.2.71"
-]
-
-List jackson = [
-        'com.fasterxml.jackson.core:jackson-databind:2.11.0',
-        'com.fasterxml.jackson.core:jackson-core:2.11.0',
-        'com.fasterxml.jackson.core:jackson-annotations:2.11.0'
-]
-
-List apache_commons = [
-        "org.apache.commons:commons-lang3:3.6",
-        "org.apache.commons:commons-collections4:4.1"
-]
-
-List httpclient = [
-        "org.apache.httpcomponents:httpclient:4.5.2"
-]
-
-List guava = [
-        "com.google.guava:guava:29.0-jre"
-]
-
-List netty = [
-        "io.netty:netty-all:4.1.49.Final"
-]
-
-List defibus = [
-        "com.webank.defibus:defibus-client:$defibus_version",
-        "com.webank.defibus:defibus-common:$defibus_version"
-]
-
-dependencies {
-    compile apache_commons, httpclient, guava, netty, fastjson, defibus, jackson
-    testCompile apache_commons, httpclient, guava, netty, fastjson, defibus, jackson
-}
-
-uploadArchives {
-    repositories {
-        mavenDeployer {
-            snapshotRepository(url: 'Your target repo address') {
-                authentication(userName: 'Your user name', password: 'Your password')
-            }
-            repository(url: 'Your target repo address') {
-                authentication(userName: 'Your user name', password: 'Your password')
-            }
-        }
-    }
-}
-
-tasks.withType(JavaCompile) {
-    options.encoding = "UTF-8"
-}
\ No newline at end of file
+ */
\ No newline at end of file
diff --git a/eventmesh-common/gradle.properties b/eventmesh-common/gradle.properties
index e9bfb7f..72ea1ac 100644
--- a/eventmesh-common/gradle.properties
+++ b/eventmesh-common/gradle.properties
@@ -14,9 +14,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-group=com.webank.eventmesh
-version=1.1.1
-defibus_version=1.0.1
-jdk=1.7
-snapshot=false
+group=org.apache.eventmesh
+version=1.2.0-release
+jdk=1.8
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java b/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java
deleted file mode 100644
index 1ecfb88..0000000
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java
+++ /dev/null
@@ -1,21 +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 com.webank.eventmesh.common.protocol.http.body.client;
-
-public class UnSubscribeResponseBody {
-}
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/common/ProxyRetCode.java b/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/common/ProxyRetCode.java
deleted file mode 100644
index b9b2e90..0000000
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/common/ProxyRetCode.java
+++ /dev/null
@@ -1,64 +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 com.webank.eventmesh.common.protocol.http.common;
-
-public enum ProxyRetCode {
-
-    SUCCESS(0, "success"),
-    OVERLOAD(1, "proxy overload, try later, "),
-    PROXY_REQUESTCODE_INVALID(2, "requestCode can't be null, or must be number, "),
-    PROXY_SEND_SYNC_MSG_ERR(3, "proxy send rr msg err, "),
-    PROXY_WAITING_RR_MSG_ERR(4, "proxy waiting rr msg err, "),
-    PROXY_PROTOCOL_HEADER_ERR(6, "proxy protocol[header] err, "),
-    PROXY_PROTOCOL_BODY_ERR(7, "proxy protocol[body] err, "),
-    PROXY_STOP(8, "proxy will stop or had stopped, "),
-    PROXY_REJECT_BY_PROCESSOR_ERROR(9, "proxy reject by processor error, "),
-    PROXY_BATCH_PRODUCER_STOPED_ERR(10, "proxy batch msg producer stopped, "),
-    PROXY_SEND_BATCHLOG_MSG_ERR(17, "proxy send batchlog msg err, "),
-    PROXY_BATCH_SPEED_OVER_LIMIT_ERR(11, "proxy batch msg speed over the limit, "),
-    PROXY_PACKAGE_MSG_ERR(12, "proxy package msg err, "),
-    PROXY_GROUP_PRODUCER_STOPED_ERR(13, "proxy group producer stopped, "),
-    PROXY_SEND_ASYNC_MSG_ERR(14, "proxy send async msg err, "),
-    PROXY_REPLY_MSG_ERR(15, "proxy reply msg err, "),
-    PROXY_RUNTIME_ERR(16, "proxy runtime err, ");
-
-    private Integer retCode;
-
-    private String errMsg;
-
-    ProxyRetCode(Integer retCode, String errMsg) {
-        this.retCode = retCode;
-        this.errMsg = errMsg;
-    }
-
-    public Integer getRetCode() {
-        return retCode;
-    }
-
-    public void setRetCode(Integer retCode) {
-        this.retCode = retCode;
-    }
-
-    public String getErrMsg() {
-        return errMsg;
-    }
-
-    public void setErrMsg(String errMsg) {
-        this.errMsg = errMsg;
-    }
-}
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/client/HeartbeatResponseHeader.java b/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/client/HeartbeatResponseHeader.java
deleted file mode 100644
index 14e0d30..0000000
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/client/HeartbeatResponseHeader.java
+++ /dev/null
@@ -1,139 +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 com.webank.eventmesh.common.protocol.http.header.client;
-
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.protocol.http.header.Header;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class HeartbeatResponseHeader extends Header {
-
-    private int code;
-
-    private String proxyCluster;
-
-    private String proxyIp;
-
-    private String proxyEnv;
-
-    private String proxyRegion;
-
-    private String proxyIdc;
-
-    private String proxyDcn;
-
-    public int getCode() {
-        return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
-    }
-
-    public String getProxyCluster() {
-        return proxyCluster;
-    }
-
-    public void setProxyCluster(String proxyCluster) {
-        this.proxyCluster = proxyCluster;
-    }
-
-    public String getProxyIp() {
-        return proxyIp;
-    }
-
-    public void setProxyIp(String proxyIp) {
-        this.proxyIp = proxyIp;
-    }
-
-    public String getProxyEnv() {
-        return proxyEnv;
-    }
-
-    public void setProxyEnv(String proxyEnv) {
-        this.proxyEnv = proxyEnv;
-    }
-
-    public String getProxyRegion() {
-        return proxyRegion;
-    }
-
-    public void setProxyRegion(String proxyRegion) {
-        this.proxyRegion = proxyRegion;
-    }
-
-    public String getProxyIdc() {
-        return proxyIdc;
-    }
-
-    public void setProxyIdc(String proxyIdc) {
-        this.proxyIdc = proxyIdc;
-    }
-
-    public String getProxyDcn() {
-        return proxyDcn;
-    }
-
-    public void setProxyDcn(String proxyDcn) {
-        this.proxyDcn = proxyDcn;
-    }
-
-    public static HeartbeatResponseHeader buildHeader(Integer requestCode, String proxyCluster,
-                                                String proxyIp, String proxyEnv, String proxyRegion,
-                                                      String proxyDcn, String proxyIDC) {
-        HeartbeatResponseHeader heartbeatResponseHeader = new HeartbeatResponseHeader();
-        heartbeatResponseHeader.setCode(requestCode);
-        heartbeatResponseHeader.setProxyCluster(proxyCluster);
-        heartbeatResponseHeader.setProxyDcn(proxyDcn);
-        heartbeatResponseHeader.setProxyIp(proxyIp);
-        heartbeatResponseHeader.setProxyEnv(proxyEnv);
-        heartbeatResponseHeader.setProxyRegion(proxyRegion);
-        heartbeatResponseHeader.setProxyIdc(proxyIDC);
-        return heartbeatResponseHeader;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("heartbeatResponseHeader={")
-                .append("code=").append(code).append(",")
-                .append("proxyEnv=").append(proxyEnv).append(",")
-                .append("proxyRegion=").append(proxyRegion).append(",")
-                .append("proxyIdc=").append(proxyIdc).append(",")
-                .append("proxyDcn=").append(proxyDcn).append(",")
-                .append("proxyCluster=").append(proxyCluster).append(",")
-                .append("proxyIp=").append(proxyIp).append("}");
-        return sb.toString();
-    }
-
-    @Override
-    public Map<String, Object> toMap() {
-        Map<String, Object> map = new HashMap<String, Object>();
-        map.put(ProtocolKey.REQUEST_CODE, code);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYCLUSTER, proxyCluster);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIP, proxyIp);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYENV, proxyEnv);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYREGION, proxyRegion);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIDC, proxyIdc);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYDCN, proxyDcn);
-        return map;
-    }
-}
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/client/RegResponseHeader.java b/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/client/RegResponseHeader.java
deleted file mode 100644
index 09fdbfe..0000000
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/client/RegResponseHeader.java
+++ /dev/null
@@ -1,147 +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 com.webank.eventmesh.common.protocol.http.header.client;
-
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.protocol.http.header.Header;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class RegResponseHeader extends Header {
-
-    //响应码, 与对应Request的code一致
-    private int code;
-
-    //处理该次Request请求的proxy的集群名
-    private String proxyCluster;
-
-    //处理该次Request请求的proxy的IP
-    private String proxyIp;
-
-    //处理该次Request请求的proxy所在的环境编号
-    private String proxyEnv;
-
-    //处理该次Request请求的proxy所在区域
-    private String proxyRegion;
-
-    //处理该次Request请求的proxy所在IDC
-    private String proxyIdc;
-
-    //处理该次Request请求的proxy所在DCN
-    private String proxyDcn;
-
-    public int getCode() {
-        return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
-    }
-
-    public String getProxyCluster() {
-        return proxyCluster;
-    }
-
-    public void setProxyCluster(String proxyCluster) {
-        this.proxyCluster = proxyCluster;
-    }
-
-    public String getProxyIp() {
-        return proxyIp;
-    }
-
-    public void setProxyIp(String proxyIp) {
-        this.proxyIp = proxyIp;
-    }
-
-    public String getProxyEnv() {
-        return proxyEnv;
-    }
-
-    public void setProxyEnv(String proxyEnv) {
-        this.proxyEnv = proxyEnv;
-    }
-
-    public String getProxyRegion() {
-        return proxyRegion;
-    }
-
-    public void setProxyRegion(String proxyRegion) {
-        this.proxyRegion = proxyRegion;
-    }
-
-    public String getProxyIdc() {
-        return proxyIdc;
-    }
-
-    public void setProxyIdc(String proxyIdc) {
-        this.proxyIdc = proxyIdc;
-    }
-
-    public String getProxyDcn() {
-        return proxyDcn;
-    }
-
-    public void setProxyDcn(String proxyDcn) {
-        this.proxyDcn = proxyDcn;
-    }
-
-    public static RegResponseHeader buildHeader(Integer requestCode, String proxyCluster,
-                                                        String proxyIp, String proxyEnv, String proxyRegion,
-                                                String proxyDcn, String proxyIDC) {
-        RegResponseHeader regResponseHeader = new RegResponseHeader();
-        regResponseHeader.setCode(requestCode);
-        regResponseHeader.setProxyCluster(proxyCluster);
-        regResponseHeader.setProxyDcn(proxyDcn);
-        regResponseHeader.setProxyIp(proxyIp);
-        regResponseHeader.setProxyEnv(proxyEnv);
-        regResponseHeader.setProxyRegion(proxyRegion);
-        regResponseHeader.setProxyIdc(proxyIDC);
-        return regResponseHeader;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("regResponseHeader={")
-                .append("code=").append(code).append(",")
-                .append("proxyEnv=").append(proxyEnv).append(",")
-                .append("proxyRegion=").append(proxyRegion).append(",")
-                .append("proxyIdc=").append(proxyIdc).append(",")
-                .append("proxyDcn=").append(proxyDcn).append(",")
-                .append("proxyCluster=").append(proxyCluster).append(",")
-                .append("proxyIp=").append(proxyIp).append("}");
-        return sb.toString();
-    }
-
-    @Override
-    public Map<String, Object> toMap() {
-        Map<String, Object> map = new HashMap<String, Object>();
-        map.put(ProtocolKey.REQUEST_CODE, code);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYCLUSTER, proxyCluster);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIP, proxyIp);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYENV, proxyEnv);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYREGION, proxyRegion);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIDC, proxyIdc);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYDCN, proxyDcn);
-        return map;
-    }
-
-}
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/client/UnRegResponseHeader.java b/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/client/UnRegResponseHeader.java
deleted file mode 100644
index 0a61cbb..0000000
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/client/UnRegResponseHeader.java
+++ /dev/null
@@ -1,140 +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 com.webank.eventmesh.common.protocol.http.header.client;
-
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.protocol.http.header.Header;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class UnRegResponseHeader extends Header {
-
-    private int code;
-
-    private String proxyCluster;
-
-    private String proxyIp;
-
-    private String proxyEnv;
-
-    private String proxyRegion;
-
-    private String proxyIdc;
-
-    private String proxyDcn;
-
-    public int getCode() {
-        return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
-    }
-
-    public String getProxyCluster() {
-        return proxyCluster;
-    }
-
-    public void setProxyCluster(String proxyCluster) {
-        this.proxyCluster = proxyCluster;
-    }
-
-    public String getProxyIp() {
-        return proxyIp;
-    }
-
-    public void setProxyIp(String proxyIp) {
-        this.proxyIp = proxyIp;
-    }
-
-    public String getProxyEnv() {
-        return proxyEnv;
-    }
-
-    public void setProxyEnv(String proxyEnv) {
-        this.proxyEnv = proxyEnv;
-    }
-
-    public String getProxyRegion() {
-        return proxyRegion;
-    }
-
-    public void setProxyRegion(String proxyRegion) {
-        this.proxyRegion = proxyRegion;
-    }
-
-    public String getProxyIdc() {
-        return proxyIdc;
-    }
-
-    public void setProxyIdc(String proxyIdc) {
-        this.proxyIdc = proxyIdc;
-    }
-
-    public String getProxyDcn() {
-        return proxyDcn;
-    }
-
-    public void setProxyDcn(String proxyDcn) {
-        this.proxyDcn = proxyDcn;
-    }
-
-    public static UnRegResponseHeader buildHeader(Integer requestCode, String proxyCluster,
-                                                String proxyIp, String proxyEnv, String proxyRegion,
-                                                  String proxyDcn, String proxyIDC) {
-        UnRegResponseHeader regResponseHeader = new UnRegResponseHeader();
-        regResponseHeader.setCode(requestCode);
-        regResponseHeader.setProxyCluster(proxyCluster);
-        regResponseHeader.setProxyDcn(proxyDcn);
-        regResponseHeader.setProxyIp(proxyIp);
-        regResponseHeader.setProxyEnv(proxyEnv);
-        regResponseHeader.setProxyRegion(proxyRegion);
-        regResponseHeader.setProxyIdc(proxyIDC);
-        return regResponseHeader;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("nnRegResponseHeader={")
-                .append("code=").append(code).append(",")
-                .append("proxyEnv=").append(proxyEnv).append(",")
-                .append("proxyRegion=").append(proxyRegion).append(",")
-                .append("proxyIdc=").append(proxyIdc).append(",")
-                .append("proxyDcn=").append(proxyDcn).append(",")
-                .append("proxyCluster=").append(proxyCluster).append(",")
-                .append("proxyIp=").append(proxyIp).append("}");
-        return sb.toString();
-    }
-
-    @Override
-    public Map<String, Object> toMap() {
-        Map<String, Object> map = new HashMap<String, Object>();
-        map.put(ProtocolKey.REQUEST_CODE, code);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYCLUSTER, proxyCluster);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIP, proxyIp);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYENV, proxyEnv);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIDC, proxyIdc);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYREGION, proxyRegion);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYDCN, proxyDcn);
-        return map;
-    }
-
-}
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/ReplyMessageResponseHeader.java b/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/ReplyMessageResponseHeader.java
deleted file mode 100644
index 6a68107..0000000
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/ReplyMessageResponseHeader.java
+++ /dev/null
@@ -1,146 +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 com.webank.eventmesh.common.protocol.http.header.message;
-
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.protocol.http.header.Header;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class ReplyMessageResponseHeader extends Header {
-
-    //响应码, 与对应Request的code一致
-    private int code;
-
-    //处理该次Request请求的proxy的集群名
-    private String proxyCluster;
-
-    //处理该次Request请求的proxy的IP
-    private String proxyIp;
-
-    //处理该次Request请求的proxy所在的环境编号
-    private String proxyEnv;
-
-    //处理该次Request请求的proxy所在区域
-    private String proxyRegion;
-
-    //处理该次Request请求的proxy所在IDC
-    private String proxyIdc;
-
-    //处理该次Request请求的proxy所在DCN
-    private String proxyDcn;
-
-    public int getCode() {
-        return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
-    }
-
-    public String getProxyCluster() {
-        return proxyCluster;
-    }
-
-    public void setProxyCluster(String proxyCluster) {
-        this.proxyCluster = proxyCluster;
-    }
-
-    public String getProxyIp() {
-        return proxyIp;
-    }
-
-    public void setProxyIp(String proxyIp) {
-        this.proxyIp = proxyIp;
-    }
-
-    public String getProxyEnv() {
-        return proxyEnv;
-    }
-
-    public void setProxyEnv(String proxyEnv) {
-        this.proxyEnv = proxyEnv;
-    }
-
-    public String getProxyRegion() {
-        return proxyRegion;
-    }
-
-    public void setProxyRegion(String proxyRegion) {
-        this.proxyRegion = proxyRegion;
-    }
-
-    public String getProxyIdc() {
-        return proxyIdc;
-    }
-
-    public void setProxyIdc(String proxyIdc) {
-        this.proxyIdc = proxyIdc;
-    }
-
-    public String getProxyDcn() {
-        return proxyDcn;
-    }
-
-    public void setProxyDcn(String proxyDcn) {
-        this.proxyDcn = proxyDcn;
-    }
-
-    public static ReplyMessageResponseHeader buildHeader(Integer requestCode, String proxyCluster,
-                                                        String proxyIp, String proxyEnv, String proxyRegion,
-                                                         String proxyDcn, String proxyIDC) {
-        ReplyMessageResponseHeader replyMessageResponseHeader = new ReplyMessageResponseHeader();
-        replyMessageResponseHeader.setCode(requestCode);
-        replyMessageResponseHeader.setProxyCluster(proxyCluster);
-        replyMessageResponseHeader.setProxyDcn(proxyDcn);
-        replyMessageResponseHeader.setProxyIp(proxyIp);
-        replyMessageResponseHeader.setProxyEnv(proxyEnv);
-        replyMessageResponseHeader.setProxyRegion(proxyRegion);
-        replyMessageResponseHeader.setProxyIdc(proxyIDC);
-        return replyMessageResponseHeader;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("replyMessageResponseHeader={")
-                .append("code=").append(code).append(",")
-                .append("proxyEnv=").append(proxyEnv).append(",")
-                .append("proxyRegion=").append(proxyRegion).append(",")
-                .append("proxyIdc=").append(proxyIdc).append(",")
-                .append("proxyDcn=").append(proxyDcn).append(",")
-                .append("proxyCluster=").append(proxyCluster).append(",")
-                .append("proxyIp=").append(proxyIp).append("}");
-        return sb.toString();
-    }
-
-    @Override
-    public Map<String, Object> toMap() {
-        Map<String, Object> map = new HashMap<String, Object>();
-        map.put(ProtocolKey.REQUEST_CODE, code);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYCLUSTER, proxyCluster);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIP, proxyIp);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYENV, proxyEnv);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIDC, proxyIdc);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYREGION, proxyRegion);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYDCN, proxyDcn);
-        return map;
-    }
-}
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/SendMessageBatchResponseHeader.java b/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/SendMessageBatchResponseHeader.java
deleted file mode 100644
index 8fc000d..0000000
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/SendMessageBatchResponseHeader.java
+++ /dev/null
@@ -1,146 +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 com.webank.eventmesh.common.protocol.http.header.message;
-
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.protocol.http.header.Header;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class SendMessageBatchResponseHeader extends Header {
-
-    //响应码, 与对应Request的code一致
-    private int code;
-
-    //处理该次Request请求的proxy的集群名
-    private String proxyCluster;
-
-    //处理该次Request请求的proxy的IP
-    private String proxyIp;
-
-    //处理该次Request请求的proxy所在的环境编号
-    private String proxyEnv;
-
-    //处理该次Request请求的proxy所在区域
-    private String proxyRegion;
-
-    //处理该次Request请求的proxy所在IDC
-    private String proxyIdc;
-
-    //处理该次Request请求的proxy所在DCN
-    private String proxyDcn;
-
-    public int getCode() {
-        return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
-    }
-
-    public String getProxyCluster() {
-        return proxyCluster;
-    }
-
-    public void setProxyCluster(String proxyCluster) {
-        this.proxyCluster = proxyCluster;
-    }
-
-    public String getProxyIp() {
-        return proxyIp;
-    }
-
-    public void setProxyIp(String proxyIp) {
-        this.proxyIp = proxyIp;
-    }
-
-    public String getProxyEnv() {
-        return proxyEnv;
-    }
-
-    public void setProxyEnv(String proxyEnv) {
-        this.proxyEnv = proxyEnv;
-    }
-
-    public String getProxyRegion() {
-        return proxyRegion;
-    }
-
-    public void setProxyRegion(String proxyRegion) {
-        this.proxyRegion = proxyRegion;
-    }
-
-    public String getProxyIdc() {
-        return proxyIdc;
-    }
-
-    public void setProxyIdc(String proxyIdc) {
-        this.proxyIdc = proxyIdc;
-    }
-
-    public String getProxyDcn() {
-        return proxyDcn;
-    }
-
-    public void setProxyDcn(String proxyDcn) {
-        this.proxyDcn = proxyDcn;
-    }
-
-    public static SendMessageBatchResponseHeader buildHeader(Integer requestCode, String proxyCluster,
-                                                             String proxyIp, String proxyEnv, String proxyRegion,
-                                                             String proxyDcn, String proxyIDC) {
-        SendMessageBatchResponseHeader sendMessageBatchResponseHeader = new SendMessageBatchResponseHeader();
-        sendMessageBatchResponseHeader.setCode(requestCode);
-        sendMessageBatchResponseHeader.setProxyCluster(proxyCluster);
-        sendMessageBatchResponseHeader.setProxyDcn(proxyDcn);
-        sendMessageBatchResponseHeader.setProxyEnv(proxyEnv);
-        sendMessageBatchResponseHeader.setProxyRegion(proxyRegion);
-        sendMessageBatchResponseHeader.setProxyIdc(proxyIDC);
-        sendMessageBatchResponseHeader.setProxyIp(proxyIp);
-        return sendMessageBatchResponseHeader;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("sendMessageBatchResponseHeader={")
-                .append("code=").append(code).append(",")
-                .append("proxyEnv=").append(proxyEnv).append(",")
-                .append("proxyRegion=").append(proxyRegion).append(",")
-                .append("proxyIdc=").append(proxyIdc).append(",")
-                .append("proxyDcn=").append(proxyDcn).append(",")
-                .append("proxyCluster=").append(proxyCluster).append(",")
-                .append("proxyIp=").append(proxyIp).append("}");
-        return sb.toString();
-    }
-
-    @Override
-    public Map<String, Object> toMap() {
-        Map<String, Object> map = new HashMap<String, Object>();
-        map.put(ProtocolKey.REQUEST_CODE, code);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYCLUSTER, proxyCluster);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIP, proxyIp);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYENV, proxyEnv);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYREGION, proxyRegion);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIDC, proxyIdc);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYDCN, proxyDcn);
-        return map;
-    }
-}
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/SendMessageBatchV2ResponseHeader.java b/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/SendMessageBatchV2ResponseHeader.java
deleted file mode 100644
index 93a0334..0000000
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/SendMessageBatchV2ResponseHeader.java
+++ /dev/null
@@ -1,145 +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 com.webank.eventmesh.common.protocol.http.header.message;
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.protocol.http.header.Header;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class SendMessageBatchV2ResponseHeader extends Header {
-
-    //响应码, 与对应Request的code一致
-    private int code;
-
-    //处理该次Request请求的proxy的集群名
-    private String proxyCluster;
-
-    //处理该次Request请求的proxy的IP
-    private String proxyIp;
-
-    //处理该次Request请求的proxy所在的环境编号
-    private String proxyEnv;
-
-    //处理该次Request请求的proxy所在区域
-    private String proxyRegion;
-
-    //处理该次Request请求的proxy所在IDC
-    private String proxyIdc;
-
-    //处理该次Request请求的proxy所在DCN
-    private String proxyDcn;
-
-    public int getCode() {
-        return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
-    }
-
-    public String getProxyCluster() {
-        return proxyCluster;
-    }
-
-    public void setProxyCluster(String proxyCluster) {
-        this.proxyCluster = proxyCluster;
-    }
-
-    public String getProxyIp() {
-        return proxyIp;
-    }
-
-    public void setProxyIp(String proxyIp) {
-        this.proxyIp = proxyIp;
-    }
-
-    public String getProxyEnv() {
-        return proxyEnv;
-    }
-
-    public void setProxyEnv(String proxyEnv) {
-        this.proxyEnv = proxyEnv;
-    }
-
-    public String getProxyRegion() {
-        return proxyRegion;
-    }
-
-    public void setProxyRegion(String proxyRegion) {
-        this.proxyRegion = proxyRegion;
-    }
-
-    public String getProxyIdc() {
-        return proxyIdc;
-    }
-
-    public void setProxyIdc(String proxyIdc) {
-        this.proxyIdc = proxyIdc;
-    }
-
-    public String getProxyDcn() {
-        return proxyDcn;
-    }
-
-    public void setProxyDcn(String proxyDcn) {
-        this.proxyDcn = proxyDcn;
-    }
-
-    public static SendMessageBatchV2ResponseHeader buildHeader(Integer requestCode, String proxyCluster,
-                                                               String proxyIp, String proxyEnv, String proxyRegion,
-                                                               String proxyDcn, String proxyIDC) {
-        SendMessageBatchV2ResponseHeader header = new SendMessageBatchV2ResponseHeader();
-        header.setCode(requestCode);
-        header.setProxyCluster(proxyCluster);
-        header.setProxyDcn(proxyDcn);
-        header.setProxyEnv(proxyEnv);
-        header.setProxyRegion(proxyRegion);
-        header.setProxyIdc(proxyIDC);
-        header.setProxyIp(proxyIp);
-        return header;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("sendMessageBatchV2ResponseHeader={")
-                .append("code=").append(code).append(",")
-                .append("proxyEnv=").append(proxyEnv).append(",")
-                .append("proxyRegion=").append(proxyRegion).append(",")
-                .append("proxyIdc=").append(proxyIdc).append(",")
-                .append("proxyDcn=").append(proxyDcn).append(",")
-                .append("proxyCluster=").append(proxyCluster).append(",")
-                .append("proxyIp=").append(proxyIp).append("}");
-        return sb.toString();
-    }
-
-    @Override
-    public Map<String, Object> toMap() {
-        Map<String, Object> map = new HashMap<String, Object>();
-        map.put(ProtocolKey.REQUEST_CODE, code);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYCLUSTER, proxyCluster);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIP, proxyIp);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYENV, proxyEnv);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYREGION, proxyRegion);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIDC, proxyIdc);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYDCN, proxyDcn);
-        return map;
-    }
-}
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/SendMessageResponseHeader.java b/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/SendMessageResponseHeader.java
deleted file mode 100644
index 9272371..0000000
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/header/message/SendMessageResponseHeader.java
+++ /dev/null
@@ -1,146 +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 com.webank.eventmesh.common.protocol.http.header.message;
-
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.protocol.http.header.Header;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class SendMessageResponseHeader extends Header {
-
-    //响应码, 与对应Request的code一致
-    private int code;
-
-    //处理该次Request请求的proxy的集群名
-    private String proxyCluster;
-
-    //处理该次Request请求的proxy的IP
-    private String proxyIp;
-
-    //处理该次Request请求的proxy所在的环境编号
-    private String proxyEnv;
-
-    //处理该次Request请求的proxy所在区域
-    private String proxyRegion;
-
-    //处理该次Request请求的proxy所在IDC
-    private String proxyIdc;
-
-    //处理该次Request请求的proxy所在DCN
-    private String proxyDcn;
-
-    public int getCode() {
-        return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
-    }
-
-    public String getProxyCluster() {
-        return proxyCluster;
-    }
-
-    public void setProxyCluster(String proxyCluster) {
-        this.proxyCluster = proxyCluster;
-    }
-
-    public String getProxyIp() {
-        return proxyIp;
-    }
-
-    public void setProxyIp(String proxyIp) {
-        this.proxyIp = proxyIp;
-    }
-
-    public String getProxyEnv() {
-        return proxyEnv;
-    }
-
-    public void setProxyEnv(String proxyEnv) {
-        this.proxyEnv = proxyEnv;
-    }
-
-    public String getProxyRegion() {
-        return proxyRegion;
-    }
-
-    public void setProxyRegion(String proxyRegion) {
-        this.proxyRegion = proxyRegion;
-    }
-
-    public String getProxyIdc() {
-        return proxyIdc;
-    }
-
-    public void setProxyIdc(String proxyIdc) {
-        this.proxyIdc = proxyIdc;
-    }
-
-    public String getProxyDcn() {
-        return proxyDcn;
-    }
-
-    public void setProxyDcn(String proxyDcn) {
-        this.proxyDcn = proxyDcn;
-    }
-
-    public static SendMessageResponseHeader buildHeader(Integer requestCode, String proxyCluster,
-                                                        String proxyIp, String proxyEnv, String proxyRegion,
-                                                        String proxyDcn, String proxyIDC) {
-        SendMessageResponseHeader sendMessageResponseHeader = new SendMessageResponseHeader();
-        sendMessageResponseHeader.setCode(requestCode);
-        sendMessageResponseHeader.setProxyCluster(proxyCluster);
-        sendMessageResponseHeader.setProxyDcn(proxyDcn);
-        sendMessageResponseHeader.setProxyIp(proxyIp);
-        sendMessageResponseHeader.setProxyEnv(proxyEnv);
-        sendMessageResponseHeader.setProxyRegion(proxyRegion);
-        sendMessageResponseHeader.setProxyIdc(proxyIDC);
-        return sendMessageResponseHeader;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("sendMessageResponseHeader={")
-                .append("code=").append(code).append(",")
-                .append("proxyEnv=").append(proxyEnv).append(",")
-                .append("proxyRegion=").append(proxyRegion).append(",")
-                .append("proxyIdc=").append(proxyIdc).append(",")
-                .append("proxyDcn=").append(proxyDcn).append(",")
-                .append("proxyCluster=").append(proxyCluster).append(",")
-                .append("proxyIp=").append(proxyIp).append("}");
-        return sb.toString();
-    }
-
-    @Override
-    public Map<String, Object> toMap() {
-        Map<String, Object> map = new HashMap<String, Object>();
-        map.put(ProtocolKey.REQUEST_CODE, code);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYCLUSTER, proxyCluster);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIP, proxyIp);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYENV, proxyEnv);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYREGION, proxyRegion);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYIDC, proxyIdc);
-        map.put(ProtocolKey.ProxyInstanceKey.PROXYDCN, proxyDcn);
-        return map;
-    }
-}
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/tcp/ProxyClientInfo.java b/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/tcp/ProxyClientInfo.java
deleted file mode 100644
index 227b394..0000000
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/tcp/ProxyClientInfo.java
+++ /dev/null
@@ -1,111 +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 com.webank.eventmesh.common.protocol.tcp;
-
-import org.apache.rocketmq.common.DataVersion;
-
-public class ProxyClientInfo {
-    private String clientId;
-    private String consumerGroup;
-    private String endpoint;
-    private String language;
-    private long version;
-    private DataVersion dataVersion;
-    private long lastUpdateTimestamp;
-    private int protocolNumber;
-
-    public ProxyClientInfo(String clientId, String consumerGroup, String endpoint, String language, long version, DataVersion dataVersion, long lastUpdateTimestamp, int protocolNumber) {
-        this.clientId = clientId;
-        this.endpoint = endpoint;
-        this.language = language;
-        this.version = version;
-        this.consumerGroup = consumerGroup;
-        this.dataVersion = dataVersion;
-        this.lastUpdateTimestamp = lastUpdateTimestamp;
-        this.protocolNumber = protocolNumber;
-    }
-
-    public void setClientId(String clientId) {
-        this.clientId = clientId;
-    }
-
-    public String getClientId() {
-        return clientId;
-    }
-
-    public void setDataVersion(DataVersion dataVersion) {
-        this.dataVersion = dataVersion;
-    }
-
-    public void setEndpoint(String endpoint) {
-        this.endpoint = endpoint;
-    }
-
-    public DataVersion getDataVersion() {
-        return dataVersion;
-    }
-
-    public String getEndpoint() {
-        return endpoint;
-    }
-
-    public void setLastUpdateTimestamp(long lastUpdateTimestamp) {
-        this.lastUpdateTimestamp = lastUpdateTimestamp;
-    }
-
-    public long getLastUpdateTimestamp() {
-        return lastUpdateTimestamp;
-    }
-
-    public void setConsumerGroup(String consumerGroup) {
-        this.consumerGroup = consumerGroup;
-    }
-
-    public String getConsumerGroup() {
-        return consumerGroup;
-    }
-
-    public void setVersion(long version) {
-        this.version = version;
-    }
-
-    public void setLanguage(String language) {
-        this.language = language;
-    }
-
-    public String getLanguage() {
-        return language;
-    }
-
-    public long getVersion() {
-        return version;
-    }
-
-    public void setProtocolNumber(int protocolNumber) {
-        this.protocolNumber = protocolNumber;
-    }
-
-    public int getProtocolNumber() {
-        return protocolNumber;
-    }
-
-    @Override
-    public String toString() {
-        return "ClientId [clientId=" + clientId + ", consumerGroup=" + consumerGroup + ", endpoint=" + endpoint + ", language=" + language + ", version=" + version + ", dataVersion=" + dataVersion + ", lastUpdateTimestamp=" + lastUpdateTimestamp + "]";
-    }
-}
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/Constants.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
similarity index 69%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/Constants.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
index ebfcd77..c2457ad 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/Constants.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
@@ -15,16 +15,12 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common;
+package org.apache.eventmesh.common;
 
 public class Constants {
 
     public static final String DEFAULT_CHARSET = "UTF-8";
 
-    public static final String TARGET_PROXY_REGION = "TARGET_PROXY_REGION";
-
-    public static final String CONSTANTS_DEFAULT_REGION_KEY = "default";
-
     public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
 
     public static final String LANGUAGE_JAVA = "JAVA";
@@ -35,7 +31,7 @@ public class Constants {
 
     public static final int DEFAULT_HTTP_TIME_OUT = 3000;
 
-    public static final String PROXY_MESSAGE_CONST_TTL = "ttl";
+    public static final String EVENTMESH_MESSAGE_CONST_TTL = "ttl";
 
     public static final Integer DEFAULT_CLIENT_UNACK = 12;
 
@@ -47,8 +43,6 @@ public class Constants {
 
     public static final String CONSTANTS_INSTANCE_DESC_IDC = "idc";
 
-    public static final String CONSTANTS_INSTANCE_DESC_DCN = "dcn";
-
     public static final String CONSTANTS_INSTANCE_DESC_SYSID = "sysId";
 
     public static final String CONSTANTS_INSTANCE_DESC_IP = "ip";
@@ -61,4 +55,24 @@ public class Constants {
 
     public static final String IDC_SEPERATER = "-";
 
+    public static final String PROPERTY_MESSAGE_TIMEOUT = "TIMEOUT";
+
+    public static final String PROPERTY_MESSAGE_SEARCH_KEYS = "SEARCH_KEYS";
+
+    public static final String PROPERTY_MESSAGE_QUEUE_ID = "QUEUE_ID";
+
+    public static final String PROPERTY_MESSAGE_QUEUE_OFFSET = "QUEUE_OFFSET";
+
+    public static final String PROPERTY_MESSAGE_DESTINATION = "DESTINATION";
+
+    public static final String PROPERTY_MESSAGE_MESSAGE_ID = "MESSAGE_ID";
+
+    public static final String PROPERTY_MESSAGE_BORN_HOST = "BORN_HOST";
+
+    public static final String PROPERTY_MESSAGE_BORN_TIMESTAMP = "BORN_TIMESTAMP";
+
+    public static final String PROPERTY_MESSAGE_STORE_HOST = "STORE_HOST";
+
+    public static final String PROPERTY_MESSAGE_STORE_TIMESTAMP = "STORE_TIMESTAMP";
+
 }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/ProxyException.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/EventMeshException.java
similarity index 70%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/ProxyException.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/EventMeshException.java
index 7c5bda8..bffa57e 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/ProxyException.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/EventMeshException.java
@@ -15,30 +15,30 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common;
+package org.apache.eventmesh.common;
 
-public class ProxyException extends Exception {
+public class EventMeshException extends Exception {
 
-    public ProxyException() {
+    public EventMeshException() {
     }
 
-    public ProxyException(String message) {
+    public EventMeshException(String message) {
         super(message);
     }
 
-    public ProxyException(String message, Throwable cause) {
+    public EventMeshException(String message, Throwable cause) {
         super(message, cause);
     }
 
-    public ProxyException(Throwable cause) {
+    public EventMeshException(Throwable cause) {
         super(cause);
     }
 
-    public ProxyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+    public EventMeshException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
         super(message, cause, enableSuppression, writableStackTrace);
     }
 
-    public ProxyException(Integer errCode, String errMsg) {
+    public EventMeshException(Integer errCode, String errMsg) {
         super((new StringBuilder()).append(errCode)
                 .append("|")
                 .append(errMsg).toString());
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/IPUtil.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/IPUtil.java
similarity index 97%
copy from eventmesh-common/src/main/java/com/webank/eventmesh/common/IPUtil.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/IPUtil.java
index e0b7826..5165deb 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/IPUtil.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/IPUtil.java
@@ -15,9 +15,7 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common;
-
-import io.netty.channel.Channel;
+package org.apache.eventmesh.common;
 
 import java.net.Inet6Address;
 import java.net.InetAddress;
@@ -30,12 +28,14 @@ import java.util.Enumeration;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import io.netty.channel.Channel;
+
 public class IPUtil {
 
     public static String getLocalAddress() {
         // if the progress works under docker environment
         // return the host ip about this docker located from environment value
-        String dockerHostIp = System.getenv("webank_docker_host_ip");
+        String dockerHostIp = System.getenv("docker_host_ip");
         if (dockerHostIp != null && !"".equals(dockerHostIp))
             return dockerHostIp;
 
@@ -107,8 +107,7 @@ public class IPUtil {
         return null;
     }
 
-    public static boolean isValidIPV4Address(String ip)
-    {
+    public static boolean isValidIPV4Address(String ip) {
 
         // Regex for digit from 0 to 255.
         String zeroTo255
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/LiteMessage.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/LiteMessage.java
similarity index 98%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/LiteMessage.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/LiteMessage.java
index e0d9666..455dfc6 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/LiteMessage.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/LiteMessage.java
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common;
-
-import org.apache.commons.lang3.time.DateFormatUtils;
+package org.apache.eventmesh.common;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang3.time.DateFormatUtils;
+
 public class LiteMessage {
 
     private String bizSeqNo;
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/ThreadPoolFactory.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/ThreadPoolFactory.java
similarity index 91%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/ThreadPoolFactory.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/ThreadPoolFactory.java
index 3edfec7..5be6529 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/ThreadPoolFactory.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/ThreadPoolFactory.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common;
+package org.apache.eventmesh.common;
 
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.Executors;
@@ -36,7 +36,7 @@ public class ThreadPoolFactory {
         return createThreadPoolExecutor(core, max, new LinkedBlockingQueue<Runnable>(1000), threadName, isDaemon);
     }
 
-    public static ThreadPoolExecutor createThreadPoolExecutor(int core, int max, BlockingQueue blockingQueue, final String threadName, final boolean isDaemon) {
+    public static ThreadPoolExecutor createThreadPoolExecutor(int core, int max, BlockingQueue<Runnable> blockingQueue, final String threadName, final boolean isDaemon) {
         return new ThreadPoolExecutor(core, max,
                 10 * 1000, TimeUnit.MILLISECONDS, blockingQueue, new ThreadFactory() {
 
@@ -56,8 +56,8 @@ public class ThreadPoolFactory {
         return createThreadPoolExecutor(core, max, new LinkedBlockingQueue<Runnable>(1000), threadFactory);
     }
 
-    public static ThreadPoolExecutor createThreadPoolExecutor(int core, int max, BlockingQueue blockingQueue, ThreadFactory threadFactory) {
-        return new ThreadPoolExecutor(core, max,10 * 1000, TimeUnit.MILLISECONDS, blockingQueue, threadFactory);
+    public static ThreadPoolExecutor createThreadPoolExecutor(int core, int max, BlockingQueue<Runnable> blockingQueue, ThreadFactory threadFactory) {
+        return new ThreadPoolExecutor(core, max, 10 * 1000, TimeUnit.MILLISECONDS, blockingQueue, threadFactory);
     }
 
     public static ScheduledExecutorService createSingleScheduledExecutor(final String threadName) {
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/ThreadUtil.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/ThreadUtil.java
similarity index 91%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/ThreadUtil.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/ThreadUtil.java
index 3a25b80..aecfb0e 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/ThreadUtil.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/ThreadUtil.java
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common;
+package org.apache.eventmesh.common;
 
 import java.util.concurrent.ThreadLocalRandom;
 
 public class ThreadUtil {
 
-    private static long currentPID=-1;
+    private static long currentPID = -1;
 
     public static void randomSleep(int min, int max) throws Exception {
         // nextInt is normally exclusive of the top value, so add 1 to make it inclusive
@@ -36,6 +36,7 @@ public class ThreadUtil {
 
     /**
      * get current process id only once.
+     *
      * @return
      */
     public static long getPID() {
@@ -45,7 +46,7 @@ public class ThreadUtil {
         String processName = java.lang.management.ManagementFactory.getRuntimeMXBean().getName();
         if (processName != null && processName.length() > 0) {
             try {
-                currentPID= Long.parseLong(processName.split("@")[0]);
+                currentPID = Long.parseLong(processName.split("@")[0]);
             } catch (Exception e) {
                 return 0;
             }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/command/HttpCommand.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/command/HttpCommand.java
similarity index 90%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/command/HttpCommand.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/command/HttpCommand.java
index 4ac40a0..d36a1ae 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/command/HttpCommand.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/command/HttpCommand.java
@@ -15,23 +15,18 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.command;
+package org.apache.eventmesh.common.command;
 
-import com.webank.eventmesh.common.Constants;
-import com.webank.eventmesh.common.protocol.http.body.BaseResponseBody;
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import com.webank.eventmesh.common.protocol.http.header.BaseResponseHeader;
-import com.webank.eventmesh.common.protocol.http.header.Header;
 import com.alibaba.fastjson.JSON;
 import io.netty.buffer.Unpooled;
-import io.netty.handler.codec.http.DefaultFullHttpResponse;
-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.HttpResponseStatus;
-import io.netty.handler.codec.http.HttpVersion;
+import io.netty.handler.codec.http.*;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.protocol.http.body.BaseResponseBody;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+import org.apache.eventmesh.common.protocol.http.header.BaseResponseHeader;
+import org.apache.eventmesh.common.protocol.http.header.Header;
 
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
@@ -75,7 +70,7 @@ public class HttpCommand {
 
     public HttpCommand createHttpCommandResponse(Header header,
                                                  Body body) {
-        if(StringUtils.isBlank(requestCode)) {
+        if (StringUtils.isBlank(requestCode)) {
             return null;
         }
         HttpCommand response = new HttpCommand(this.httpMethod, this.httpVersion, this.requestCode);
@@ -89,7 +84,7 @@ public class HttpCommand {
     }
 
     public HttpCommand createHttpCommandResponse(Integer retCode, String retMsg) {
-        if(StringUtils.isBlank(requestCode)) {
+        if (StringUtils.isBlank(requestCode)) {
             return null;
         }
         HttpCommand response = new HttpCommand(this.httpMethod, this.httpVersion, this.requestCode);
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/IPUtil.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java
similarity index 53%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/IPUtil.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java
index e0b7826..08a44cb 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/IPUtil.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java
@@ -15,33 +15,101 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common;
-
-import io.netty.channel.Channel;
+package org.apache.eventmesh.common.config;
 
 import java.net.Inet6Address;
 import java.net.InetAddress;
 import java.net.NetworkInterface;
-import java.net.SocketAddress;
 import java.net.SocketException;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Enumeration;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
-public class IPUtil {
+import com.google.common.base.Preconditions;
+
+import org.apache.commons.lang3.StringUtils;
+
+public class CommonConfiguration {
+    public String eventMeshEnv = "P";
+    public String eventMeshIDC = "FT";
+    public String eventMeshCluster = "LS";
+    public String eventMeshName = "";
+    public String sysID = "5477";
+
+
+    public String namesrvAddr = "";
+    public String clientUserName = "username";
+    public String clientPass = "user@123";
+    public Integer consumeThreadMin = 2;
+    public Integer consumeThreadMax = 2;
+    public Integer consumeQueueSize = 10000;
+    public Integer pullBatchSize = 32;
+    public Integer ackWindow = 1000;
+    public Integer pubWindow = 100;
+    public long consumeTimeout = 0L;
+    public Integer pollNameServerInteval = 10 * 1000;
+    public Integer heartbeatBrokerInterval = 30 * 1000;
+    public Integer rebalanceInterval = 20 * 1000;
+    public Integer eventMeshRegisterIntervalInMills = 10 * 1000;
+    public Integer eventMeshFetchRegistryAddrInterval = 10 * 1000;
+    public String eventMeshServerIp = null;
+    protected ConfigurationWraper configurationWraper;
+
+    public CommonConfiguration(ConfigurationWraper configurationWraper) {
+        this.configurationWraper = configurationWraper;
+    }
 
-    public static String getLocalAddress() {
-        // if the progress works under docker environment
-        // return the host ip about this docker located from environment value
-        String dockerHostIp = System.getenv("webank_docker_host_ip");
-        if (dockerHostIp != null && !"".equals(dockerHostIp))
-            return dockerHostIp;
+    public void init() {
 
-        //priority of networkInterface when generating client ip
-        String priority = System.getProperty("networkInterface.priority", "eth0<eth1<bond1");
+        if (configurationWraper != null) {
+            String eventMeshEnvStr = configurationWraper.getProp(ConfKeys.KEYS_EVENTMESH_ENV);
+            Preconditions.checkState(StringUtils.isNotEmpty(eventMeshEnvStr), String.format("%s error", ConfKeys.KEYS_EVENTMESH_ENV));
+            eventMeshEnv = StringUtils.deleteWhitespace(eventMeshEnvStr);
+
+            String sysIdStr = configurationWraper.getProp(ConfKeys.KEYS_EVENTMESH_SYSID);
+            Preconditions.checkState(StringUtils.isNotEmpty(sysIdStr) && StringUtils.isNumeric(sysIdStr), String.format("%s error", ConfKeys.KEYS_EVENTMESH_SYSID));
+            sysID = StringUtils.deleteWhitespace(sysIdStr);
+
+            String eventMeshClusterStr = configurationWraper.getProp(ConfKeys.KEYS_EVENTMESH_SERVER_CLUSTER);
+            Preconditions.checkState(StringUtils.isNotEmpty(eventMeshClusterStr), String.format("%s error", ConfKeys.KEYS_EVENTMESH_SERVER_CLUSTER));
+            eventMeshCluster = StringUtils.deleteWhitespace(eventMeshClusterStr);
+
+            String eventMeshNameStr = configurationWraper.getProp(ConfKeys.KEYS_EVENTMESH_SERVER_NAME);
+            Preconditions.checkState(StringUtils.isNotEmpty(eventMeshNameStr), String.format("%s error", ConfKeys.KEYS_EVENTMESH_SERVER_NAME));
+            eventMeshName = StringUtils.deleteWhitespace(eventMeshNameStr);
+
+            String eventMeshIDCStr = configurationWraper.getProp(ConfKeys.KEYS_EVENTMESH_IDC);
+            Preconditions.checkState(StringUtils.isNotEmpty(eventMeshIDCStr), String.format("%s error", ConfKeys.KEYS_EVENTMESH_IDC));
+            eventMeshIDC = StringUtils.deleteWhitespace(eventMeshIDCStr);
+
+            eventMeshServerIp = configurationWraper.getProp(ConfKeys.KEYS_EVENTMESH_SERVER_HOST_IP);
+            if (StringUtils.isBlank(eventMeshServerIp)) {
+                eventMeshServerIp = getLocalAddr();
+            }
+        }
+    }
+
+    static class ConfKeys {
+        public static String KEYS_EVENTMESH_ENV = "eventMesh.server.env";
 
+        public static String KEYS_EVENTMESH_IDC = "eventMesh.server.idc";
+
+        public static String KEYS_EVENTMESH_SYSID = "eventMesh.sysid";
+
+        public static String KEYS_EVENTMESH_SERVER_CLUSTER = "eventMesh.server.cluster";
+
+        public static String KEYS_EVENTMESH_SERVER_NAME = "eventMesh.server.name";
+
+        public static String KEYS_EVENTMESH_SERVER_HOST_IP = "eventMesh.server.hostIp";
+
+        public static String KEYS_EVENTMESH_SERVER_REGISTER_INTERVAL = "eventMesh.server.registry.registerIntervalInMills";
+
+        public static String KEYS_EVENTMESH_SERVER_FETCH_REGISTRY_ADDR_INTERVAL = "eventMesh.server.registry.fetchRegistryAddrIntervalInMills";
+    }
+
+    public static String getLocalAddr() {
+        //priority of networkInterface when generating client ip
+        String priority = System.getProperty("networkInterface.priority", "bond1<eth1<eth0");
         ArrayList<String> preferList = new ArrayList<String>();
         for (String eth : priority.split("<")) {
             preferList.add(eth);
@@ -57,7 +125,6 @@ public class IPUtil {
                 } else if (preferNetworkInterface == null) {
                     preferNetworkInterface = networkInterface;
                 }
-
                 //get the networkInterface that has higher priority
                 else if (preferList.indexOf(networkInterface.getName())
                         > preferList.indexOf(preferNetworkInterface.getName())) {
@@ -84,7 +151,7 @@ public class IPUtil {
             // prefer ipv4
             if (!ipv4Result.isEmpty()) {
                 for (String ip : ipv4Result) {
-                    if (ip.startsWith("127.0") || ip.startsWith("192.168") || !isValidIPV4Address(ip)) {
+                    if (ip.startsWith("127.0") || ip.startsWith("192.168")) {
                         continue;
                     }
 
@@ -107,32 +174,12 @@ public class IPUtil {
         return null;
     }
 
-    public static boolean isValidIPV4Address(String ip)
-    {
-
-        // Regex for digit from 0 to 255.
-        String zeroTo255
-                = "(\\d{1,2}|(0|1)\\"
-                + "d{2}|2[0-4]\\d|25[0-5])";
-
-        String regex
-                = zeroTo255 + "\\."
-                + zeroTo255 + "\\."
-                + zeroTo255 + "\\."
-                + zeroTo255;
-
-        // Compile the ReGex
-        Pattern p = Pattern.compile(regex);
-
-        // If the IP address is empty, return false
-        if (ip == null) {
-            return false;
+    public static String normalizeHostAddress(final InetAddress localHost) {
+        if (localHost instanceof Inet6Address) {
+            return "[" + localHost.getHostAddress() + "]";
+        } else {
+            return localHost.getHostAddress();
         }
-
-        Matcher m = p.matcher(ip);
-
-        // Return if the IP address matched the ReGex
-        return m.matches();
     }
 
     private static void getIpResult(ArrayList<String> ipv4Result, ArrayList<String> ipv6Result,
@@ -148,32 +195,4 @@ public class IPUtil {
             }
         }
     }
-
-    private static String normalizeHostAddress(final InetAddress localHost) {
-        if (localHost instanceof Inet6Address) {
-            return "[" + localHost.getHostAddress() + "]";
-        } else {
-            return localHost.getHostAddress();
-        }
-    }
-
-
-    public static String parseChannelRemoteAddr(final Channel channel) {
-        if (null == channel) {
-            return "";
-        }
-        SocketAddress remote = channel.remoteAddress();
-        final String addr = remote != null ? remote.toString() : "";
-
-        if (addr.length() > 0) {
-            int index = addr.lastIndexOf("/");
-            if (index >= 0) {
-                return addr.substring(index + 1);
-            }
-
-            return addr;
-        }
-
-        return "";
-    }
-}
+}
\ No newline at end of file
diff --git a/eventmesh-emesher/src/main/java/com/webank/emesher/configuration/ConfigurationWraper.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigurationWraper.java
similarity index 93%
copy from eventmesh-emesher/src/main/java/com/webank/emesher/configuration/ConfigurationWraper.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigurationWraper.java
index 89fa278..2da975b 100644
--- a/eventmesh-emesher/src/main/java/com/webank/emesher/configuration/ConfigurationWraper.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigurationWraper.java
@@ -15,12 +15,7 @@
  * limitations under the License.
  */
 
-package com.webank.emesher.configuration;
-
-import com.webank.eventmesh.common.ThreadPoolFactory;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+package org.apache.eventmesh.common.config;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -30,6 +25,11 @@ import java.util.Properties;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.commons.lang3.StringUtils;
+import org.apache.eventmesh.common.ThreadPoolFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 public class ConfigurationWraper {
 
     public Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -40,7 +40,7 @@ public class ConfigurationWraper {
 
     private boolean reload = true;
 
-    private ScheduledExecutorService configLoader = ThreadPoolFactory.createSingleScheduledExecutor("proxy-configloader-");
+    private ScheduledExecutorService configLoader = ThreadPoolFactory.createSingleScheduledExecutor("eventMesh-configloader-");
 
     public ConfigurationWraper(String file, boolean reload) {
         this.file = file;
@@ -73,6 +73,4 @@ public class ConfigurationWraper {
     public String getProp(String key) {
         return StringUtils.isEmpty(key) ? null : properties.getProperty(key, null);
     }
-
-
 }
\ No newline at end of file
diff --git a/eventmesh-emesher/src/main/java/com/webank/emesher/patch/ProxyConsumeConcurrentlyStatus.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/LoadBalanceSelector.java
similarity index 64%
copy from eventmesh-emesher/src/main/java/com/webank/emesher/patch/ProxyConsumeConcurrentlyStatus.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/LoadBalanceSelector.java
index 06c6033..3bee08c 100644
--- a/eventmesh-emesher/src/main/java/com/webank/emesher/patch/ProxyConsumeConcurrentlyStatus.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/LoadBalanceSelector.java
@@ -15,19 +15,30 @@
  * limitations under the License.
  */
 
-package com.webank.emesher.patch;
+package org.apache.eventmesh.common.loadbalance;
+
+/**
+ * LoadBalance Interface
+ *
+ * <p> see {@link RandomLoadBalanceSelector}
+ * <p> see {@link WeightRoundRobinLoadBalanceSelector}
+ *
+ * @param <T> Target type
+ */
+public interface LoadBalanceSelector<T> {
 
-public enum ProxyConsumeConcurrentlyStatus {
-    /**
-     * Success consumption
-     */
-    CONSUME_SUCCESS,
     /**
-     * Failure consumption,later try to consume
+     * Select one
+     *
+     * @return target
      */
-    RECONSUME_LATER,
+    T select();
+
     /**
-     * Success consumption but ack later manually
+     * load balance type see {@link LoadBalanceType}
+     *
+     * @return load balance type of the selector
      */
-    CONSUME_FINISH;
+    LoadBalanceType getType();
+
 }
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/LoadBalanceType.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/LoadBalanceType.java
new file mode 100644
index 0000000..858a69b
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/LoadBalanceType.java
@@ -0,0 +1,50 @@
+/*
+ * 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.common.loadbalance;
+
+public enum LoadBalanceType {
+    RANDOM(0, "random load balance strategy"),
+    WEIGHT_ROUND_ROBIN(1, "weight round robin load balance strategy");
+
+    private int code;
+    private String desc;
+
+    LoadBalanceType(int code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/RandomLoadBalanceSelector.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/RandomLoadBalanceSelector.java
new file mode 100644
index 0000000..fc741a5
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/RandomLoadBalanceSelector.java
@@ -0,0 +1,56 @@
+/*
+ * 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.common.loadbalance;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.RandomUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ * This selector use random strategy.
+ * Each selection will randomly give one from the given list
+ *
+ * @param <T>
+ */
+public class RandomLoadBalanceSelector<T> implements LoadBalanceSelector<T> {
+
+    private final Logger logger = LoggerFactory.getLogger(RandomLoadBalanceSelector.class);
+
+    private final List<T> clusterGroup;
+
+    public RandomLoadBalanceSelector(List<T> clusterGroup) {
+        this.clusterGroup = clusterGroup;
+    }
+
+    @Override
+    public T select() {
+        if (CollectionUtils.isEmpty(clusterGroup)) {
+            logger.warn("No servers available");
+            return null;
+        }
+        return clusterGroup.get(RandomUtils.nextInt(0, clusterGroup.size()));
+    }
+
+    @Override
+    public LoadBalanceType getType() {
+        return LoadBalanceType.RANDOM;
+    }
+}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/Weight.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/Weight.java
new file mode 100644
index 0000000..e793955
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/Weight.java
@@ -0,0 +1,70 @@
+/*
+ * 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.common.loadbalance;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class Weight<T> {
+
+    private T target;
+
+    private final int weight;
+
+    private final AtomicInteger currentWeight;
+
+    public Weight(T target, int weight) {
+        this.target = target;
+        this.weight = weight;
+        this.currentWeight = new AtomicInteger(0);
+    }
+
+    public void decreaseTotal(int total) {
+        currentWeight.addAndGet(-1 * total);
+    }
+
+    public void increaseCurrentWeight() {
+        currentWeight.addAndGet(weight);
+    }
+
+
+    public T getTarget() {
+        return target;
+    }
+
+    public void setTarget(T target) {
+        this.target = target;
+    }
+
+    public int getWeight() {
+        return weight;
+    }
+
+
+    public AtomicInteger getCurrentWeight() {
+        return currentWeight;
+    }
+
+    @Override
+    public String toString() {
+        return "Wight{" +
+                "target=" + target +
+                ", weight=" + weight +
+                ", currentWeight=" + currentWeight +
+                '}';
+    }
+}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/WeightRoundRobinLoadBalanceSelector.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/WeightRoundRobinLoadBalanceSelector.java
new file mode 100644
index 0000000..d6f2009
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/WeightRoundRobinLoadBalanceSelector.java
@@ -0,0 +1,72 @@
+/*
+ * 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.common.loadbalance;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ * This selector use the weighted round robin strategy to select from list.
+ * If the weight is greater, the probability of being selected is larger.
+ *
+ * @param <T>
+ */
+public class WeightRoundRobinLoadBalanceSelector<T> implements LoadBalanceSelector<T> {
+
+    private final Logger logger = LoggerFactory.getLogger(WeightRoundRobinLoadBalanceSelector.class);
+
+    private final List<Weight<T>> clusterGroup;
+
+    private final int totalWeight;
+
+    public WeightRoundRobinLoadBalanceSelector(List<Weight<T>> clusterGroup) {
+        int totalWeight = 0;
+        for (Weight<T> weight : clusterGroup) {
+            totalWeight += weight.getWeight();
+        }
+        this.clusterGroup = clusterGroup;
+        this.totalWeight = totalWeight;
+    }
+
+
+    @Override
+    @SuppressWarnings("ConstantConditions")
+    public T select() {
+        if (CollectionUtils.isEmpty(clusterGroup)) {
+            logger.warn("No servers available");
+            return null;
+        }
+        Weight<T> targetWeight = null;
+        for (Weight<T> weight : clusterGroup) {
+            weight.increaseCurrentWeight();
+            if (targetWeight == null || targetWeight.getCurrentWeight().get() < weight.getCurrentWeight().get()) {
+                targetWeight = weight;
+            }
+        }
+        targetWeight.decreaseTotal(totalWeight);
+        return targetWeight.getTarget();
+    }
+
+    @Override
+    public LoadBalanceType getType() {
+        return LoadBalanceType.WEIGHT_ROUND_ROBIN;
+    }
+}
diff --git a/eventmesh-emesher/src/test/java/protocol/CmdHelloTest.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubcriptionType.java
similarity index 67%
rename from eventmesh-emesher/src/test/java/protocol/CmdHelloTest.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubcriptionType.java
index c472c38..6b6cb16 100644
--- a/eventmesh-emesher/src/test/java/protocol/CmdHelloTest.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubcriptionType.java
@@ -15,22 +15,29 @@
  * limitations under the License.
  */
 
-package protocol;
+package org.apache.eventmesh.common.protocol;
 
-import client.common.Server;
-import org.junit.Test;
+public enum SubcriptionType {
+    /**
+     * SYNC
+     */
+    SYNC("SYNC"),
+    /**
+     * ASYNC
+     */
+    ASYNC("ASYNC");
 
-public class CmdHelloTest {
+    private String type;
 
-    @Test
-    public void test_Cmd_Hello() throws Exception {
-        Server server = new Server();
-        server.startAccessServer();
-
-        //do protocol send/receive
+    SubcriptionType(String type) {
+        this.type = type;
+    }
 
-        Thread.sleep(3000);
-        server.shutdownAccessServer();
+    public String getType() {
+        return type;
     }
 
+    public void setType(String type) {
+        this.type = type;
+    }
 }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/tcp/AccessMessage.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubscriptionItem.java
similarity index 55%
copy from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/tcp/AccessMessage.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubscriptionItem.java
index 64c4e57..abcc22c 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/tcp/AccessMessage.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubscriptionItem.java
@@ -15,56 +15,57 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.tcp;
+package org.apache.eventmesh.common.protocol;
 
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-public class AccessMessage {
+public class SubscriptionItem {
 
     private String topic;
-    Map<String, String> properties = new ConcurrentHashMap<>();
-    private String body;
 
-    public AccessMessage() {
+    private SubscriptionMode mode;
+
+    private SubcriptionType type;
+
+    public SubscriptionItem() {
     }
 
-    public AccessMessage(String topic, Map<String, String> properties, String body) {
+    public SubscriptionItem(String topic, SubscriptionMode mode, SubcriptionType type) {
         this.topic = topic;
-        this.properties = properties;
-        this.body = body;
+        this.mode = mode;
+        this.type = type;
     }
 
-    public String getTopic() {
-        return topic;
+    public SubcriptionType getType() {
+        return type;
     }
 
-    public void setTopic(String topic) {
-        this.topic = topic;
+    public void setType(SubcriptionType type) {
+        this.type = type;
     }
 
-    public Map<String, String> getProperties() {
-        return properties;
+    public String getTopic() {
+        return topic;
     }
 
-    public void setProperties(Map<String, String> properties) {
-        this.properties = properties;
+    public void setTopic(String topic) {
+        this.topic = topic;
     }
 
-    public String getBody() {
-        return body;
+    public SubscriptionMode getMode() {
+        return mode;
     }
 
-    public void setBody(String body) {
-        this.body = body;
+    public void setMode(SubscriptionMode mode) {
+        this.mode = mode;
     }
 
     @Override
     public String toString() {
-        return "AccessMessage{" +
-                "topic='" + topic + '\'' +
-                ", properties=" + properties +
-                ", body='" + body + '\'' +
+        return "SubscriptionItem{" +
+                "topic=" + topic +
+                ", mode=" + mode +
+                ", type=" + type +
                 '}';
     }
 }
+
+
diff --git a/eventmesh-emesher/src/main/java/com/webank/emesher/patch/ProxyConsumeConcurrentlyStatus.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubscriptionMode.java
similarity index 67%
copy from eventmesh-emesher/src/main/java/com/webank/emesher/patch/ProxyConsumeConcurrentlyStatus.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubscriptionMode.java
index 06c6033..ad4b751 100644
--- a/eventmesh-emesher/src/main/java/com/webank/emesher/patch/ProxyConsumeConcurrentlyStatus.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubscriptionMode.java
@@ -15,19 +15,31 @@
  * limitations under the License.
  */
 
-package com.webank.emesher.patch;
+package org.apache.eventmesh.common.protocol;
+
+public enum SubscriptionMode {
 
-public enum ProxyConsumeConcurrentlyStatus {
-    /**
-     * Success consumption
-     */
-    CONSUME_SUCCESS,
     /**
-     * Failure consumption,later try to consume
+     * broadcast
      */
-    RECONSUME_LATER,
+    BROADCASTING("BROADCASTING"),
     /**
-     * Success consumption but ack later manually
+     * clustering
      */
-    CONSUME_FINISH;
+    CLUSTERING("CLUSTERING");
+
+    private String mode;
+
+    SubscriptionMode(String mode) {
+        this.mode = mode;
+    }
+
+    public String getMode() {
+        return mode;
+    }
+
+    public void setMode(String mode) {
+        this.mode = mode;
+    }
+
 }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/BaseRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/BaseRequestBody.java
similarity index 95%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/BaseRequestBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/BaseRequestBody.java
index 23107ff..09a3f74 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/BaseRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/BaseRequestBody.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body;
+package org.apache.eventmesh.common.protocol.http.body;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/BaseResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/BaseResponseBody.java
similarity index 93%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/BaseResponseBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/BaseResponseBody.java
index 4f17ffe..5cb5922 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/BaseResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/BaseResponseBody.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body;
+package org.apache.eventmesh.common.protocol.http.body;
 
 
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.eventmesh.common.protocol.http.common.ProtocolKey;
+
 public class BaseResponseBody extends Body {
 
     private Integer retCode;
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/Body.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/Body.java
similarity index 70%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/Body.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/Body.java
index 6750e25..c697643 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/Body.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/Body.java
@@ -15,21 +15,23 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body;
+package org.apache.eventmesh.common.protocol.http.body;
 
 
-import com.webank.eventmesh.common.protocol.http.body.client.HeartbeatRequestBody;
-import com.webank.eventmesh.common.protocol.http.body.client.UnRegRequestBody;
-import com.webank.eventmesh.common.protocol.http.common.RequestCode;
-import com.webank.eventmesh.common.protocol.http.body.client.RegRequestBody;
-import com.webank.eventmesh.common.protocol.http.body.message.PushMessageRequestBody;
-import com.webank.eventmesh.common.protocol.http.body.message.ReplyMessageRequestBody;
-import com.webank.eventmesh.common.protocol.http.body.message.SendMessageBatchRequestBody;
-import com.webank.eventmesh.common.protocol.http.body.message.SendMessageBatchV2RequestBody;
-import com.webank.eventmesh.common.protocol.http.body.message.SendMessageRequestBody;
-
 import java.util.Map;
 
+import org.apache.eventmesh.common.protocol.http.body.client.HeartbeatRequestBody;
+import org.apache.eventmesh.common.protocol.http.body.client.RegRequestBody;
+import org.apache.eventmesh.common.protocol.http.body.client.SubscribeRequestBody;
+import org.apache.eventmesh.common.protocol.http.body.client.UnRegRequestBody;
+import org.apache.eventmesh.common.protocol.http.body.client.UnSubscribeRequestBody;
+import org.apache.eventmesh.common.protocol.http.body.message.PushMessageRequestBody;
+import org.apache.eventmesh.common.protocol.http.body.message.ReplyMessageRequestBody;
+import org.apache.eventmesh.common.protocol.http.body.message.SendMessageBatchRequestBody;
+import org.apache.eventmesh.common.protocol.http.body.message.SendMessageBatchV2RequestBody;
+import org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequestBody;
+import org.apache.eventmesh.common.protocol.http.common.RequestCode;
+
 public abstract class Body {
 
     public abstract Map<String, Object> toMap();
@@ -37,7 +39,8 @@ public abstract class Body {
     public static Body buildBody(String requestCode, Map<String, Object> originalMap) throws Exception {
         if (String.valueOf(RequestCode.MSG_BATCH_SEND.getRequestCode()).equals(requestCode)) {
             return SendMessageBatchRequestBody.buildBody(originalMap);
-        } if (String.valueOf(RequestCode.MSG_BATCH_SEND_V2.getRequestCode()).equals(requestCode)) {
+        }
+        if (String.valueOf(RequestCode.MSG_BATCH_SEND_V2.getRequestCode()).equals(requestCode)) {
             return SendMessageBatchV2RequestBody.buildBody(originalMap);
         } else if (String.valueOf(RequestCode.MSG_SEND_ASYNC.getRequestCode()).equals(requestCode)) {
             return SendMessageRequestBody.buildBody(originalMap);
@@ -51,6 +54,10 @@ public abstract class Body {
             return RegRequestBody.buildBody(originalMap);
         } else if (String.valueOf(RequestCode.UNREGISTER.getRequestCode()).equals(requestCode)) {
             return UnRegRequestBody.buildBody(originalMap);
+        } else if (String.valueOf(RequestCode.SUBSCRIBE.getRequestCode()).equals(requestCode)) {
+            return SubscribeRequestBody.buildBody(originalMap);
+        } else if (String.valueOf(RequestCode.UNSUBSCRIBE.getRequestCode()).equals(requestCode)) {
+            return UnSubscribeRequestBody.buildBody(originalMap);
         } else if (String.valueOf(RequestCode.HEARTBEAT.getRequestCode()).equals(requestCode)) {
             return HeartbeatRequestBody.buildBody(originalMap);
         } else if (String.valueOf(RequestCode.REPLY_MESSAGE.getRequestCode()).equals(requestCode)) {
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java
similarity index 79%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java
index 115e91c..751b632 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java
@@ -15,22 +15,25 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.client;
-
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import org.apache.commons.collections4.MapUtils;
+package org.apache.eventmesh.common.protocol.http.body.client;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+
+import org.apache.commons.collections4.MapUtils;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+
 public class HeartbeatRequestBody extends Body {
 
     public static final String CLIENTTYPE = "clientType";
     public static final String HEARTBEATENTITIES = "heartbeatEntities";
+    public static final String CONSUMERGROUP = "consumerGroup";
 
+    private String consumerGroup;
 
     private String clientType;
 
@@ -52,9 +55,18 @@ public class HeartbeatRequestBody extends Body {
         this.heartbeatEntities = heartbeatEntities;
     }
 
+    public String getConsumerGroup() {
+        return consumerGroup;
+    }
+
+    public void setConsumerGroup(String consumerGroup) {
+        this.consumerGroup = consumerGroup;
+    }
+
     public static HeartbeatRequestBody buildBody(Map<String, Object> bodyParam) {
         HeartbeatRequestBody body = new HeartbeatRequestBody();
         body.setClientType(MapUtils.getString(bodyParam, CLIENTTYPE));
+        body.setConsumerGroup(MapUtils.getString(bodyParam, CONSUMERGROUP));
         body.setHeartbeatEntities(JSONArray.parseArray(MapUtils.getString(bodyParam, HEARTBEATENTITIES), HeartbeatEntity.class));
         return body;
     }
@@ -63,6 +75,7 @@ public class HeartbeatRequestBody extends Body {
     public Map<String, Object> toMap() {
         Map<String, Object> map = new HashMap<String, Object>();
         map.put(CLIENTTYPE, clientType);
+        map.put(CONSUMERGROUP, consumerGroup);
         map.put(HEARTBEATENTITIES, JSON.toJSONString(heartbeatEntities));
         return map;
     }
@@ -70,6 +83,7 @@ public class HeartbeatRequestBody extends Body {
     public static class HeartbeatEntity {
         public String topic;
         public String serviceId;
+        public String url;
         public String instanceId;
 
         @Override
@@ -77,8 +91,9 @@ public class HeartbeatRequestBody extends Body {
             StringBuilder sb = new StringBuilder();
             sb.append("heartbeatEntity={")
                     .append("topic=").append(topic).append(",")
-                    .append("heartbeatEntities=").append(serviceId).append(",")
-                    .append("instanceId=").append(instanceId).append("}");
+                    .append("serviceId=").append(serviceId).append(",")
+                    .append("instanceId=").append(instanceId).append(",")
+                    .append("url=").append(url).append("}");
             return sb.toString();
         }
     }
@@ -87,6 +102,7 @@ public class HeartbeatRequestBody extends Body {
     public String toString() {
         StringBuilder sb = new StringBuilder();
         sb.append("heartbeatRequestBody={")
+                .append("consumerGroup=").append(consumerGroup).append(",")
                 .append("clientType=").append(clientType).append("}");
         return sb.toString();
     }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java
similarity index 91%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java
index fd49b5d..0f05f51 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java
@@ -15,16 +15,16 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.client;
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.Constants;
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import org.apache.commons.lang3.time.DateFormatUtils;
+package org.apache.eventmesh.common.protocol.http.body.client;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+import org.apache.eventmesh.common.protocol.http.common.ProtocolKey;
+
 public class HeartbeatResponseBody extends Body {
 
     //响应码
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegRequestBody.java
similarity index 86%
copy from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegRequestBody.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegRequestBody.java
index 8739590..78bb684 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegRequestBody.java
@@ -15,17 +15,19 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.client;
-
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import org.apache.commons.collections4.MapUtils;
+package org.apache.eventmesh.common.protocol.http.body.client;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+
+import org.apache.commons.collections4.MapUtils;
+import org.apache.eventmesh.common.protocol.SubscriptionItem;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+
 public class RegRequestBody extends Body {
 
     public static final String CLIENTTYPE = "clientType";
@@ -38,13 +40,13 @@ public class RegRequestBody extends Body {
 
     private String endPoint;
 
-    private List<String> topics;
+    private List<SubscriptionItem> topics;
 
-    public List<String> getTopics() {
+    public List<SubscriptionItem> getTopics() {
         return topics;
     }
 
-    public void setTopics(List<String> topics) {
+    public void setTopics(List<SubscriptionItem> topics) {
         this.topics = topics;
     }
 
@@ -68,7 +70,7 @@ public class RegRequestBody extends Body {
         RegRequestBody body = new RegRequestBody();
         body.setClientType(MapUtils.getString(bodyParam, CLIENTTYPE));
         body.setEndPoint(MapUtils.getString(bodyParam, ENDPOINT));
-        body.setTopics(JSONArray.parseArray(MapUtils.getString(bodyParam, TOPICS), String.class));
+        body.setTopics(JSONArray.parseArray(MapUtils.getString(bodyParam, TOPICS), SubscriptionItem.class));
         return body;
     }
 
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegResponseBody.java
similarity index 91%
copy from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegResponseBody.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegResponseBody.java
index cffd492..1fc1366 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegResponseBody.java
@@ -15,16 +15,16 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.client;
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.Constants;
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import org.apache.commons.lang3.time.DateFormatUtils;
+package org.apache.eventmesh.common.protocol.http.body.client;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+import org.apache.eventmesh.common.protocol.http.common.ProtocolKey;
+
 public class RegResponseBody extends Body {
     private Integer retCode;
     private String retMsg;
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeRequestBody.java
new file mode 100644
index 0000000..72e2e91
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeRequestBody.java
@@ -0,0 +1,94 @@
+/*
+ * 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.common.protocol.http.body.client;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+
+import org.apache.commons.collections4.MapUtils;
+import org.apache.eventmesh.common.protocol.SubscriptionItem;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+
+public class SubscribeRequestBody extends Body {
+
+    public static final String TOPIC = "topic";
+
+    public static final String URL = "url";
+
+    public static final String CONSUMERGROUP = "consumerGroup";
+
+    private List<SubscriptionItem> topics;
+
+    private String url;
+
+    private String consumerGroup;
+
+    public String getConsumerGroup() {
+        return consumerGroup;
+    }
+
+    public void setConsumerGroup(String consumerGroup) {
+        this.consumerGroup = consumerGroup;
+    }
+
+    public List<SubscriptionItem> getTopics() {
+        return topics;
+    }
+
+    public void setTopics(List<SubscriptionItem> topics) {
+        this.topics = topics;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public static SubscribeRequestBody buildBody(Map<String, Object> bodyParam) {
+        SubscribeRequestBody body = new SubscribeRequestBody();
+        body.setUrl(MapUtils.getString(bodyParam, URL));
+        body.setTopics(JSONArray.parseArray(MapUtils.getString(bodyParam, TOPIC), SubscriptionItem.class));
+        body.setConsumerGroup(MapUtils.getString(bodyParam, CONSUMERGROUP));
+        return body;
+    }
+
+    @Override
+    public Map<String, Object> toMap() {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put(URL, url);
+        map.put(TOPIC, JSON.toJSONString(topics));
+        map.put(CONSUMERGROUP, consumerGroup);
+        return map;
+    }
+
+    @Override
+    public String toString() {
+        return "subscribeBody{" +
+                "consumerGroup='" + consumerGroup + '\'' +
+                ", url='" + url + '\'' +
+                ", topics=" + topics +
+                '}';
+    }
+}
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeResponseBody.java
similarity index 83%
copy from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegResponseBody.java
copy to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeResponseBody.java
index cffd492..21b7082 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeResponseBody.java
@@ -15,17 +15,17 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.client;
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.Constants;
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import org.apache.commons.lang3.time.DateFormatUtils;
+package org.apache.eventmesh.common.protocol.http.body.client;
 
 import java.util.HashMap;
 import java.util.Map;
 
-public class RegResponseBody extends Body {
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+import org.apache.eventmesh.common.protocol.http.common.ProtocolKey;
+
+public class SubscribeResponseBody extends Body {
     private Integer retCode;
     private String retMsg;
     private long resTime = System.currentTimeMillis();
@@ -54,8 +54,8 @@ public class RegResponseBody extends Body {
         this.resTime = resTime;
     }
 
-    public static RegResponseBody buildBody(Integer retCode, String retMsg) throws Exception {
-        RegResponseBody regResponseBody = new RegResponseBody();
+    public static SubscribeResponseBody buildBody(Integer retCode, String retMsg) throws Exception {
+        SubscribeResponseBody regResponseBody = new SubscribeResponseBody();
         regResponseBody.setRetMsg(retMsg);
         regResponseBody.setResTime(System.currentTimeMillis());
         regResponseBody.setRetCode(retCode);
@@ -80,5 +80,4 @@ public class RegResponseBody extends Body {
         map.put(ProtocolKey.RESTIME, resTime);
         return map;
     }
-
 }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java
similarity index 96%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java
index f0e0b7c..fe44595 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java
@@ -15,17 +15,18 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.client;
-
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import org.apache.commons.collections4.MapUtils;
+package org.apache.eventmesh.common.protocol.http.body.client;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+
+import org.apache.commons.collections4.MapUtils;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+
 public class UnRegRequestBody extends Body {
 
     public static final String CLIENTTYPE = "clientType";
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java
similarity index 85%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java
index 3b1a033..3250951 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java
@@ -15,16 +15,16 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.client;
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.Constants;
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import org.apache.commons.lang3.time.DateFormatUtils;
+package org.apache.eventmesh.common.protocol.http.body.client;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+import org.apache.eventmesh.common.protocol.http.common.ProtocolKey;
+
 public class UnRegResponseBody extends Body {
     private Integer retCode;
     private String retMsg;
@@ -54,8 +54,8 @@ public class UnRegResponseBody extends Body {
         this.resTime = resTime;
     }
 
-    public static RegResponseBody buildBody(Integer retCode, String retMsg) throws Exception {
-        RegResponseBody regResponseBody = new RegResponseBody();
+    public static UnRegResponseBody buildBody(Integer retCode, String retMsg) throws Exception {
+        UnRegResponseBody regResponseBody = new UnRegResponseBody();
         regResponseBody.setRetMsg(retMsg);
         regResponseBody.setResTime(System.currentTimeMillis());
         regResponseBody.setRetCode(retCode);
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeRequestBody.java
similarity index 55%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegRequestBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeRequestBody.java
index 8739590..756f1a9 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeRequestBody.java
@@ -15,31 +15,32 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.client;
-
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import org.apache.commons.collections4.MapUtils;
+package org.apache.eventmesh.common.protocol.http.body.client;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-public class RegRequestBody extends Body {
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 
-    public static final String CLIENTTYPE = "clientType";
+import org.apache.commons.collections4.MapUtils;
+import org.apache.eventmesh.common.protocol.http.body.Body;
 
-    public static final String TOPICS = "topics";
+public class UnSubscribeRequestBody extends Body {
 
-    public static final String ENDPOINT = "endpoint";
+    public static final String TOPIC = "topic";
 
-    private String clientType;
+    public static final String URL = "url";
 
-    private String endPoint;
+    public static final String CONSUMERGROUP = "consumerGroup";
 
     private List<String> topics;
 
+    private String url;
+
+    private String consumerGroup;
+
     public List<String> getTopics() {
         return topics;
     }
@@ -48,44 +49,44 @@ public class RegRequestBody extends Body {
         this.topics = topics;
     }
 
-    public String getClientType() {
-        return clientType;
+    public String getUrl() {
+        return url;
     }
 
-    public void setClientType(String clientType) {
-        this.clientType = clientType;
+    public void setUrl(String url) {
+        this.url = url;
     }
 
-    public String getEndPoint() {
-        return endPoint;
+    public String getConsumerGroup() {
+        return consumerGroup;
     }
 
-    public void setEndPoint(String endPoint) {
-        this.endPoint = endPoint;
+    public void setConsumerGroup(String consumerGroup) {
+        this.consumerGroup = consumerGroup;
     }
 
-    public static RegRequestBody buildBody(Map<String, Object> bodyParam) {
-        RegRequestBody body = new RegRequestBody();
-        body.setClientType(MapUtils.getString(bodyParam, CLIENTTYPE));
-        body.setEndPoint(MapUtils.getString(bodyParam, ENDPOINT));
-        body.setTopics(JSONArray.parseArray(MapUtils.getString(bodyParam, TOPICS), String.class));
+    public static UnSubscribeRequestBody buildBody(Map<String, Object> bodyParam) {
+        UnSubscribeRequestBody body = new UnSubscribeRequestBody();
+        body.setUrl(MapUtils.getString(bodyParam, URL));
+        body.setTopics(JSONArray.parseArray(MapUtils.getString(bodyParam, TOPIC), String.class));
+        body.setConsumerGroup(MapUtils.getString(bodyParam, CONSUMERGROUP));
         return body;
     }
 
     @Override
     public Map<String, Object> toMap() {
         Map<String, Object> map = new HashMap<String, Object>();
-        map.put(CLIENTTYPE, clientType);
-        map.put(ENDPOINT, endPoint);
-        map.put(TOPICS, JSON.toJSONString(topics));
+        map.put(URL, url);
+        map.put(TOPIC, JSON.toJSONString(topics));
+        map.put(CONSUMERGROUP, consumerGroup);
         return map;
     }
 
     @Override
     public String toString() {
-        return "regRequestBody{" +
-                "clientType='" + clientType + '\'' +
-                ", endPoint='" + endPoint + '\'' +
+        return "unSubscribeRequestBody{" +
+                "consumerGroup='" + consumerGroup + '\'' +
+                ", url='" + url + '\'' +
                 ", topics=" + topics +
                 '}';
     }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java
similarity index 83%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegResponseBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java
index cffd492..d62b9d9 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/client/RegResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java
@@ -15,17 +15,18 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.client;
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.Constants;
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import org.apache.commons.lang3.time.DateFormatUtils;
+package org.apache.eventmesh.common.protocol.http.body.client;
 
 import java.util.HashMap;
 import java.util.Map;
 
-public class RegResponseBody extends Body {
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+import org.apache.eventmesh.common.protocol.http.common.ProtocolKey;
+
+public class UnSubscribeResponseBody extends Body {
+
     private Integer retCode;
     private String retMsg;
     private long resTime = System.currentTimeMillis();
@@ -54,8 +55,8 @@ public class RegResponseBody extends Body {
         this.resTime = resTime;
     }
 
-    public static RegResponseBody buildBody(Integer retCode, String retMsg) throws Exception {
-        RegResponseBody regResponseBody = new RegResponseBody();
+    public static UnSubscribeResponseBody buildBody(Integer retCode, String retMsg) throws Exception {
+        UnSubscribeResponseBody regResponseBody = new UnSubscribeResponseBody();
         regResponseBody.setRetMsg(retMsg);
         regResponseBody.setResTime(System.currentTimeMillis());
         regResponseBody.setRetCode(retCode);
@@ -80,5 +81,4 @@ public class RegResponseBody extends Body {
         map.put(ProtocolKey.RESTIME, resTime);
         return map;
     }
-
 }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java
similarity index 93%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java
index dbd0ce4..accefa6 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java
@@ -15,16 +15,17 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.message;
+package org.apache.eventmesh.common.protocol.http.body.message;
+
+import java.util.HashMap;
+import java.util.Map;
 
-import com.webank.eventmesh.common.protocol.http.body.Body;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
-
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.eventmesh.common.protocol.http.body.Body;
 
 public class PushMessageRequestBody extends Body {
 
@@ -95,6 +96,7 @@ public class PushMessageRequestBody extends Body {
         this.extFields = extFields;
     }
 
+    @SuppressWarnings("unchecked")
     public static PushMessageRequestBody buildBody(final Map<String, Object> bodyParam) {
         PushMessageRequestBody pushMessageRequestBody = new PushMessageRequestBody();
         pushMessageRequestBody.setContent(MapUtils.getString(bodyParam, CONTENT));
@@ -103,8 +105,9 @@ public class PushMessageRequestBody extends Body {
         pushMessageRequestBody.setUniqueId(MapUtils.getString(bodyParam, UNIQUEID));
         pushMessageRequestBody.setRandomNo(MapUtils.getString(bodyParam, RANDOMNO));
         String extFields = MapUtils.getString(bodyParam, EXTFIELDS);
+
         if (StringUtils.isNotBlank(extFields)) {
-            pushMessageRequestBody.setExtFields(JSONObject.parseObject(extFields, HashMap.class));
+            pushMessageRequestBody.setExtFields((HashMap<String, String>) JSONObject.parseObject(extFields, HashMap.class));
         }
         return pushMessageRequestBody;
     }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java
similarity index 91%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java
index 8b1f28e..a5ac0d1 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java
@@ -15,16 +15,16 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.message;
-
-import com.webank.eventmesh.common.Constants;
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import org.apache.commons.lang3.time.DateFormatUtils;
+package org.apache.eventmesh.common.protocol.http.body.message;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+import org.apache.eventmesh.common.protocol.http.common.ProtocolKey;
+
 public class PushMessageResponseBody extends Body {
 
     private Integer retCode;
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java
similarity index 83%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java
index ebf9a69..e2de019 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java
@@ -15,25 +15,26 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.message;
+package org.apache.eventmesh.common.protocol.http.body.message;
+
+import java.util.HashMap;
+import java.util.Map;
 
-import com.webank.eventmesh.common.protocol.http.body.Body;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
-
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.eventmesh.common.protocol.http.body.Body;
 
 public class ReplyMessageRequestBody extends Body {
 
-
     public static final String ORIGTOPIC = "origTopic";
     public static final String BIZSEQNO = "bizSeqNo";
     public static final String UNIQUEID = "uniqueId";
     public static final String CONTENT = "content";
     public static final String EXTFIELDS = "extFields";
+    public static final String PRODUCERGROUP = "producerGroup";
 
     private String bizSeqNo;
 
@@ -45,6 +46,8 @@ public class ReplyMessageRequestBody extends Body {
 
     private HashMap<String, String> extFields;
 
+    private String producerGroup;
+
     public String getOrigTopic() {
         return origTopic;
     }
@@ -85,6 +88,15 @@ public class ReplyMessageRequestBody extends Body {
         this.extFields = extFields;
     }
 
+    public String getProducerGroup() {
+        return producerGroup;
+    }
+
+    public void setProducerGroup(String producerGroup) {
+        this.producerGroup = producerGroup;
+    }
+
+    @SuppressWarnings("unchecked")
     public static ReplyMessageRequestBody buildBody(Map<String, Object> bodyParam) {
         ReplyMessageRequestBody body = new ReplyMessageRequestBody();
         body.setBizSeqNo(MapUtils.getString(bodyParam, BIZSEQNO));
@@ -93,8 +105,9 @@ public class ReplyMessageRequestBody extends Body {
         body.setOrigTopic(MapUtils.getString(bodyParam, ORIGTOPIC));
         String extFields = MapUtils.getString(bodyParam, EXTFIELDS);
         if (StringUtils.isNotBlank(extFields)) {
-            body.setExtFields(JSONObject.parseObject(extFields, HashMap.class));
+            body.setExtFields((HashMap<String, String>) JSONObject.parseObject(extFields, HashMap.class));
         }
+        body.setProducerGroup(MapUtils.getString(bodyParam, PRODUCERGROUP));
         return body;
     }
 
@@ -106,6 +119,7 @@ public class ReplyMessageRequestBody extends Body {
                 .append("uniqueId=").append(uniqueId).append(",")
                 .append("origTopic=").append(origTopic).append(",")
                 .append("content=").append(content).append(",")
+                .append("producerGroup=").append(producerGroup).append(",")
                 .append("extFields=").append(extFields).append("}");
         return sb.toString();
     }
@@ -118,6 +132,7 @@ public class ReplyMessageRequestBody extends Body {
         map.put(UNIQUEID, uniqueId);
         map.put(CONTENT, content);
         map.put(EXTFIELDS, JSON.toJSONString(extFields));
+        map.put(PRODUCERGROUP, producerGroup);
         return map;
     }
 }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java
similarity index 91%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java
index 99b6a42..b5a2069 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java
@@ -15,16 +15,16 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.message;
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.Constants;
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import org.apache.commons.lang3.time.DateFormatUtils;
+package org.apache.eventmesh.common.protocol.http.body.message;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+import org.apache.eventmesh.common.protocol.http.common.ProtocolKey;
+
 public class ReplyMessageResponseBody extends Body {
 
     //响应码
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java
similarity index 85%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java
index 067d398..576e352 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java
@@ -15,23 +15,25 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.message;
+package org.apache.eventmesh.common.protocol.http.body.message;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
-import com.webank.eventmesh.common.protocol.http.body.Body;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import org.apache.eventmesh.common.protocol.http.body.Body;
 
 public class SendMessageBatchRequestBody extends Body {
 
     public static final String BATCHID = "batchId";
     public static final String CONTENTS = "contents";
     public static final String SIZE = "size";
+    public static final String PRODUCERGROUP = "producerGroup";
 
     private String batchId;
 
@@ -39,6 +41,8 @@ public class SendMessageBatchRequestBody extends Body {
 
     private String size;
 
+    private String producerGroup;
+
     public SendMessageBatchRequestBody() {
     }
 
@@ -66,12 +70,21 @@ public class SendMessageBatchRequestBody extends Body {
         this.size = size;
     }
 
+    public String getProducerGroup() {
+        return producerGroup;
+    }
+
+    public void setProducerGroup(String producerGroup) {
+        this.producerGroup = producerGroup;
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
         sb.append("sendMessageBatchRequestBody={")
                 .append("batchId=").append(batchId).append(",")
                 .append("size=").append(size).append(",")
+                .append("producerGroup=").append(producerGroup).append(",")
                 .append("contents=").append(JSON.toJSONString(contents)).append("}");
         return sb.toString();
     }
@@ -100,7 +113,7 @@ public class SendMessageBatchRequestBody extends Body {
         String batchId = MapUtils.getString(bodyParam,
                 BATCHID);
         String size = StringUtils.isBlank(MapUtils.getString(bodyParam,
-                SIZE)) ?  "1" : MapUtils.getString(bodyParam,
+                SIZE)) ? "1" : MapUtils.getString(bodyParam,
                 SIZE);
         String contents = MapUtils.getString(bodyParam,
                 CONTENTS, null);
@@ -110,6 +123,7 @@ public class SendMessageBatchRequestBody extends Body {
             body.setContents(JSONArray.parseArray(contents, BatchMessageEntity.class));
         }
         body.setSize(size);
+        body.setProducerGroup(MapUtils.getString(bodyParam, PRODUCERGROUP));
         return body;
     }
 
@@ -119,6 +133,7 @@ public class SendMessageBatchRequestBody extends Body {
         map.put(BATCHID, batchId);
         map.put(SIZE, size);
         map.put(CONTENTS, contents);
+        map.put(PRODUCERGROUP, producerGroup);
         return map;
     }
 
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java
similarity index 92%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java
index 45ffb0d..cf5ad72 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java
@@ -15,16 +15,16 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.message;
-
-import com.webank.eventmesh.common.Constants;
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import org.apache.commons.lang3.time.DateFormatUtils;
+package org.apache.eventmesh.common.protocol.http.body.message;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+import org.apache.eventmesh.common.protocol.http.common.ProtocolKey;
+
 public class SendMessageBatchResponseBody extends Body {
 
     //响应码
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchV2RequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2RequestBody.java
similarity index 85%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchV2RequestBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2RequestBody.java
index 3532da8..8f97cf1 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchV2RequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2RequestBody.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.message;
-
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import org.apache.commons.collections4.MapUtils;
+package org.apache.eventmesh.common.protocol.http.body.message;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.collections4.MapUtils;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+
 public class SendMessageBatchV2RequestBody extends Body {
 
     public static final String BIZSEQNO = "bizSeqNo";
@@ -30,6 +30,7 @@ public class SendMessageBatchV2RequestBody extends Body {
     public static final String MSG = "msg";
     public static final String TAG = "tag";
     public static final String TTL = "ttl";
+    public static final String PRODUCERGROUP = "producerGroup";
 
     private String bizSeqNo;
 
@@ -41,6 +42,8 @@ public class SendMessageBatchV2RequestBody extends Body {
 
     private String ttl;
 
+    private String producerGroup;
+
     public String getBizSeqNo() {
         return bizSeqNo;
     }
@@ -81,6 +84,14 @@ public class SendMessageBatchV2RequestBody extends Body {
         this.ttl = ttl;
     }
 
+    public String getProducerGroup() {
+        return producerGroup;
+    }
+
+    public void setProducerGroup(String producerGroup) {
+        this.producerGroup = producerGroup;
+    }
+
     public static SendMessageBatchV2RequestBody buildBody(final Map<String, Object> bodyParam) {
         String bizSeqno = MapUtils.getString(bodyParam,
                 BIZSEQNO);
@@ -98,6 +109,7 @@ public class SendMessageBatchV2RequestBody extends Body {
         body.setTag(tag);
         body.setTtl(ttl);
         body.setTopic(topic);
+        body.setProducerGroup(MapUtils.getString(bodyParam, PRODUCERGROUP));
         return body;
     }
 
@@ -109,6 +121,7 @@ public class SendMessageBatchV2RequestBody extends Body {
         map.put(MSG, msg);
         map.put(TAG, tag);
         map.put(TTL, ttl);
+        map.put(PRODUCERGROUP, producerGroup);
         return map;
     }
 
@@ -120,6 +133,7 @@ public class SendMessageBatchV2RequestBody extends Body {
                 .append("topic=").append(topic).append(",")
                 .append("tag=").append(tag).append(",")
                 .append("ttl=").append(ttl).append(",")
+                .append("producerGroup=").append(producerGroup).append(",")
                 .append("msg=").append(msg).append("}");
         return sb.toString();
     }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java
similarity index 92%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java
index bc5d9b1..fd0b49a 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java
@@ -15,16 +15,16 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.message;
-
-import com.webank.eventmesh.common.Constants;
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import org.apache.commons.lang3.time.DateFormatUtils;
+package org.apache.eventmesh.common.protocol.http.body.message;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+import org.apache.eventmesh.common.protocol.http.common.ProtocolKey;
+
 public class SendMessageBatchV2ResponseBody extends Body {
 
     //响应码
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java
similarity index 85%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java
index d123b61..5c302e8 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java
@@ -15,15 +15,16 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.message;
+package org.apache.eventmesh.common.protocol.http.body.message;
+
+import java.util.HashMap;
+import java.util.Map;
 
-import com.webank.eventmesh.common.protocol.http.body.Body;
 import com.alibaba.fastjson.JSONObject;
+
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
-
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.eventmesh.common.protocol.http.body.Body;
 
 public class SendMessageRequestBody extends Body {
 
@@ -34,7 +35,7 @@ public class SendMessageRequestBody extends Body {
     public static final String TTL = "ttl";
     public static final String TAG = "tag";
     public static final String EXTFIELDS = "extFields";
-
+    public static final String PRODUCERGROUP = "producerGroup";
 
     private String topic;
 
@@ -50,6 +51,8 @@ public class SendMessageRequestBody extends Body {
 
     private HashMap<String, String> extFields;
 
+    private String producerGroup;
+
     public String getTopic() {
         return topic;
     }
@@ -106,6 +109,15 @@ public class SendMessageRequestBody extends Body {
         this.tag = tag;
     }
 
+    public String getProducerGroup() {
+        return producerGroup;
+    }
+
+    public void setProducerGroup(String producerGroup) {
+        this.producerGroup = producerGroup;
+    }
+
+    @SuppressWarnings("unchecked")
     public static SendMessageRequestBody buildBody(Map<String, Object> bodyParam) {
         SendMessageRequestBody body = new SendMessageRequestBody();
         body.setTopic(MapUtils.getString(bodyParam, TOPIC));
@@ -116,8 +128,9 @@ public class SendMessageRequestBody extends Body {
         body.setContent(MapUtils.getString(bodyParam, CONTENT));
         String extFields = MapUtils.getString(bodyParam, EXTFIELDS);
         if (StringUtils.isNotBlank(extFields)) {
-            body.setExtFields(JSONObject.parseObject(extFields, HashMap.class));
+            body.setExtFields((HashMap<String, String>) JSONObject.parseObject(extFields, HashMap.class));
         }
+        body.setProducerGroup(MapUtils.getString(bodyParam, PRODUCERGROUP));
         return body;
     }
 
@@ -131,6 +144,7 @@ public class SendMessageRequestBody extends Body {
         map.put(TAG, tag);
         map.put(CONTENT, content);
         map.put(EXTFIELDS, extFields);
+        map.put(PRODUCERGROUP, producerGroup);
         return map;
     }
 
@@ -144,6 +158,7 @@ public class SendMessageRequestBody extends Body {
                 .append("content=").append(content).append(",")
                 .append("ttl=").append(ttl).append(",")
                 .append("tag=").append(tag).append(",")
+                .append("producerGroup=").append(producerGroup).append(",")
                 .append("extFields=").append(extFields).append("}");
         return sb.toString();
     }
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java
similarity index 92%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java
index 3758784..b9175a2 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java
@@ -15,16 +15,16 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.body.message;
-
-import com.webank.eventmesh.common.protocol.http.common.ProtocolKey;
-import com.webank.eventmesh.common.Constants;
-import com.webank.eventmesh.common.protocol.http.body.Body;
-import org.apache.commons.lang3.time.DateFormatUtils;
+package org.apache.eventmesh.common.protocol.http.body.message;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.protocol.http.body.Body;
+import org.apache.eventmesh.common.protocol.http.common.ProtocolKey;
+
 public class SendMessageResponseBody extends Body {
 
     private Integer retCode;
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/common/ClientRetCode.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/common/ClientRetCode.java
similarity index 94%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/common/ClientRetCode.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/common/ClientRetCode.java
index 2da7563..30986ef 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/common/ClientRetCode.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/common/ClientRetCode.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.common;
+package org.apache.eventmesh.common.protocol.http.common;
 
 public enum ClientRetCode {
 
     /**
-     * 这个RETRY的意思是 客户端发现投递的消息它没有监听时, 告诉PROXY 发往下一个, 重试几次以实现灰度 , 预留
+     * 这个RETRY的意思是 客户端发现投递的消息它没有监听时, 告诉EventMesh 发往下一个, 重试几次以实现灰度 , 预留
      */
 
     OK(1, "ok, SDK返回"),
diff --git a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/common/ClientType.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/common/ClientType.java
similarity index 91%
rename from eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/common/ClientType.java
rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/common/ClientType.java
index 4ddeb82..fdebba5 100644
--- a/eventmesh-common/src/main/java/com/webank/eventmesh/common/protocol/http/common/ClientType.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/common/ClientType.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package com.webank.eventmesh.common.protocol.http.common;
+package org.apache.eventmesh.common.protocol.http.common;
 
 public enum ClientType {
 
@@ -44,8 +44,8 @@ public enum ClientType {
 
     public static boolean contains(Integer clientType) {
         boolean flag = false;
-        for(ClientType ct:ClientType.values()) {
-            if(ct.type == clientType.intValue()) {
+        for (ClientType ct : ClientType.values()) {
+            if (ct.type == clientType.intValue()) {
                 flag = true;
                 break;
             }
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/common/EventMeshRetCode.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/common/EventMeshRetCode.java
new file mode 100644
index 0000000..3593e0e
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/common/EventMeshRetCode.java
@@ -0,0 +1,67 @@
+/*
+ * 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.common.protocol.http.common;
+
+public enum EventMeshRetCode {
+
+    SUCCESS(0, "success"),
+    OVERLOAD(1, "eventMesh overload, try later, "),
+    EVENTMESH_REQUESTCODE_INVALID(2, "requestCode can't be null, or must be number, "),
+    EVENTMESH_SEND_SYNC_MSG_ERR(3, "eventMesh send rr msg err, "),
+    EVENTMESH_WAITING_RR_MSG_ERR(4, "eventMesh waiting rr msg err, "),
+    EVENTMESH_PROTOCOL_HEADER_ERR(6, "eventMesh protocol[header] err, "),
+    EVENTMESH_PROTOCOL_BODY_ERR(7, "eventMesh protocol[body] err, "),
+    EVENTMESH_STOP(8, "eventMesh will stop or had stopped, "),
+    EVENTMESH_REJECT_BY_PROCESSOR_ERROR(9, "eventMesh reject by processor error, "),
... 44677 lines suppressed ...

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@eventmesh.apache.org
For additional commands, e-mail: commits-help@eventmesh.apache.org