diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..5c1ed394
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+target/mvn-eclipse-cache.properties
+target/
+
+# eclipse
+.classpath
+.project
+.settings
+.idea/
+*.iml
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 00000000..d9a95f5c
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,191 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, "control" means (i) the power, direct or
+indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
+outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+"Object" form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object code,
+generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made
+available under the License, as indicated by a copyright notice that is included
+in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that
+is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative Works
+shall not include works that remain separable from, or merely link (or bind by
+name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative Works
+thereof, that is intentionally submitted to Licensor for inclusion in the Work
+by the copyright owner or by an individual or Legal Entity authorized to submit
+on behalf of the copyright owner. For the purposes of this definition,
+"submitted" means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor for
+the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently
+incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable (except as stated in this section) patent license to make, have
+made, use, offer to sell, sell, import, and otherwise transfer the Work, where
+such license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by combination
+of their Contribution(s) with the Work to which such Contribution(s) was
+submitted. If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or contributory
+patent infringement, then any patent licenses granted to You under this License
+for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof
+in any medium, with or without modifications, and in Source or Object form,
+provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+You must cause any modified files to carry prominent notices stating that You
+changed the files; and
+You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source form
+of the Work, excluding those notices that do not pertain to any part of the
+Derivative Works; and
+If the Work includes a "NOTICE" text file as part of its distribution, then any
+Derivative Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those notices
+that do not pertain to any part of the Derivative Works, in at least one of the
+following places: within a NOTICE text file distributed as part of the
+Derivative Works; within the Source form or documentation, if provided along
+with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents of
+the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works that
+You distribute, alongside or as an addendum to the NOTICE text from the Work,
+provided that such additional attribution notices cannot be construed as
+modifying the License.
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works as a whole,
+provided Your use, reproduction, and distribution of the Work otherwise complies
+with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted
+for inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the terms of
+any separate license agreement you may have executed with Licensor regarding
+such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks,
+service marks, or product names of the Licensor, except as required for
+reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the
+Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+including, without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
+solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise of
+permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence),
+contract, or otherwise, unless required by applicable law (such as deliberate
+and grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License or
+out of the use or inability to use the Work (including but not limited to
+damages for loss of goodwill, work stoppage, computer failure or malfunction, or
+any and all other commercial damages or losses), even if such Contributor has
+been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to
+offer, and charge a fee for, acceptance of support, warranty, indemnity, or
+other liability obligations and/or rights consistent with this License. However,
+in accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if You
+agree to indemnify, defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason of your
+accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included on
+the same "printed page" as the copyright notice for easier identification within
+third-party archives.
+
+ Copyright 2013 Alibaba Group Holding Limited
+
+ Licensed 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.
diff --git a/README b/README
deleted file mode 100644
index e69de29b..00000000
diff --git a/README.md b/README.md
index 3d586086..fa0d245f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,41 @@
-RocketMQ
-========
+### RocketMQ是什么?
+RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:
-It's a MQ
+* 能够保证严格的消息顺序
+* 提供丰富的消息拉取模式
+* 高效的订阅者水平扩展能力
+* 实时的消息订阅机制
+* 亿级消息堆积能力
+
+
+----------
+
+### 如何开始?
+* [下载安装包](https://github.com/alibaba/RocketMQ/releases)
+* [Quick Start](https://github.com/alibaba/RocketMQ/wiki/Quick-Start)
+* [通过Wiki了解更多](https://github.com/alibaba/RocketMQ/wiki)
+
+----------
+
+### 开源协议
+[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) Copyright (C) 2010-2013 Alibaba Group Holding Limited
+
+----------
+
+### 开发规范
+* 代码使用Eclipse代码样式格式化,提交代码前须格式化[rocketmq.java.code.style.xml](https://github.com/alibaba/RocketMQ/blob/master/docs/rocketmq.java.code.style.xml)
+* Java源文件使用Unix换行、UTF-8文件编码
+* 请在git clone命令之前执行`git config --global core.autocrlf false`,确保本地代码使用Unix换行格式
+* 请在develop分支上开发
+* 每次提交须有Issue关联,可在git提交注释中增加`#issue号码`进行关联
+
+----------
+
+### 联系我们
+
+* [向我们提交建议、BUG、寻求技术帮助](https://github.com/alibaba/RocketMQ/issues/new)
+* 欢迎参与RocketMQ项目,只需在Github上fork、pull request即可。
+* [到新浪微博交流RocketMQ](http://q.weibo.com/1628465)
+* 加入QQ群交流,5776652
+
+----------
\ No newline at end of file
diff --git a/benchmark/consumer.sh b/benchmark/consumer.sh
new file mode 100644
index 00000000..a94a617d
--- /dev/null
+++ b/benchmark/consumer.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+#
+# $Id: consumer.sh 1831 2013-05-16 01:39:51Z shijia.wxr $
+#
+sh ./runclass.sh com.alibaba.rocketmq.example.benchmark.Consumer $@
diff --git a/benchmark/runclass.sh b/benchmark/runclass.sh
index 7a6f4c6b..5b638031 100644
--- a/benchmark/runclass.sh
+++ b/benchmark/runclass.sh
@@ -13,9 +13,9 @@ fi
BASE_DIR=$(dirname $0)/..
CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
-JAVA_OPT_1="-server -Xms4g -Xmx4g -Xmn1g -XX:PermSize=128m -XX:MaxPermSize=320m"
+JAVA_OPT_1="-server -Xms1g -Xmx1g -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=320m"
JAVA_OPT_2="-XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:+DisableExplicitGC"
-JAVA_OPT_3="-verbose:gc -Xloggc:${HOME}/metaq_gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
+JAVA_OPT_3="-verbose:gc -Xloggc:${HOME}/rocketmq_client_gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
JAVA_OPT_4="-XX:-OmitStackTraceInFastThrow"
JAVA_OPT_5="-Djava.ext.dirs=${BASE_DIR}/lib"
JAVA_OPT_6="-cp ${CLASSPATH}"
diff --git a/benchmark/tproducer.sh b/benchmark/tproducer.sh
new file mode 100644
index 00000000..f19d2c68
--- /dev/null
+++ b/benchmark/tproducer.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+#
+# $Id: producer.sh 1831 2013-05-16 01:39:51Z shijia.wxr $
+#
+sh ./runclass.sh com.alibaba.rocketmq.example.benchmark.TransactionProducer $@
diff --git a/bin/README.md b/bin/README.md
new file mode 100644
index 00000000..fa19540e
--- /dev/null
+++ b/bin/README.md
@@ -0,0 +1,34 @@
+### 操作系统调优
+在生产环境部署Broker前,必须要执行os.sh,对操作系统进行调优
+
+**P.S: os.sh只能执行一次,需要sudo root权限**
+
+### 启动broker
+* Unix平台
+
+ `nohup sh mqbroker &`
+
+* Windows平台(仅支持64位)
+
+ `mqbroker.exe`
+
+### 关闭broker
+ sh mqshutdown broker
+
+### 启动Name Server
+* Unix平台
+
+ `nohup sh mqnamesrv &`
+
+* Windows平台(仅支持64位)
+
+ `mqnamesrv.exe`
+
+### 关闭Name Server
+ sh mqshutdown namesrv
+
+### 更新或创建Topic
+ sh mqadmin updateTopic -b 127.0.0.1:10911 -t TopicA
+
+### 更新或创建订阅组
+ sh mqadmin updateSubGroup -b 127.0.0.1:10911 -g SubGroupA
\ No newline at end of file
diff --git a/bin/mqconsole b/bin/mqadmin
similarity index 79%
rename from bin/mqconsole
rename to bin/mqadmin
index 7a8ff9e1..67a94c7b 100644
--- a/bin/mqconsole
+++ b/bin/mqadmin
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# $Id: mqbroker 1472 2013-04-17 06:51:11Z shijia.wxr $
+# $Id: mqbroker 1840 2013-05-16 02:13:59Z shijia.wxr $
#
if [ -z "$ROCKETMQ_HOME" ] ; then
@@ -31,4 +31,4 @@ fi
export ROCKETMQ_HOME
-sh ${ROCKETMQ_HOME}/bin/runserver.sh com.alibaba.rocketmq.console.ConsoleStartup $@
+sh ${ROCKETMQ_HOME}/bin/tools.sh com.alibaba.rocketmq.tools.command.MQAdminStartup $@
diff --git a/bin/mqadmin.exe b/bin/mqadmin.exe
new file mode 100644
index 00000000..e8d8fac0
Binary files /dev/null and b/bin/mqadmin.exe differ
diff --git a/bin/mqadmin.xml b/bin/mqadmin.xml
new file mode 100644
index 00000000..560a8e5a
--- /dev/null
+++ b/bin/mqadmin.xml
@@ -0,0 +1,26 @@
+
+ false
+
+ ${JAVA_HOME}
+
+ server
+
+ com.alibaba.rocketmq.tools.command.MQAdminStartup
+
+
+ ${cpd}/../lib
+ ${cpd}/..
+
+
+
+
+
+
+ <-Xms512m>-Xms512m>
+ <-Xmx1g>-Xmx1g>
+ <-XX:NewSize>256M-XX:NewSize>
+ <-XX:MaxNewSize>512M-XX:MaxNewSize>
+ <-XX:PermSize>128M-XX:PermSize>
+ <-XX:MaxPermSize>128M-XX:MaxPermSize>
+
+
diff --git a/bin/mqbroker.exe b/bin/mqbroker.exe
new file mode 100644
index 00000000..e8d8fac0
Binary files /dev/null and b/bin/mqbroker.exe differ
diff --git a/bin/mqbroker.xml b/bin/mqbroker.xml
new file mode 100644
index 00000000..0cd31d6b
--- /dev/null
+++ b/bin/mqbroker.xml
@@ -0,0 +1,26 @@
+
+ false
+
+ ${JAVA_HOME}
+
+ server
+
+ com.alibaba.rocketmq.broker.BrokerStartup
+
+
+ ${cpd}/../lib
+ ${cpd}/..
+
+
+
+
+
+
+ <-Xms512m>-Xms512m>
+ <-Xmx1g>-Xmx1g>
+ <-XX:NewSize>256M-XX:NewSize>
+ <-XX:MaxNewSize>512M-XX:MaxNewSize>
+ <-XX:PermSize>128M-XX:PermSize>
+ <-XX:MaxPermSize>128M-XX:MaxPermSize>
+
+
diff --git a/bin/mqnamesrv.exe b/bin/mqnamesrv.exe
new file mode 100644
index 00000000..e8d8fac0
Binary files /dev/null and b/bin/mqnamesrv.exe differ
diff --git a/bin/mqnamesrv.xml b/bin/mqnamesrv.xml
new file mode 100644
index 00000000..c9701ccf
--- /dev/null
+++ b/bin/mqnamesrv.xml
@@ -0,0 +1,26 @@
+
+ false
+
+ ${JAVA_HOME}
+
+ server
+
+ com.alibaba.rocketmq.namesrv.NamesrvStartup
+
+
+ ${cpd}/../lib
+ ${cpd}/..
+
+
+
+
+
+
+ <-Xms512m>-Xms512m>
+ <-Xmx1g>-Xmx1g>
+ <-XX:NewSize>256M-XX:NewSize>
+ <-XX:MaxNewSize>512M-XX:MaxNewSize>
+ <-XX:PermSize>128M-XX:PermSize>
+ <-XX:MaxPermSize>128M-XX:MaxPermSize>
+
+
diff --git a/bin/mqshutdown b/bin/mqshutdown
index d72dfa5b..6a3b6ff7 100644
--- a/bin/mqshutdown
+++ b/bin/mqshutdown
@@ -1,17 +1,34 @@
#!/bin/sh
-#
-# $Id: mqshutdown 1831 2013-05-16 01:39:51Z shijia.wxr $
-#
+case $1 in
+ broker)
-pid=`ps ax | grep -i 'com.alibaba.rocketmq.broker.BrokerStartup' |grep java | grep -v grep | awk '{print $1}'`
-if [ -z "$pid" ] ; then
- echo "No mqbroker running."
- exit -1;
-fi
+ pid=`ps ax | grep -i 'com.alibaba.rocketmq.broker.BrokerStartup' |grep java | grep -v grep | awk '{print $1}'`
+ if [ -z "$pid" ] ; then
+ echo "No mqbroker running."
+ exit -1;
+ fi
-echo "The mqbroker(${pid}) is running..."
+ echo "The mqbroker(${pid}) is running..."
-kill ${pid}
+ kill ${pid}
-echo "Send shutdown request to mqbroker(${pid}) OK"
+ echo "Send shutdown request to mqbroker(${pid}) OK"
+ ;;
+ namesrv)
+
+ pid=`ps ax | grep -i 'com.alibaba.rocketmq.namesrv.NamesrvStartup' |grep java | grep -v grep | awk '{print $1}'`
+ if [ -z "$pid" ] ; then
+ echo "No mqnamesrv running."
+ exit -1;
+ fi
+
+ echo "The mqnamesrv(${pid}) is running..."
+
+ kill ${pid}
+
+ echo "Send shutdown request to mqnamesrv(${pid}) OK"
+ ;;
+ *)
+ echo "Useage: mqshutdown broker | namesrv"
+esac
diff --git a/bin/os.sh b/bin/os.sh
index aec5be64..372a0bb2 100644
--- a/bin/os.sh
+++ b/bin/os.sh
@@ -1,47 +1,40 @@
#!/bin/sh
-sudo sysctl vm.overcommit_memory=1
-sudo sysctl vm.min_free_kbytes=5000000
-sudo sysctl vm.drop_caches=1
-sudo sysctl vm.zone_reclaim_mode=0
-sudo sysctl vm.max_map_count=655360
-sudo sysctl vm.dirty_background_ratio=50
-sudo sysctl vm.dirty_ratio=50
-sudo sysctl vm.page-cluster=3
-sudo sysctl vm.dirty_writeback_centisecs=360000
-sudo sysctl vm.swappiness=10
+#
+# Execute Only Once
+#
-NOFILE=`ulimit -n`
-echo "nofile=${NOFILE}"
+echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf
+echo 'vm.min_free_kbytes=5000000' >> /etc/sysctl.conf
+echo 'vm.drop_caches=1' >> /etc/sysctl.conf
+echo 'vm.zone_reclaim_mode=0' >> /etc/sysctl.conf
+echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
+echo 'vm.dirty_background_ratio=50' >> /etc/sysctl.conf
+echo 'vm.dirty_ratio=50' >> /etc/sysctl.conf
+echo 'vm.page-cluster=3' >> /etc/sysctl.conf
+echo 'vm.dirty_writeback_centisecs=360000' >> /etc/sysctl.conf
+echo 'vm.swappiness=10' >> /etc/sysctl.conf
+sysctl -p
-if [ -d /sys/block/sda ]; then
- SCHEDULER=`cat /sys/block/sda/queue/scheduler`
- READ_AHEAD_KB=`cat /sys/block/sda/queue/read_ahead_kb`
- echo "/sys/block/sda/queue/scheduler=${SCHEDULER}"
- echo "/sys/block/sda/queue/read_ahead_kb=${READ_AHEAD_KB}"
-fi
+echo 'ulimit -n 655350' >> /etc/profile
+echo 'admin hard nofile 655350' >> /etc/security/limits.conf
-if [ -d /sys/block/sdb ]; then
- SCHEDULER=`cat /sys/block/sdb/queue/scheduler`
- READ_AHEAD_KB=`cat /sys/block/sdb/queue/read_ahead_kb`
- echo "/sys/block/sdb/queue/scheduler=${SCHEDULER}"
- echo "/sys/block/sdb/queue/read_ahead_kb=${READ_AHEAD_KB}"
-fi
+DISK=`df -k | sort -n -r -k 2 | awk -F/ 'NR==1 {gsub(/[0-9].*/,"",$3); print $3}'`
+[ "$DISK" = 'cciss' ] && DISK='cciss!c0d0'
+echo 'deadline' > /sys/block/$DISK/queue/scheduler
-if [ -d /sys/block/sdc ]; then
- SCHEDULER=`cat /sys/block/sdc/queue/scheduler`
- READ_AHEAD_KB=`cat /sys/block/sdc/queue/read_ahead_kb`
- echo "/sys/block/sdc/queue/scheduler=${SCHEDULER}"
- echo "/sys/block/sdc/queue/read_ahead_kb=${READ_AHEAD_KB}"
-fi
-if [ -d /sys/block/sdd ]; then
- SCHEDULER=`cat /sys/block/sdd/queue/scheduler`
- READ_AHEAD_KB=`cat /sys/block/sdd/queue/read_ahead_kb`
- echo "/sys/block/sdd/queue/scheduler=${SCHEDULER}"
- echo "/sys/block/sdd/queue/read_ahead_kb=${READ_AHEAD_KB}"
-fi
+echo "---------------------------------------------------------------"
+sysctl vm.overcommit_memory
+sysctl vm.min_free_kbytes
+sysctl vm.drop_caches
+sysctl vm.zone_reclaim_mode
+sysctl vm.max_map_count
+sysctl vm.dirty_background_ratio
+sysctl vm.dirty_ratio
+sysctl vm.page-cluster
+sysctl vm.dirty_writeback_centisecs
+sysctl vm.swappiness
-echo
-echo "TODO: Change 'nofile' value in /etc/security/limits.conf"
-echo "TODO: Change io scheduler value to deadline"
+su - admin -c 'ulimit -n'
+cat /sys/block/$DISK/queue/scheduler
diff --git a/bin/runbroker.sh b/bin/runbroker.sh
index 4cabcf9e..fdac09d1 100644
--- a/bin/runbroker.sh
+++ b/bin/runbroker.sh
@@ -15,7 +15,7 @@ CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
JAVA_OPT_1="-server -Xms4g -Xmx4g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=320m"
JAVA_OPT_2="-XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:+DisableExplicitGC"
-JAVA_OPT_3="-verbose:gc -Xloggc:${HOME}/rocketmq_gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
+JAVA_OPT_3="-verbose:gc -Xloggc:${HOME}/rocketmq_gc.log -XX:+PrintGCDetails"
JAVA_OPT_4="-XX:-OmitStackTraceInFastThrow"
JAVA_OPT_5="-Djava.ext.dirs=${BASE_DIR}/lib"
#JAVA_OPT_6="-Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
@@ -29,4 +29,10 @@ JAVA="$JAVA_HOME/bin/java"
JAVA_OPTS="${JAVA_OPT_1} ${JAVA_OPT_2} ${JAVA_OPT_3} ${JAVA_OPT_4} ${JAVA_OPT_5} ${JAVA_OPT_6} ${JAVA_OPT_7}"
-numactl --interleave=all $JAVA $JAVA_OPTS $@
+numactl --interleave=all pwd > /dev/null
+if [ $? -eq 0 ]
+then
+ numactl --interleave=all $JAVA $JAVA_OPTS $@
+else
+ $JAVA $JAVA_OPTS $@
+fi
diff --git a/bin/runserver.sh b/bin/runserver.sh
index ca17a7ef..fc7ab2ac 100644
--- a/bin/runserver.sh
+++ b/bin/runserver.sh
@@ -15,7 +15,7 @@ CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}
JAVA_OPT_1="-server -Xms4g -Xmx4g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=320m"
JAVA_OPT_2="-XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:+DisableExplicitGC"
-JAVA_OPT_3="-verbose:gc -Xloggc:${HOME}/rocketmq_gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
+JAVA_OPT_3="-verbose:gc -Xloggc:${HOME}/rocketmq_gc.log -XX:+PrintGCDetails"
JAVA_OPT_4="-XX:-OmitStackTraceInFastThrow"
JAVA_OPT_5="-Djava.ext.dirs=${BASE_DIR}/lib"
#JAVA_OPT_6="-Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
diff --git a/build.sh b/build.sh
new file mode 100644
index 00000000..432e372d
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,117 @@
+#!/bin/sh
+PROG_NAME=rocketmq
+SHELL_PATH=$(cd "$(dirname "$0")"; pwd)
+#NS="10.232.26.122 10.232.25.81"
+BROKER="10.232.25.82 10.232.25.83"
+NS="10.232.26.122"
+#BROKER="10.232.25.82"
+NS_PORT=9876
+TGZ_NAME=alibaba-rocketmq-3.0.0-SNAPSHOT.tar.gz
+
+usage() {
+ echo "Usage: ${PROG_NAME} {package|dispatch|start|stop|ns|broker|cleanlog|cleanstore|clean|show}"
+ exit 1;
+}
+
+package(){
+ echo "############################# package #################################"
+ sh develop.sh
+}
+
+dispatch(){
+ echo "############################# dispatch #################################"
+ pgmscp -b ${NS} ${BROKER} target/${TGZ_NAME} /home/manhong.yqd
+ pgm -b ${NS} ${BROKER} "tar zxvf ${TGZ_NAME}"
+ pgm -b ${NS} ${BROKER} 'rm -rf devenv'
+ pgm -b ${NS} ${BROKER} 'mv alibaba-rocketmq devenv'
+ pgm -b ${NS} ${BROKER} 'chmod +x devenv/bin/*'
+ pgm -b ${NS} ${BROKER} 'sed -i s/#JAVA_OPT_6=/JAVA_OPT_6=/g devenv/bin/runbroker.sh'
+ pgm -b ${NS} ${BROKER} 'sed -i s/#JAVA_OPT_6=/JAVA_OPT_6=/g devenv/bin/runserver.sh'
+}
+
+startup_ns(){
+ echo "############################# startup nameserver #################################"
+ pgm -b ${NS} 'killall -9 java'
+ sleep 1
+ pgm -b ${NS} 'rm -rf rocketmqlogs'
+ pgm -b ${NS} './devenv/bin/mqnamesrv' &
+ sleep 1
+ pgm -b ${NS} 'ps -ef|grep java'
+ sleep 1
+ pgm -b ${NS} "netstat -an|grep ${NS_PORT}"
+}
+
+startup_broker(){
+ echo "############################# startup broker #################################"
+ pgm -b ${BROKER} 'killall -9 java'
+ sleep 1
+ pgm -b ${BROKER} 'rm -rf rocketmqlogs'
+ tmp=`echo ${NS} | sed "s/ /:${NS_PORT};/g"`":${NS_PORT}"
+ echo "nameserver:${tmp}"
+ pgm -b ${BROKER} "./devenv/bin/mqbroker -n '${tmp}'" &
+ sleep 1
+ pgm -b ${BROKER} 'ps -ef|grep java'
+ sleep 1
+ pgm -b ${BROKER} "netstat -an|grep '${NS_PORT}'"
+}
+
+start(){
+ startup_ns
+ startup_broker
+}
+
+stop(){
+ pgm -b ${NS} ${BROKER} 'killall -9 java'
+}
+
+cleanlog(){
+ echo "############################# startup log #################################"
+ pgm -b ${NS} ${BROKER} 'rm -rf rocketmqlogs'
+}
+
+cleanstore(){
+ echo "############################# clean store #################################"
+ pgm -b ${NS} ${BROKER} 'rm -rf store'
+}
+
+show(){
+ pgm -b ${NS} ${BROKER} 'ps -ef|grep java'
+ pgm -b ${NS} ${BROKER} "netstat -an|grep '${NS_PORT}'"
+}
+
+case "$1" in
+ package)
+ package
+ ;;
+ dispatch)
+ dispatch
+ ;;
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ ns)
+ startup_ns
+ ;;
+ broker)
+ startup_broker
+ ;;
+ cleanlog)
+ cleanlog
+ ;;
+ cleanstore)
+ cleanstore
+ ;;
+ clean)
+ cleanlog
+ cleanstore
+ ;;
+ show)
+ show
+ ;;
+ *)
+ usage
+ ;;
+esac
diff --git a/conf/2m-2s-async/broker-a-s.properties b/conf/2m-2s-async/broker-a-s.properties
new file mode 100644
index 00000000..254fdddb
--- /dev/null
+++ b/conf/2m-2s-async/broker-a-s.properties
@@ -0,0 +1,7 @@
+brokerClusterName=DefaultCluster
+brokerName=broker-a
+brokerId=1
+deleteWhen=04
+fileReservedTime=48
+brokerRole=SLAVE
+flushDiskType=ASYNC_FLUSH
diff --git a/conf/2m-2s-async/broker-a.properties b/conf/2m-2s-async/broker-a.properties
new file mode 100644
index 00000000..275aeb68
--- /dev/null
+++ b/conf/2m-2s-async/broker-a.properties
@@ -0,0 +1,7 @@
+brokerClusterName=DefaultCluster
+brokerName=broker-a
+brokerId=0
+deleteWhen=04
+fileReservedTime=48
+brokerRole=ASYNC_MASTER
+flushDiskType=ASYNC_FLUSH
diff --git a/conf/2m-2s-async/broker-b-s.properties b/conf/2m-2s-async/broker-b-s.properties
new file mode 100644
index 00000000..2cd3357d
--- /dev/null
+++ b/conf/2m-2s-async/broker-b-s.properties
@@ -0,0 +1,7 @@
+brokerClusterName=DefaultCluster
+brokerName=broker-b
+brokerId=1
+deleteWhen=04
+fileReservedTime=48
+brokerRole=SLAVE
+flushDiskType=ASYNC_FLUSH
diff --git a/conf/2m-2s-async/broker-b.properties b/conf/2m-2s-async/broker-b.properties
new file mode 100644
index 00000000..0a116c04
--- /dev/null
+++ b/conf/2m-2s-async/broker-b.properties
@@ -0,0 +1,7 @@
+brokerClusterName=DefaultCluster
+brokerName=broker-b
+brokerId=0
+deleteWhen=04
+fileReservedTime=48
+brokerRole=ASYNC_MASTER
+flushDiskType=ASYNC_FLUSH
diff --git a/conf/2m-2s-sync/broker-a-s.properties b/conf/2m-2s-sync/broker-a-s.properties
new file mode 100644
index 00000000..254fdddb
--- /dev/null
+++ b/conf/2m-2s-sync/broker-a-s.properties
@@ -0,0 +1,7 @@
+brokerClusterName=DefaultCluster
+brokerName=broker-a
+brokerId=1
+deleteWhen=04
+fileReservedTime=48
+brokerRole=SLAVE
+flushDiskType=ASYNC_FLUSH
diff --git a/conf/2m-2s-sync/broker-a.properties b/conf/2m-2s-sync/broker-a.properties
new file mode 100644
index 00000000..06d2d6f3
--- /dev/null
+++ b/conf/2m-2s-sync/broker-a.properties
@@ -0,0 +1,7 @@
+brokerClusterName=DefaultCluster
+brokerName=broker-a
+brokerId=0
+deleteWhen=04
+fileReservedTime=48
+brokerRole=SYNC_MASTER
+flushDiskType=ASYNC_FLUSH
diff --git a/conf/2m-2s-sync/broker-b-s.properties b/conf/2m-2s-sync/broker-b-s.properties
new file mode 100644
index 00000000..2cd3357d
--- /dev/null
+++ b/conf/2m-2s-sync/broker-b-s.properties
@@ -0,0 +1,7 @@
+brokerClusterName=DefaultCluster
+brokerName=broker-b
+brokerId=1
+deleteWhen=04
+fileReservedTime=48
+brokerRole=SLAVE
+flushDiskType=ASYNC_FLUSH
diff --git a/conf/2m-2s-sync/broker-b.properties b/conf/2m-2s-sync/broker-b.properties
new file mode 100644
index 00000000..1ca35e6b
--- /dev/null
+++ b/conf/2m-2s-sync/broker-b.properties
@@ -0,0 +1,7 @@
+brokerClusterName=DefaultCluster
+brokerName=broker-b
+brokerId=0
+deleteWhen=04
+fileReservedTime=48
+brokerRole=SYNC_MASTER
+flushDiskType=ASYNC_FLUSH
diff --git a/conf/2m-noslave/broker-a.properties b/conf/2m-noslave/broker-a.properties
new file mode 100644
index 00000000..275aeb68
--- /dev/null
+++ b/conf/2m-noslave/broker-a.properties
@@ -0,0 +1,7 @@
+brokerClusterName=DefaultCluster
+brokerName=broker-a
+brokerId=0
+deleteWhen=04
+fileReservedTime=48
+brokerRole=ASYNC_MASTER
+flushDiskType=ASYNC_FLUSH
diff --git a/conf/2m-noslave/broker-b.properties b/conf/2m-noslave/broker-b.properties
new file mode 100644
index 00000000..0a116c04
--- /dev/null
+++ b/conf/2m-noslave/broker-b.properties
@@ -0,0 +1,7 @@
+brokerClusterName=DefaultCluster
+brokerName=broker-b
+brokerId=0
+deleteWhen=04
+fileReservedTime=48
+brokerRole=ASYNC_MASTER
+flushDiskType=ASYNC_FLUSH
diff --git a/conf/log4j_tools.xml b/conf/log4j_tools.xml
deleted file mode 100644
index 129e3e79..00000000
--- a/conf/log4j_tools.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/conf/logback_broker.xml b/conf/logback_broker.xml
new file mode 100644
index 00000000..ad30f40e
--- /dev/null
+++ b/conf/logback_broker.xml
@@ -0,0 +1,285 @@
+
+
+
+ ${user.home}/logs/rocketmqlogs/broker_default.log
+ true
+
+ ${user.home}/logs/rocketmqlogs/otherdays/bk_default-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+
+ 10
+
+
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+
+ ${user.home}/logs/rocketmqlogs/broker.log
+ true
+
+ ${user.home}/logs/rocketmqlogs/otherdays/broker-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+
+ 10
+
+
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+
+ ${user.home}/logs/rocketmqlogs/transaction.log
+ true
+
+ ${user.home}/logs/rocketmqlogs/otherdays/transaction-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+
+ 10
+
+
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+
+ ${user.home}/logs/rocketmqlogs/lock.log
+ true
+
+ ${user.home}/logs/rocketmqlogs/otherdays/lock-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+
+ 10
+
+
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+
+ ${user.home}/logs/rocketmqlogs/put.log
+ true
+
+ ${user.home}/logs/rocketmqlogs/otherdays/put-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+
+ 10
+
+
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+
+ ${user.home}/logs/rocketmqlogs/get.log
+ true
+
+ ${user.home}/logs/rocketmqlogs/otherdays/get-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+
+ 10
+
+
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+
+ ${user.home}/logs/rocketmqlogs/store.log
+ true
+
+ ${user.home}/logs/rocketmqlogs/otherdays/store-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+
+ 10
+
+
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+
+ ${user.home}/logs/rocketmqlogs/pullmsgLive.log
+ true
+
+ ${user.home}/logs/rocketmqlogs/otherdays/pullmsgLive-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+
+ 10
+
+
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+ ${user.home}/logs/rocketmqlogs/putmsgLive.log
+ true
+
+ ${user.home}/logs/rocketmqlogs/otherdays/putmsgLive-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+
+ 10
+
+
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+ ${user.home}/logs/rocketmqlogs/sendbackmsgLive.log
+ true
+
+ ${user.home}/logs/rocketmqlogs/otherdays/sendbackmsgLive-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+
+ 10
+
+
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+ ${user.home}/logs/rocketmqlogs/updateCommitOffset.log
+ true
+
+ ${user.home}/logs/rocketmqlogs/otherdays/updateCommitOffset-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+
+ 10
+
+
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+
+ true
+
+ %d{yyy-MM-dd HH\:mm\:ss,GMT+8} %p %t - %m%n
+ UTF-8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/conf/log4j_namesrv.xml b/conf/logback_namesrv.xml
similarity index 56%
rename from conf/log4j_namesrv.xml
rename to conf/logback_namesrv.xml
index cec3941c..9043bdc6 100644
--- a/conf/log4j_namesrv.xml
+++ b/conf/logback_namesrv.xml
@@ -1,34 +1,43 @@
-
- ${user.home}/rocketmqlogs/rocketmq_default.log
+
+ ${user.home}/logs/rocketmqlogs/namesrv_default.log
true
- rocketmq_default-%d{yyyy-MM-dd}.%i.log
-
- 33554432
+ ${user.home}/logs/rocketmqlogs/otherdays/ns_default-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+ 10
- %d{yyy-MM-dd HH\:mm\:ss,SSS} %p %t - %m%n
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
UTF-8
-
- ${user.home}/rocketmqlogs/rocketmq_namesrv.log
+
+ ${user.home}/logs/rocketmqlogs/namesrv.log
true
- rocketmq_namesrv-%d{yyyy-MM-dd}.%i.log
-
- 33554432
+ ${user.home}/logs/rocketmqlogs/otherdays/namesrv-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+ 10
- %d{yyy-MM-dd HH\:mm\:ss,SSS} %p %t - %m%n
+ %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
UTF-8
+
true
@@ -36,6 +45,7 @@
UTF-8
+
diff --git a/conf/log4j_broker.xml b/conf/logback_tools.xml
similarity index 60%
rename from conf/log4j_broker.xml
rename to conf/logback_tools.xml
index d7ce91c9..3712d5cd 100644
--- a/conf/log4j_broker.xml
+++ b/conf/logback_tools.xml
@@ -1,13 +1,17 @@
-
- ${user.home}/rocketmqlogs/rocketmq_default.log
+
+ ${user.home}/logs/rocketmqlogs/tools_default.log
true
- ${user.home}/rocketmqlogs/otherdays/rocketmq_default-%d{yyyy-MM-dd}.%i.log
-
- 33554432
+ ${user.home}/logs/rocketmqlogs/otherdays/tl_default-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+ 10
%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
@@ -15,20 +19,25 @@
-
- ${user.home}/rocketmqlogs/rocketmq_broker.log
+
+ ${user.home}/logs/rocketmqlogs/tools.log
true
- ${user.home}/rocketmqlogs/otherdays/rocketmq_broker-%d{yyyy-MM-dd}.%i.log
-
- 33554432
+ ${user.home}/logs/rocketmqlogs/otherdays/tools-%d{yyyy-MM-dd}.%i.log
+
+
+ 104857600
+ 10
%d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n
UTF-8
+
true
@@ -36,9 +45,10 @@
UTF-8
-
+
+
-
+
diff --git a/conf/namesrv.properties b/conf/namesrv.properties
deleted file mode 100644
index 2f68fd75..00000000
--- a/conf/namesrv.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# namesrv listen port
-listenPort=9876
-namesrvAddr=10.235.136.47:9876;10.235.136.49:9876;10.235.144.44:9876
\ No newline at end of file
diff --git a/deploy.bat b/deploy.bat
new file mode 100644
index 00000000..b3334f03
--- /dev/null
+++ b/deploy.bat
@@ -0,0 +1 @@
+mvn -Dmaven.test.skip=true deploy
\ No newline at end of file
diff --git a/develop.sh b/develop.sh
new file mode 100644
index 00000000..329e4393
--- /dev/null
+++ b/develop.sh
@@ -0,0 +1,15 @@
+git pull
+
+git checkout develop
+
+rm -rf target
+rm -f devenv
+
+if [ -z "$JAVA_HOME" ]; then
+ JAVA_HOME=/opt/taobao/java
+fi
+
+export PATH=/opt/taobao/mvn/bin:$JAVA_HOME/bin:$PATH
+mvn -Dmaven.test.skip=true clean package install assembly:assembly -U
+
+ln -s target/alibaba-rocketmq-3.0.8-SNAPSHOT.dir/alibaba-rocketmq devenv
diff --git a/docs/RocketMQ Benchmark case.xlsx b/docs/RocketMQ Benchmark case.xlsx
deleted file mode 100644
index 68ffd355..00000000
Binary files a/docs/RocketMQ Benchmark case.xlsx and /dev/null differ
diff --git a/docs/RocketMQ Benchmark.docx b/docs/RocketMQ Benchmark.docx
deleted file mode 100644
index 073c364e..00000000
Binary files a/docs/RocketMQ Benchmark.docx and /dev/null differ
diff --git a/docs/RocketMQ Share.pptx b/docs/RocketMQ Share.pptx
deleted file mode 100644
index 6bafa7da..00000000
Binary files a/docs/RocketMQ Share.pptx and /dev/null differ
diff --git "a/docs/RocketMQ \345\216\237\347\220\206\344\270\216\345\272\224\347\224\250.docx" "b/docs/RocketMQ \345\216\237\347\220\206\344\270\216\345\272\224\347\224\250.docx"
deleted file mode 100644
index dc6042e8..00000000
Binary files "a/docs/RocketMQ \345\216\237\347\220\206\344\270\216\345\272\224\347\224\250.docx" and /dev/null differ
diff --git "a/docs/RocketMQ \345\220\204\347\247\215\345\233\276\350\241\250.vsd" "b/docs/RocketMQ \345\220\204\347\247\215\345\233\276\350\241\250.vsd"
deleted file mode 100644
index 08cc5c2f..00000000
Binary files "a/docs/RocketMQ \345\220\204\347\247\215\345\233\276\350\241\250.vsd" and /dev/null differ
diff --git "a/docs/RocketMQ \346\212\200\346\234\257\346\226\271\346\241\210.pptx" "b/docs/RocketMQ \346\212\200\346\234\257\346\226\271\346\241\210.pptx"
deleted file mode 100644
index 678482c7..00000000
Binary files "a/docs/RocketMQ \346\212\200\346\234\257\346\226\271\346\241\210.pptx" and /dev/null differ
diff --git "a/docs/RocketMQ \350\241\250\346\240\274.xlsx" "b/docs/RocketMQ \350\241\250\346\240\274.xlsx"
deleted file mode 100644
index 169e562b..00000000
Binary files "a/docs/RocketMQ \350\241\250\346\240\274.xlsx" and /dev/null differ
diff --git "a/docs/RocketMQ \350\256\276\350\256\241\345\233\276.vsd" "b/docs/RocketMQ \350\256\276\350\256\241\345\233\276.vsd"
deleted file mode 100644
index e6ff9d96..00000000
Binary files "a/docs/RocketMQ \350\256\276\350\256\241\345\233\276.vsd" and /dev/null differ
diff --git a/docs/rocketmq.java.code.style.xml b/docs/rocketmq.java.code.style.xml
new file mode 100644
index 00000000..c0ac866d
--- /dev/null
+++ b/docs/rocketmq.java.code.style.xml
@@ -0,0 +1,432 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/eclipse.bat b/eclipse.bat
index 0d824546..9b286a4c 100644
--- a/eclipse.bat
+++ b/eclipse.bat
@@ -1,3 +1 @@
-call mvn -U eclipse:eclipse
-
-@pause
\ No newline at end of file
+mvn -U eclipse:eclipse
diff --git a/install.bat b/install.bat
new file mode 100644
index 00000000..2c3b5057
--- /dev/null
+++ b/install.bat
@@ -0,0 +1,2 @@
+mvn -Dmaven.test.skip=true clean package install assembly:assembly -U
+
diff --git a/install.sh b/install.sh
index 35b7ca7a..f849ae3d 100644
--- a/install.sh
+++ b/install.sh
@@ -1,10 +1,13 @@
git pull
+git checkout master
+
rm -rf target
rm -f devenv
-
-export JAVA_HOME=/opt/taobao/java
+if [ -z "$JAVA_HOME" ]; then
+ JAVA_HOME=/opt/taobao/java
+fi
export PATH=/opt/taobao/mvn/bin:$JAVA_HOME/bin:$PATH
mvn -Dmaven.test.skip=true clean package install assembly:assembly -U
-ln -s target/alibaba-rocketmq-3.0.0-SNAPSHOT.dir/alibaba-rocketmq devenv
+ln -s target/alibaba-rocketmq-3.0.7.dir/alibaba-rocketmq devenv
diff --git a/open/githubpage/index.html b/open/githubpage/index.html
index 19f70029..da166fb5 100644
--- a/open/githubpage/index.html
+++ b/open/githubpage/index.html
@@ -1,79 +1,99 @@
-
+
-
-
-
-淘宝METAQ开源消息中间件
-
-
+
+
+
+ 淘宝METAQ开源消息中间件
+
+
-