You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by yu...@apache.org on 2017/04/24 17:02:53 UTC

[01/16] incubator-rocketmq-site git commit: update reward and repo

Repository: incubator-rocketmq-site
Updated Branches:
  refs/heads/asf-site 4e4afc459 -> ac7796b86


update reward and repo


Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/commit/5eb23855
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/tree/5eb23855
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/diff/5eb23855

Branch: refs/heads/asf-site
Commit: 5eb23855bef41c00bd1c5d8cf1195e0a29b51b3e
Parents: 568e53c
Author: stevenschew <st...@apache.org>
Authored: Fri Apr 7 09:00:37 2017 +0800
Committer: stevenschew <st...@apache.org>
Committed: Fri Apr 7 09:00:51 2017 +0800

----------------------------------------------------------------------
 .../2017-03-31-launch-rocketmq-code-marathon.md |  20 +++++++++----------
 .../launch-second-rocketmq-code-marathon.pdf    | Bin 95367 -> 95267 bytes
 2 files changed, 9 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/5eb23855/_posts/2017-03-31-launch-rocketmq-code-marathon.md
----------------------------------------------------------------------
diff --git a/_posts/2017-03-31-launch-rocketmq-code-marathon.md b/_posts/2017-03-31-launch-rocketmq-code-marathon.md
index a33682f..8874935 100644
--- a/_posts/2017-03-31-launch-rocketmq-code-marathon.md
+++ b/_posts/2017-03-31-launch-rocketmq-code-marathon.md
@@ -21,18 +21,16 @@ tags:
 1. 1~3 Milestone Releases Per Project
 
 ## Rewards:
-1. Two Potential Committers Per Project
+1. Two Potential Committers Candidates Per Project
 1. Free Offers to Active Participants for On-Site Meetup
-1. PMC Memberships for Qualified Committers
-
 ## PROJECTS
 
 ### RocketMQ-Big Data
 1. Integration of big data analysis framework
 1. Rich Documentation and Good Test Cases Coverage
 1. Apache Beam preferred 
-2. Join by Creating Pull Requests against [RocketMQ Beam Repository](https://github.com/rocketmq/rocketmq-flink)
-3. Join by Creating Pull Requests against [RocketMQ Flink Repository](https://github.com/rocketmq/rocketmq-flink)
+2. Join by Creating Pull Requests against [RocketMQ Beam Repository](https://github.com/apache/incubator-rocketmq-externals)
+3. Join by Creating Pull Requests against [RocketMQ Flink Repository](https://github.com/apache/incubator-rocketmq-externals)
 4. Join by Existing Pull Request against [RocketMQ Storm Repository](https://github.com/apache/storm/pull/2024)
 4. Join by Existing Pull Request against [RocketMQ Spark Repository](https://github.com/apache/incubator-rocketmq-externals/pull/5)
 
@@ -40,15 +38,15 @@ tags:
 1. Development of RocketMQ Client
 1. Rich Documentation and Good Test Cases Coverage
 3. Go preferred
-1. Join by Creating Pull Requests against [RocketMQ Go Repository](https://github.com/rocketmq/rocketmq-go)
-2. Join by Creating Pull Requests against [RocketMQ .Net Repository](https://github.com/rocketmq/rocketmq-donet)
-3. Join by Creating Pull Requests against [RocketMQ PHP Repository](https://github.com/rocketmq/rocketmq-php)
+1. Join by Creating Pull Requests against [RocketMQ Go Repository](https://github.com/apache/incubator-rocketmq-externals)
+2. Join by Creating Pull Requests against [RocketMQ .Net Repository](https://github.com/apache/incubator-rocketmq-externals)
+3. Join by Creating Pull Requests against [RocketMQ PHP Repository](https://github.com/apache/incubator-rocketmq-externals)
 
 
 ### RocketMQ-Data Replication
 1. Implement Data Replication from Database
 1. Rich Documentation and Good Test Cases Coverage
 3. MySQL preferred
-1. Join by Creating Pull Requests against [RocketMQ MySQL Repository](https://github.com/rocketmq/rocketmq-mysql)
-2. Join by Creating Pull Requests against [RocketMQ Redis Repository](https://github.com/rocketmq/rocketmq-redis)
-3. Join by Creating Pull Requests against [RocketMQ MongoDB Repository](https://github.com/rocketmq/rocketmq-mongodb)
+1. Join by Creating Pull Requests against [RocketMQ MySQL Repository](https://github.com/apache/incubator-rocketmq-externals)
+2. Join by Creating Pull Requests against [RocketMQ Redis Repository](https://github.com/apache/incubator-rocketmq-externals)
+3. Join by Creating Pull Requests against [RocketMQ MongoDB Repository](https://github.com/apache/incubator-rocketmq-externals)

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/5eb23855/assets/attachment/launch-second-rocketmq-code-marathon.pdf
----------------------------------------------------------------------
diff --git a/assets/attachment/launch-second-rocketmq-code-marathon.pdf b/assets/attachment/launch-second-rocketmq-code-marathon.pdf
index 0573efb..e0c9318 100644
Binary files a/assets/attachment/launch-second-rocketmq-code-marathon.pdf and b/assets/attachment/launch-second-rocketmq-code-marathon.pdf differ


[10/16] incubator-rocketmq-site git commit: Release at 2017.04.25

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/release-manual.html
----------------------------------------------------------------------
diff --cc content/docs/release-manual.html
index d8af0ca,0000000..8066c6c
mode 100644,000000..100644
--- a/content/docs/release-manual.html
+++ b/content/docs/release-manual.html
@@@ -1,887 -1,0 +1,947 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Release Manual - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="Apache RocketMQ Release Manual">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Release Manual">
 +
 +
 +
 +
 +  <meta property="og:description" content="Apache RocketMQ Release Manual">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Release Manual">
 +  <meta name="twitter:description" content="Apache RocketMQ Release Manual">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="active">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Release Manual">
 +    <meta itemprop="description" content="Apache RocketMQ Release Manual">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="February 08, 2017">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Release Manual
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#preliminaries" id="markdown-toc-preliminaries">Preliminaries</a>    <ul>
 +      <li><a href="#apache-release-documentation" id="markdown-toc-apache-release-documentation">Apache Release Documentation</a></li>
 +      <li><a href="#code-signing-key" id="markdown-toc-code-signing-key">Code Signing Key</a></li>
 +      <li><a href="#prepare-your-maven-settings" id="markdown-toc-prepare-your-maven-settings">Prepare Your Maven Settings</a></li>
 +      <li><a href="#cleanup-jira-issues" id="markdown-toc-cleanup-jira-issues">Cleanup JIRA issues</a></li>
 +      <li><a href="#publish-the-release-notes" id="markdown-toc-publish-the-release-notes">Publish the Release Notes</a></li>
 +    </ul>
 +  </li>
 +  <li><a href="#build-the-release-candidate" id="markdown-toc-build-the-release-candidate">Build the Release Candidate</a>    <ul>
 +      <li><a href="#build-the-candidate-release-artifacts" id="markdown-toc-build-the-candidate-release-artifacts">Build the Candidate Release Artifacts</a></li>
 +      <li><a href="#validate-the-release-candidate" id="markdown-toc-validate-the-release-candidate">Validate the Release Candidate</a></li>
 +      <li><a href="#release-artifacts-to-dev-repository" id="markdown-toc-release-artifacts-to-dev-repository">Release Artifacts to Dev-Repository</a></li>
 +    </ul>
 +  </li>
 +  <li><a href="#vote-on-the-release" id="markdown-toc-vote-on-the-release">Vote on the Release</a>    <ul>
 +      <li><a href="#apache-rocketmq-community-vote" id="markdown-toc-apache-rocketmq-community-vote">Apache RocketMQ Community Vote</a></li>
 +      <li><a href="#incubator-pmc-vote" id="markdown-toc-incubator-pmc-vote">Incubator PMC Vote</a></li>
 +    </ul>
 +  </li>
 +  <li><a href="#publish-the-release" id="markdown-toc-publish-the-release">Publish the Release</a></li>
 +  <li><a href="#announce-the-release" id="markdown-toc-announce-the-release">Announce the Release</a></li>
 +  <li><a href="#references" id="markdown-toc-references">References</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<p>This is a guide to making a release of Apache RocketMQ (incubating). Please follow the steps below.</p>
 +
 +<h2 id="preliminaries">Preliminaries</h2>
 +<h3 id="apache-release-documentation">Apache Release Documentation</h3>
 +<p>There are some release documentations provided by The ASF, including the incubator release documentation, can be found here:</p>
 +
 +<ul>
 +  <li><a href="http://www.apache.org/dev/release-publishing">Apache Release Guide</a></li>
 +  <li><a href="http://www.apache.org/dev/release.html">Apache Release Policy</a></li>
 +  <li><a href="http://incubator.apache.org/guides/releasemanagement.html">Apache Incubator Release Guidelines</a></li>
 +  <li><a href="http://incubator.apache.org/incubation/Incubation_Policy.html#Releases">Apache Incubator Release Policy</a></li>
 +  <li><a href="http://www.apache.org/dev/publishing-maven-artifacts.html">Maven Release Info</a></li>
 +</ul>
 +
 +<h3 id="code-signing-key">Code Signing Key</h3>
 +<p>Create a code signing gpg key for release signing, use <strong>&lt;your Apache ID&gt;@apache.org</strong> as your primary ID for the code signing key. See the <a href="https://www.apache.org/dev/release-signing">Apache Release Signing documentation</a> for more details.</p>
 +
 +<ul>
 +  <li>Create new pgp key. How to use pgp please refer to <a href="http://www.apache.org/dev/openpgp.html">here</a>.</li>
 +  <li>Generate a new key via <code class="highlighter-rouge">gpg --gen-key</code>, and answer 4096 bits with no expiration time.</li>
 +  <li>Upload your key to a public key server, like <code class="highlighter-rouge">gpg --keyserver pgpkeys.mit.edu --send-key &lt;your key id&gt;</code>.</li>
 +  <li>Get the key signed by other committers(Optional).</li>
 +  <li>Add the key to the RocketMQ <a href="https://dist.apache.org/repos/dist/dev/incubator/rocketmq/KEYS">KEYS file</a>.</li>
 +</ul>
 +
 +<p><strong>Tips:</strong> If you have more than one key in your gpg, set the code signing key to <code class="highlighter-rouge">~/.gnupg/gpg.conf</code> as default key is recommended.</p>
 +
 +<h3 id="prepare-your-maven-settings">Prepare Your Maven Settings</h3>
 +<p>Make sure that your Maven settings.xml file contains the following:</p>
 +
 +<div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="nt">&lt;settings&gt;</span>
 +   <span class="nt">&lt;profiles&gt;</span>
 +         <span class="nt">&lt;profile&gt;</span>
 +           <span class="nt">&lt;id&gt;</span>signed_release<span class="nt">&lt;/id&gt;</span>
 +           <span class="nt">&lt;properties&gt;</span>
 +               <span class="nt">&lt;mavenExecutorId&gt;</span>forked-path<span class="nt">&lt;/mavenExecutorId&gt;</span>
 +               <span class="nt">&lt;gpg.keyname&gt;</span>yourKeyName<span class="nt">&lt;/gpg.keyname&gt;</span>
 +               <span class="nt">&lt;username&gt;</span>yourApacheID<span class="nt">&lt;/username&gt;</span>
 +               <span class="nt">&lt;deploy.url&gt;</span>https://dist.apache.org/repos/dist/dev/incubator/rocketmq/<span class="nt">&lt;/deploy.url&gt;</span>
 +           <span class="nt">&lt;/properties&gt;</span>
 +       <span class="nt">&lt;/profile&gt;</span>
 + <span class="nt">&lt;/profiles&gt;</span>
 +  <span class="nt">&lt;servers&gt;</span>
 +    <span class="c">&lt;!-- To publish a snapshot of some part of Maven --&gt;</span>
 +    <span class="nt">&lt;server&gt;</span>
 +      <span class="nt">&lt;id&gt;</span>apache.snapshots.https<span class="nt">&lt;/id&gt;</span>
 +      <span class="nt">&lt;username&gt;</span>yourApacheID<span class="nt">&lt;/username&gt;</span>
 +      <span class="nt">&lt;password&gt;</span>yourApachePassword<span class="nt">&lt;/password&gt;</span>
 +    <span class="nt">&lt;/server&gt;</span>
 +    <span class="c">&lt;!-- To stage a release of some part of Maven --&gt;</span>
 +    <span class="nt">&lt;server&gt;</span>
 +      <span class="nt">&lt;id&gt;</span>apache.releases.https<span class="nt">&lt;/id&gt;</span>
 +      <span class="nt">&lt;username&gt;</span>yourApacheID<span class="nt">&lt;/username&gt;</span>
 +      <span class="nt">&lt;password&gt;</span>yourApachePassword<span class="nt">&lt;/password&gt;</span>
 +    <span class="nt">&lt;/server&gt;</span>
 +    <span class="nt">&lt;server&gt;</span>
 +      <span class="nt">&lt;id&gt;</span>gpg.passphrase<span class="nt">&lt;/id&gt;</span>
 +      <span class="nt">&lt;passphrase&gt;</span>yourKeyPassword<span class="nt">&lt;/passphrase&gt;</span>
 +    <span class="nt">&lt;/server&gt;</span>
 +  <span class="nt">&lt;/servers&gt;</span>
 +<span class="nt">&lt;/settings&gt;</span>
 +</code></pre>
 +</div>
 +
 +<p><strong>Tips:</strong> It is highly recommended to use <a href="http://maven.apache.org/guides/mini/guide-encryption.html">Maven\u2019s password encryption capabilities</a> for your passwords.</p>
 +
 +<h3 id="cleanup-jira-issues">Cleanup JIRA issues</h3>
 +<p>Cleanup JIRA issues related to this release version, and check all the issues has been marked with right version in the <code class="highlighter-rouge">FixVersion</code> field.</p>
 +
 +<h3 id="publish-the-release-notes">Publish the Release Notes</h3>
 +<p>Generate the release notes via <a href="https://issues.apache.org/jira/browse/ROCKETMQ/">RocketMQ JIRA</a> and publish it to the <a href="https://github.com/apache/incubator-rocketmq-site">rocketmq-site</a>, there is a <a href="http://rocketmq.incubator.apache.org/release_notes/release-notes-4.0.0-incubating/">release notes</a> of <code class="highlighter-rouge">4.0.0-incubating</code> available for reference, include the link to the release notes in the voting emails.</p>
 +
 +<h2 id="build-the-release-candidate">Build the Release Candidate</h2>
 +<p>Firstly, checkout a new branch from <code class="highlighter-rouge">master</code> with its name equal to the release version, like <code class="highlighter-rouge">release-4.0.0-incubating</code>.</p>
 +
 +<h3 id="build-the-candidate-release-artifacts">Build the Candidate Release Artifacts</h3>
 +<p>Before building the release artifacts, do some verifications below:</p>
 +
 +<ul>
 +  <li>Ensure that now your are in the candidate release branch.</li>
 +  <li>Ensure that all the unit tests can pass via <code class="highlighter-rouge">mvn clean install</code>.</li>
 +  <li>Ensure that all the integration tests can pass via <code class="highlighter-rouge">mvn clean test -Pit-test</code>.</li>
 +</ul>
 +
 +<p>Perform the following to generate and stage the artifacts:</p>
 +
 +<ol>
 +  <li><code class="highlighter-rouge">mvn clean release:clean</code></li>
 +  <li><code class="highlighter-rouge">mvn release:prepare -Psigned_release -Darguments="-DskipTests"</code>, answer the right release version, SCM release tag, and the new development version.</li>
 +  <li><code class="highlighter-rouge">mvn -Psigned_release release:perform -Darguments="-DskipTests"</code>, generate the artifacts and push them to the <a href="https://repository.apache.org/#stagingRepositories">Nexus repo</a>. If you would like to perform a dry run first (without pushing the artifacts to the repo), add the arg -DdryRun=true</li>
 +</ol>
 +
 +<p>Now, the candidate release artifacts can be found in the <a href="https://repository.apache.org/#stagingRepositories">Nexus staging repo</a> and in the <code class="highlighter-rouge">target</code> folder of your local branch.</p>
 +
 +<p><strong>Tips:</strong> If you are performing a source-only release, please remove all artifacts from the staging repo except for the .zip file containing the source and the javadocs jar file. In the Nexus GUI, you can right click on each artifact to be deleted and then select <code class="highlighter-rouge">Delete</code>.</p>
 +
 +<h3 id="validate-the-release-candidate">Validate the Release Candidate</h3>
 +<p>Now the release candidate is ready, before calling a vote, the artifacts must satisfy the following checklist:</p>
 +
 +<ul>
 +  <li>Checksums and PGP signatures are valid.</li>
 +  <li>Build is successful including unit and integration tests.</li>
 +  <li>DISCLAIMER is correct, filenames include \u201cincubating\u201d.</li>
 +  <li>LICENSE and NOTICE files are correct and dependency licenses are acceptable.</li>
 +  <li>All source files have license headers where appropriate, RAT checks pass</li>
 +  <li>Javadocs have been generated correctly and are accurate.</li>
 +  <li>The provenance of all source files is clear (ASF or software grants).</li>
 +</ul>
 +
 +<p>Please follow the steps below to verify the checksums and PGP signatures:</p>
 +
 +<ol>
 +  <li>Download the release artifacts, PGP signature file, MD5/SHA hash files.</li>
 +  <li>On unix platforms the following command can be executed:</li>
 +</ol>
 +
 +<div class="language-shell highlighter-rouge"><pre class="highlight"><code>  <span class="k">for </span>file <span class="k">in</span> <span class="sb">`</span>find . -type f -iname <span class="s1">'*.asc'</span><span class="sb">`</span>
 +  <span class="k">do
 +      </span>gpg --verify <span class="k">${</span><span class="nv">file</span><span class="k">}</span> 
 +  <span class="k">done</span>
 +</code></pre>
 +</div>
 +
 +<p>or</p>
 +
 +<div class="language-shell highlighter-rouge"><pre class="highlight"><code>  gpg --verify rocketmq-all-%version-number%-incubating-source-release.zip.asc rocketmq-all-%version-number%-incubating-source-release.zip
 +</code></pre>
 +</div>
 +<p>Check the output to ensure it contains only good signatures:</p>
 +
 +<div class="language-text highlighter-rouge"><pre class="highlight"><code>  gpg: Good signature from ... gpg: Signature made ...
 +</code></pre>
 +</div>
 +
 +<ol>
 +  <li>Compare MD5, SHA hash generated from the below command with the downloaded hash files.</li>
 +</ol>
 +
 +<div class="language-shell highlighter-rouge"><pre class="highlight"><code>  gpg --print-mds rocketmq-all-%version-number%-incubating-source-release.zip 
 +</code></pre>
 +</div>
 +
 +<h3 id="release-artifacts-to-dev-repository">Release Artifacts to Dev-Repository</h3>
 +<p>If the release candidate appears to pass the validation checklist, close the staging repository in Nexus by selecting the staging repository <code class="highlighter-rouge">orgapacherocketmq-XXX</code> and clicking on the <code class="highlighter-rouge">Close</code> icon.</p>
 +
 +<p>Nexus will now run through a series of checksum and signature validations.</p>
 +
 +<p>If the checks pass, Nexus will close the repository and give a URL to the closed staging repo (which contains the candidate artifacts). Include this URL in the voting email so that folks can find the staged candidate release artifacts.</p>
 +
 +<p>If the checks do not pass, fix the issues, roll back and restart the release process.</p>
 +
 +<p>If everything is ok, use svn to copy the candidate release artifacts to RocketMQ repo: https://dist.apache.org/repos/dist/dev/incubator/rocketmq/${release version}.</p>
 +
 +<h2 id="vote-on-the-release">Vote on the Release</h2>
 +
 +<p>As per the Apache Incubator <a href="http://incubator.apache.org/incubation/Incubation_Policy.html#Releases">release guidelines</a>, all releases for incubating projects must go through a two-step voting process. First, release voting must successfully pass within the Apache RocketMQ community via the <strong>dev@rocketmq.incubator.apache.org</strong> mailing list. Then, release voting must successfully pass within the Apache Incubator PMC via the <strong>general@incubator.apache.org</strong> mailing list.</p>
 +
 +<p>General information regarding the Apache voting process can be found <a href="http://www.apache.org/foundation/voting.html">here</a>.</p>
 +
 +<h3 id="apache-rocketmq-community-vote">Apache RocketMQ Community Vote</h3>
 +<p>To vote on a candidate release, send an email to the <a href="mailto:dev@rocketmq.apache.incubator.org">dev list</a> with subject <strong>[VOTE]: Release Apache RocketMQ &lt;release version&gt;(incubating) RC&lt;RC Number&gt;</strong> and a body along the lines of:</p>
 +
 +<blockquote>
 +  <p>Hello RocketMQ Community,</p>
 +
 +  <p>This is the vote for &lt;release version&gt; of Apache RocketMQ (incubating).</p>
 +
 +  <p><strong>The artifacts:</strong><br />
 +https://dist.apache.org/repos/dist/dev/incubator/rocketmq/${release version}</p>
 +
 +  <p><strong>The staging repo:</strong><br />
 +https://repository.apache.org/content/repositories/orgapacherocketmq-XXX/</p>
 +
 +  <p><strong>Git tag for the release:</strong><br />
 +&lt;link to the tag of GitHub repo&gt;</p>
 +
 +  <p><strong>Hash for the release tag:</strong><br />
 +&lt;Hash value of the release tag&gt;</p>
 +
 +  <p><strong>Release Notes:</strong><br />
 +&lt;insert link to the rocketmq release notes&gt;</p>
 +
 +  <p>The artifacts have been signed with Key : &lt;ID of signing key&gt;, which can be found in the keys file:<br />
 +https://dist.apache.org/repos/dist/dev/incubator/rocketmq/KEYS</p>
 +
 +  <p>The vote will be open for at least 72 hours or until necessary number of votes are reached.</p>
 +
 +  <p>Please vote accordingly:</p>
 +
 +  <p>[ ] +1  approve  <br />
 +[ ] +0  no opinion  <br />
 +[ ] -1  disapprove with the reason</p>
 +
 +  <p>Thanks,<br />
 +The Apache RocketMQ Team</p>
 +</blockquote>
 +
 +<p>Once 72 hours has passed (which is generally preferred) and/or at least three +1 (binding) votes have been cast with no -1 (binding) votes, send an email closing the vote and pronouncing the release candidate a success. Please use the subject: <strong>[RESULT][VOTE]: Release Apache RocketMQ &lt;release version&gt;(incubating) RC&lt;RC Number&gt;</strong> :</p>
 +
 +<blockquote>
 +  <p>Hello RocketMQ Community,</p>
 +
 +  <p>The Apache RocketMQ <release version=""> vote is now closed and has passed with [number] binding +1s, [number] non-binding +1s and no 0 or -1:</release></p>
 +
 +  <p><strong>Binding votes +1s:</strong><br />
 +User Name (Apache ID)  <br />
 +User Name (Apache ID)  <br />
 +User Name (Apache ID)  <br />
 +\u2026.</p>
 +
 +  <p><strong>Non-binding votes +1s:</strong><br />
 +User Name (Apache ID)<br />
 +\u2026.</p>
 +
 +  <p>A vote Apache RocketMQ &lt;release version&gt; will now be called on general@incubator.apache.org.</p>
 +
 +  <p>Thanks, <br />
 +The Apache RocketMQ Team</p>
 +</blockquote>
 +
 +<p>If we do not pass the VOTE, fix the related issues, roll back, restart the release process and increase RC number. When we call a new vote, we must use the updated mail subject: <strong>[RESTART][VOTE][#&lt;Attempt Number&gt;]: Release Apache RocketMQ &lt;release version&gt;(incubating) RC&lt;RC Number&gt;</strong></p>
 +
 +<h3 id="incubator-pmc-vote">Incubator PMC Vote</h3>
 +<p>Once the candidate release vote passes on dev@rocketmq, send an email to <a href="mailto:general@incubator.apache.org">IMPC</a> with subject <strong>[VOTE]: Release Apache RocketMQ &lt;release version&gt;(incubating) RC&lt;RC Number&gt;</strong> and a body along the lines of:</p>
 +
 +<blockquote>
 +  <p>Hello Incubator PMC,</p>
 +
 +  <p>The Apache RocketMQ community has voted and approved the proposal to release Apache RocketMQ &lt;release version&gt; (incubating). We now kindly request the IPMC review and vote on this incubator release.</p>
 +
 +  <p><strong>[VOTE] Thread:</strong><br />
 +&lt;link to the dev voting mail-archive&gt;</p>
 +
 +  <p><strong>[RESULT][VOTE] Thread:</strong><br />
 +&lt;link to the dev voting mail-archive&gt;</p>
 +
 +  <p><strong>The artifacts:</strong><br />
 +https://dist.apache.org/repos/dist/dev/incubator/rocketmq/${release version}</p>
 +
 +  <p><strong>The staging repo:</strong><br />
 +https://repository.apache.org/content/repositories/orgapacherocketmq-XXX/</p>
 +
 +  <p><strong>Git tag for the release:</strong><br />
 +&lt;link to the tag of GitHub repo&gt;</p>
 +
 +  <p><strong>Hash for the release tag:</strong><br />
 +&lt;Hash value of the release tag&gt;</p>
 +
 +  <p><strong>Release Notes:</strong><br />
 +&lt;insert link to the rocketmq release notes&gt;</p>
 +
 +  <p>The artifacts have been signed with Key : &lt;ID of signing key&gt;, which can be found in the keys file:<br />
 +https://dist.apache.org/repos/dist/dev/incubator/rocketmq/KEYS</p>
 +
 +  <p>The vote will be open for at least 72 hours or until necessary number of votes are reached.</p>
 +
 +  <p>Please vote accordingly:</p>
 +
 +  <p>[ ] +1  approve <br />
 +[ ] +0  no opinion <br />
 +[ ] -1  disapprove with the reason</p>
 +
 +  <p>Thanks,<br />
 +The Apache RocketMQ Team</p>
 +</blockquote>
 +
 +<p>Also don\u2019t forget announce the vote result:</p>
 +
 +<blockquote>
 +  <p>Hello Incubator PMC,</p>
 +
 +  <p>The Apache RocketMQ <release version=""> vote is now closed and has passed wit [number] binding +1s, [number] non-binding +1s and no 0 or -1:</release></p>
 +
 +  <p><strong>Binding votes +1s:</strong><br />
 +User Name (Apache ID) <br />
 +User Name (Apache ID) <br />
 +User Name (Apache ID) <br />
 +\u2026.</p>
 +
 +  <p><strong>Non-binding votes +1s:</strong><br />
 +User Name (Apache ID) <br />
 +\u2026.</p>
 +
 +  <p>The Apache RocketMQ (incubating) community will proceed with the release.</p>
 +
 +  <p>Thanks,<br />
 +The Apache RocketMQ Team</p>
 +</blockquote>
 +
 +<h2 id="publish-the-release">Publish the Release</h2>
 +<p>Once the Apache RocketMQ PPMC and IPMC votes both pass, publish the release artifacts to the Nexus Maven repository and to the Apache release repository.</p>
 +
 +<ol>
 +  <li>Publish the Maven Artifacts, release the Maven artifacts in Nexus by selecting the staging repository <strong>orgapacherocketmq-XXX</strong> and clicking on the <code class="highlighter-rouge">Release</code> icon.</li>
 +  <li>Publish the Artifacts to the Apache Release Repository, use svn copy candidate release artifacts to https://dist.apache.org/repos/dist/release/incubator/rocketmq/${release version}</li>
 +</ol>
 +
 +<h2 id="announce-the-release">Announce the Release</h2>
 +<p>Send an email to <strong>announce@apache.org</strong>, <strong>general@incubator.apache.org</strong>, and <strong>dev@rocketmq.apache.incubator.org</strong> with the subject <strong>[ANNOUNCE] Release Apache RocketMQ &lt;release version&gt;(incubating)</strong> and a body along the lines of:</p>
 +
 +<blockquote>
 +  <p>Hi all,</p>
 +
 +  <p>The Apache RocketMQ team would like to announce the release of Apache RocketMQ &lt;release version&gt; (incubating).</p>
 +
 +  <p>More details regarding Apache RocketMQ can be found at:<br />
 +http://rocketmq.incubator.apache.org/</p>
 +
 +  <p>The release artifacts can be downloaded here:<br />
 +https://dist.apache.org/repos/dist/release/incubator/rocketmq/${release version}</p>
 +
 +  <p>The release notes can be found here:<br />
 +&lt;insert link to the rocketmq release notes&gt;</p>
 +
 +  <p>Thanks,<br />
 +The Apache RocketMQ Team</p>
 +
 +  <p>\u2014 DISCLAIMER  Apache RocketMQ 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.</p>
 +</blockquote>
 +
 +<h2 id="references">References</h2>
 +
 +<p>[1]. http://pirk.incubator.apache.org/releasing<br />
 +[2]. http://htrace.incubator.apache.org/building.html<br />
 +[3]. http://slider.incubator.apache.org/developing/releasing.html<br />
 +[4]. http://streams.incubator.apache.org/release-management.html</p>
 +
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-02-08">February 08, 2017</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Release Manual /docs/release-manual" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/release-manual" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/release-manual" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/release-manual" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/faq/" class="pagination--pager" title="Frequently Asked Questions
 +">Previous</a>
 +    
 +    
 +      <a href="/dowloading/releases/" class="pagination--pager" title="Downloading the Apache RocketMQ Releases
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/rmq-arc/index.html
----------------------------------------------------------------------
diff --cc content/docs/rmq-arc/index.html
index 0000000,0000000..36fdeef
new file mode 100644
--- /dev/null
+++ b/content/docs/rmq-arc/index.html
@@@ -1,0 -1,0 +1,662 @@@
++<!doctype html>
++<html lang="en" class="no-js">
++  <head>
++    <meta charset="utf-8">
++
++<!-- begin SEO -->
++
++
++
++
++
++
++
++
++
++<title>RocketMQ Architecture - Apache RocketMQ</title>
++
++
++
++
++<meta name="description" content="The main Architecture of Apache RocketMQ.">
++
++
++
++
++<meta property="og:locale" content="en">
++<meta property="og:site_name" content="Apache RocketMQ">
++<meta property="og:title" content="RocketMQ Architecture">
++
++
++
++
++  <meta property="og:description" content="The main Architecture of Apache RocketMQ.">
++
++
++
++  <meta name="twitter:site" content="@ApacheRocketMQ">
++  <meta name="twitter:title" content="RocketMQ Architecture">
++  <meta name="twitter:description" content="The main Architecture of Apache RocketMQ.">
++  <meta name="twitter:url" content="">
++
++  
++    <meta name="twitter:card" content="summary">
++    
++  
++
++  
++
++
++
++  
++
++  
++
++
++
++
++
++  <meta property="og:type" content="article">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
++
++
++
++
++
++
++
++
++  <script type="application/ld+json">
++    {
++      "@context" : "http://schema.org",
++      "@type" : "Person",
++      "name" : "Apache RocketMQ",
++      "url" : null,
++      "sameAs" : null
++    }
++  </script>
++
++
++
++  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
++
++
++  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
++
++
++
++
++<!-- end SEO -->
++
++
++<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
++
++<!-- http://t.co/dKP3o1e -->
++<meta name="HandheldFriendly" content="True">
++<meta name="MobileOptimized" content="320">
++<meta name="viewport" content="width=device-width, initial-scale=1.0">
++
++<script>
++  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
++</script>
++
++<!-- For all browsers -->
++<link rel="stylesheet" href="/assets/css/main.css">
++
++<meta http-equiv="cleartype" content="on">
++    <!-- start custom head snippets -->
++
++<!-- insert favicons. use http://realfavicongenerator.net/ -->
++
++<!-- end custom head snippets -->
++  </head>
++
++  <body class="layout--single">
++
++    <!--[if lt IE 9]>
++<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
++<![endif]-->
++    <div class="masthead">
++  <div class="masthead__inner-wrap">
++    <div class="masthead__menu">
++      <nav id="site-nav" class="greedy-nav">
++        <button><div class="navicon"></div></button>
++        <ul class="visible-links">
++          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
++          
++        </ul>
++        <ul class="hidden-links hidden"></ul>
++      </nav>
++    </div>
++  </div>
++</div>
++
++    
++
++
++
++<div id="main" role="main">
++  
++  <div class="sidebar sticky">
++  
++  
++    
++      
++      
++      
++    
++    
++      
++
++<nav class="nav__list">
++  
++  <input id="ac-toc" name="accordion-toc" type="checkbox" />
++  <label for="ac-toc">Toggle Menu</label>
++  <ul class="nav__items">
++    
++      <li>
++        
++          <span class="nav__sub-title">User Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="active">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Best Practice</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Release Notes</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/dowloading/releases/" class="">Download</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
++        
++
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
++        
++
++        
++      </li>
++    
++  </ul>
++</nav>
++    
++  
++  </div>
++
++
++  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
++    <meta itemprop="headline" content="RocketMQ Architecture">
++    <meta itemprop="description" content="The main Architecture of Apache RocketMQ.">
++    <meta itemprop="datePublished" content="April 25, 2017">
++    <meta itemprop="dateModified" content="April 25, 2017">
++
++    <div class="page__inner-wrap">
++      
++        <header>
++          <h1 class="page__title" itemprop="headline">RocketMQ Architecture
++</h1>
++          
++        </header>
++      
++
++      <section class="page__content" itemprop="text">
++        <aside class="sidebar__right">
++<nav class="toc">
++    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
++<ul class="toc__menu" id="markdown-toc">
++  <li><a href="#overview" id="markdown-toc-overview">Overview</a></li>
++  <li><a href="#nameserver" id="markdown-toc-nameserver">NameServer</a></li>
++  <li><a href="#broker-server" id="markdown-toc-broker-server">Broker Server</a></li>
++</ul>
++
++  </nav>
++</aside>
++
++<p><img src="/assets/images/rmq-basic-arc.png" alt="" /></p>
++
++<h1 id="overview">Overview</h1>
++
++<p>The greatest innovation of RocketMQ is high throughput, high reliability, and low latency of supporting massive messages through exquisite scale out and scale up. RocketMQ consists of four parts, Name Servers, Brokers, Producers and Consumers. Each of them can be horizontally extended without single Point of Failure. As shown in screenshot below.</p>
++
++<p><strong>NameServer Cluster</strong></p>
++
++<p>Name Servers provide lightweight service discovery and routing. Each Name Server records full routing information, provides equivalent reading and writing service, and supports fast storage expansion.</p>
++
++<p><strong>Broker Cluster</strong></p>
++
++<p>Brokers take care of message storage by providing lightweight TOPIC and QUEUE mechanisms. It supports the Push and Pull modes, fault tolerance mechanism (2 copies or 3 copies), strong padding of peaks and capacity of accumulating hundreds of billion messages in their original time order. In addition, Brokers provide disaster recovery, rich metrics statistics, and alert mechanisms, all of which are lack in traditional messaging systems.</p>
++
++<p><strong>Producer Cluster</strong></p>
++
++<p>Producers support distributed deployment. Distributed Producers send messages to the Broker cluster through multiple load balancing modes. The sending processes support fast failure and have low latency.</p>
++
++<p><strong>Consumer Cluster</strong></p>
++
++<p>Consumers support distributed deployment in the Push and Pull models as well. It also supports cluster consumption and message broadcast. It provides real-time message subscription mechanism and can meet most consumer scenarios. 
++RocketMQ\u2019s website provide a quick-start guide[3] for those guys who want to have a try without too much labor.</p>
++
++<h1 id="nameserver">NameServer</h1>
++
++<p>NameServer is a little but fully functional server, which mainly includes two features:</p>
++
++<ul>
++  <li>Broker Management, <strong>NameServer</strong> accepts the register from Broker cluster and provides heartbeat mechanism to ensure whether a broker is alive.</li>
++  <li>Routing Management, each NameServer will hold whole routing info about the broker cluster and the <strong>queue</strong> info for clients query.</li>
++</ul>
++
++<p>As we know, RocketMQ clients(Producer/Consumer) will query the queue routing info from NameServer, but how do the clients find NameServer address?</p>
++
++<p>There are four methods to feed NameServer address list to clients:</p>
++
++<ul>
++  <li>Programmatic Way, like <code class="highlighter-rouge">producer.setNamesrvAddr("ip:port")</code>.</li>
++  <li>Java Options, use <code class="highlighter-rouge">rocketmq.namesrv.addr</code>.</li>
++  <li>Environment Variable, use <code class="highlighter-rouge">NAMESRV_ADDR</code>.</li>
++  <li>HTTP Endpoint.</li>
++</ul>
++
++<p>More details about how to find NameServer address please refer to <a href="/rocketmq/four-methods-to-feed-name-server-address-list/">here</a>.</p>
++
++<h1 id="broker-server">Broker Server</h1>
++
++<p>Broker server is responsible for message store and delivery, message query, HA guarantee, and so on.</p>
++
++<p>As shown in image below, Broker server has searval important sub modules:</p>
++
++<ul>
++  <li>Remoting Module, the entry of broker, handle the requests from clients.</li>
++  <li>Client Manager, manage the clients (Producer/Consumer), maintain topic subscription of consumer.</li>
++  <li>Store Service, provide simple APIs to store or query message in physical disk.</li>
++  <li>HA Service, provide data sync feature between master broker and slave broker.</li>
++  <li>Index Service, build index for messages by specified key and provide quick message query function.</li>
++</ul>
++
++<p><img src="/assets/images/rmq-basic-component.png" alt="" /></p>
++
++
++        
++      </section>
++
++      <footer class="page__meta">
++        
++        
++
++
++        
++          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-04-25">April 25, 2017</time></p>
++        
++      </footer>
++
++      <section class="page__share">
++  
++    <h4 class="page__share-title">Share on</h4>
++  
++
++  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=RocketMQ Architecture /docs/rmq-arc/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
++
++  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/rmq-arc/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
++
++  <a href="https://plus.google.com/share?url=/docs/rmq-arc/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
++
++  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/rmq-arc/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
++</section>
++
++
++      
++  <nav class="pagination">
++    
++      <a href="/docs/order-example/" class="pagination--pager" title="Order Message
++">Previous</a>
++    
++    
++      <a href="/docs/schedule-example/" class="pagination--pager" title="Schedule example
++">Next</a>
++    
++  </nav>
++
++    </div>
++
++    
++      <div class="page__comments">
++  
++  
++    <h4 class="page__comments-title">Leave a Comment</h4>
++    <section id="disqus_thread"></section>
++  
++</div>
++    
++  </article>
++
++  
++  
++</div>
++
++    <div class="page__footer">
++      <footer>
++        <!-- start custom footer snippets -->
++
++<!-- end custom footer snippets -->
++        <style type="text/css">
++  div.columns   { float: left; margin-left: 10px;}
++  div.clear     { clear: both; } 
++</style>
++<div>
++  <div class="columns">
++    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
++  </div>
++  <div class="columns" style="width: 80%">
++    <div class="page__footer-follow">
++      <ul class="social-icons">
++        
++          <li><strong>Follow:</strong></li>
++        
++        
++          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
++        
++        
++        
++          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
++        
++        
++        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
++      </ul>
++    </div>
++
++    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
++  </div>
++</div>
++<div class="clear"></div>
++      </footer>
++    </div>
++
++    <script src="/assets/js/main.min.js"></script>
++
++
++
++
++  <script>
++  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
++  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
++  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
++  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
++
++  ga('create', 'UA-89603173-1', 'auto');
++  ga('send', 'pageview');
++</script>
++
++<script>
++var _hmt = _hmt || [];
++(function() {
++  var hm = document.createElement("script");
++  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
++  var s = document.getElementsByTagName("script")[0]; 
++  s.parentNode.insertBefore(hm, s);
++})();
++</script>
++
++
++
++
++  
++  <script type="text/javascript">
++  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
++  	var disqus_shortname = 'rocketmq';
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function() {
++  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
++  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
++  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
++  	})();
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function () {
++  		var s = document.createElement('script'); s.async = true;
++  		s.type = 'text/javascript';
++  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
++  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
++  	}());
++  </script>
++  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
++
++
++
++
++
++
++  </body>
++</html>


[16/16] incubator-rocketmq-site git commit: Release at 2017.04.25

Posted by yu...@apache.org.
Release at 2017.04.25


Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/commit/ac7796b8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/tree/ac7796b8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/diff/ac7796b8

Branch: refs/heads/asf-site
Commit: ac7796b86f9df343a6701afca644db51e755f90c
Parents: 4e4afc4 beb14e5
Author: yukon <yu...@apache.org>
Authored: Tue Apr 25 01:02:40 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Tue Apr 25 01:02:40 2017 +0800

----------------------------------------------------------------------
 _about/01-team.md                               |   2 +-
 _data/navigation.yml                            |  31 +-
 _docs/01-quick-start-guide.md                   |   4 +-
 _docs/12-rmq-batch-example.md                   | 101 +++
 _docs/13-rmq-broadcasting-example.md            |  66 ++
 _docs/14-rmq-deployment.md                      | 145 ++++
 _docs/15-order-message-example .md              |  86 ++
 _docs/16-rmq-architecture.md                    |  68 ++
 _docs/17-rmq-schedule-example.md                |  70 ++
 _docs/18-simple-example.md                      | 187 +++++
 _docs/best-practice-namesvr.md                  |  76 +-
 .../2017-03-31-launch-rocketmq-code-marathon.md |   3 +-
 assets/images/about/rshtykh.png                 | Bin 0 -> 5591 bytes
 assets/images/rmq-basic-arc.png                 | Bin 0 -> 69606 bytes
 assets/images/rmq-basic-component.png           | Bin 0 -> 69730 bytes
 content/about/contact/index.html                |   4 +-
 content/about/rewards/index.html                |   4 +-
 content/about/team/index.html                   |   6 +-
 .../launch-rocketmq-code-marathon/index.html    |   8 +-
 content/archive-layout-with-content/index.html  |  98 +++
 content/assets/images/about/rshtykh.png         | Bin 0 -> 5591 bytes
 content/assets/images/rmq-basic-arc.png         | Bin 0 -> 69606 bytes
 content/assets/images/rmq-basic-component.png   | Bin 0 -> 69730 bytes
 content/collection-archive/index.html           | 152 +++-
 content/docs/batch-example/index.html           | 696 ++++++++++++++++
 content/docs/best-practice-broker/index.html    |  78 +-
 content/docs/best-practice-consumer/index.html  |  76 +-
 content/docs/best-practice-namesvr/index.html   | 165 +++-
 content/docs/best-practice-producer/index.html  |  76 +-
 content/docs/broadcast-example/index.html       | 661 +++++++++++++++
 content/docs/cli-admin-tool/index.html          |  76 +-
 content/docs/cluster-deployment/index.html      |  76 +-
 content/docs/code-guidelines/index.html         |  76 +-
 content/docs/core-concept/index.html            |  76 +-
 content/docs/documentation/index.html           |  76 +-
 content/docs/faq/index.html                     |  76 +-
 content/docs/motivation/index.html              |  76 +-
 content/docs/order-example/index.html           | 674 +++++++++++++++
 content/docs/pull-request/index.html            |  76 +-
 content/docs/quick-start/index.html             |  80 +-
 content/docs/release-manual.html                |  76 +-
 content/docs/rmq-arc/index.html                 | 662 +++++++++++++++
 content/docs/rmq-deployment/index.html          | 814 +++++++++++++++++++
 content/docs/roadmap/index.html                 |  78 +-
 content/docs/schedule-example/index.html        | 666 +++++++++++++++
 content/docs/simple-example/index.html          | 774 ++++++++++++++++++
 content/dowloading/releases/index.html          |  76 +-
 content/feed.xml                                |  10 +-
 content/sitemap.xml                             |  46 +-
 49 files changed, 7251 insertions(+), 176 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/about/contact/index.html
----------------------------------------------------------------------
diff --cc content/about/contact/index.html
index 96174a6,0000000..d0a529e
mode 100644,000000..100644
--- a/content/about/contact/index.html
+++ b/content/about/contact/index.html
@@@ -1,393 -1,0 +1,393 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>CONTACT - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="Contact.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="CONTACT">
 +
 +
 +
 +
 +  <meta property="og:description" content="Contact.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="CONTACT">
 +  <meta name="twitter:description" content="Contact.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--about_single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/about/team/"><span class="nav__sub-title">Team</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/about/contact/"><span class="nav__sub-title">Contact</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/about/rewards/"><span class="nav__sub-title">Rewards</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="CONTACT">
 +    <meta itemprop="description" content="Contact.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 29, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">CONTACT
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <h2 id="mailing-lists">Mailing Lists</h2>
 +
 +<p>These are the mailing lists that have been established for RocketMQ. For each list, there is a subscribe, unsubscribe, and an archive link.</p>
 +
 +<table>
 +  <thead>
 +    <tr>
 +      <th style="text-align: left">Name</th>
 +      <th style="text-align: left">Description</th>
 +      <th style="text-align: left">Subscribe</th>
 +      <th style="text-align: left">Unsubscribe</th>
 +      <th style="text-align: left">Archive</th>
 +    </tr>
 +  </thead>
 +  <tbody>
 +    <tr>
 +      <td style="text-align: left">Users</td>
 +      <td style="text-align: left">User support and questions mailing list</td>
 +      <td style="text-align: left"><a href="mailto:users-subscribe@rocketmq.incubator.apache.org">Subscribe</a></td>
 +      <td style="text-align: left"><a href="mailto:users-unsubscribe@rocketmq.incubator.apache.org">Unsubscribe</a></td>
 +      <td style="text-align: left"><a href="http://mail-archives.apache.org/mod_mbox/incubator-rocketmq-users/">mail-archives.apache.org</a></td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left">Issues</td>
 +      <td style="text-align: left">Mirror of all JIRA activity</td>
 +      <td style="text-align: left"><a href="mailto:issues-subscribe@rocketmq.incubator.apache.org">Subscribe</a></td>
 +      <td style="text-align: left"><a href="mailto:issues-unsubscribe@rocketmq.incubator.apache.org">Unsubscribe</a></td>
 +      <td style="text-align: left"><a href="http://mail-archives.apache.org/mod_mbox/incubator-rocketmq-issues/">mail-archives.apache.org</a></td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left">Development</td>
 +      <td style="text-align: left">Development related discussions</td>
 +      <td style="text-align: left"><a href="mailto:dev-subscribe@rocketmq.incubator.apache.org">Subscribe</a></td>
 +      <td style="text-align: left"><a href="mailto:dev-unsubscribe@rocketmq.incubator.apache.org">Unsubscribe</a></td>
 +      <td style="text-align: left"><a href="http://mail-archives.apache.org/mod_mbox/incubator-rocketmq-dev//">mail-archives.apache.org</a></td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left">Commits</td>
 +      <td style="text-align: left">All commits to repositories</td>
 +      <td style="text-align: left"><a href="mailto:commits-subscribe@rocketmq.incubator.apache.org">Subscribe</a></td>
 +      <td style="text-align: left"><a href="mailto:commits-unsubscribe@rocketmq.incubator.apache.org">Unsubscribe</a></td>
 +      <td style="text-align: left"><a href="http://mail-archives.apache.org/mod_mbox/incubator-rocketmq-commits/">mail-archives.apache.org</a></td>
 +    </tr>
 +  </tbody>
 +</table>
 +
 +<p>Besides, we hold tagged questions on <a href="http://stackoverflow.com/questions/tagged/rocketmq">stackoverflow.com</a> where you can launch an interactive discussion. Also, you can try to find answers to your question about RocketMQ on Quora <a href="https://www.quora.com/topic/RocketMQ">here</a>.</p>
 +
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-29">December 29, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=CONTACT /about/contact/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/about/contact/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/about/contact/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/about/contact/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/about/team/" class="pagination--pager" title="TEAM
 +">Previous</a>
 +    
 +    
 +      <a href="/about/rewards/" class="pagination--pager" title="REWARDS
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/about/rewards/index.html
----------------------------------------------------------------------
diff --cc content/about/rewards/index.html
index 663a90b,0000000..840fb07
mode 100644,000000..100644
--- a/content/about/rewards/index.html
+++ b/content/about/rewards/index.html
@@@ -1,349 -1,0 +1,349 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>REWARDS - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="Rewards.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="REWARDS">
 +
 +
 +
 +
 +  <meta property="og:description" content="Rewards.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="REWARDS">
 +  <meta name="twitter:description" content="Rewards.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--about_single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/about/team/"><span class="nav__sub-title">Team</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/about/contact/"><span class="nav__sub-title">Contact</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/about/rewards/"><span class="nav__sub-title">Rewards</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="REWARDS">
 +    <meta itemprop="description" content="Rewards.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="January 25, 2017">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">REWARDS
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <h2 id="2016-chinas-most-popular-open-source-software-award-">2016 China\u2019s most popular open source software award <a href="https://www.oschina.net/question/2886655_2216338"><i class="fa fa-link"></i></a></h2>
 +
 +<div>
 +<img src="/assets/images/rewards/2016_oschina.jpg" width="80%" height="80%" alt="oschina" />
 +</div>
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-01-25">January 25, 2017</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=REWARDS /about/rewards/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/about/rewards/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/about/rewards/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/about/rewards/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/about/contact/" class="pagination--pager" title="CONTACT
 +">Previous</a>
 +    
 +    
 +      <a href="#" class="pagination--pager disabled">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/about/team/index.html
----------------------------------------------------------------------
diff --cc content/about/team/index.html
index 35dde18,0000000..a5582ad
mode 100644,000000..100644
--- a/content/about/team/index.html
+++ b/content/about/team/index.html
@@@ -1,535 -1,0 +1,535 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>TEAM - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="Project team.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="TEAM">
 +
 +
 +
 +
 +  <meta property="og:description" content="Project team.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="TEAM">
 +  <meta name="twitter:description" content="Project team.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/about/team/"><span class="nav__sub-title">Team</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/about/contact/"><span class="nav__sub-title">Contact</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/about/rewards/"><span class="nav__sub-title">Rewards</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="TEAM">
 +    <meta itemprop="description" content="Project team.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 29, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">TEAM
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>The RocketMQ team is comprised of Members and Contributors. Members have direct access to the source of RocketMQ project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. All contributions to RocketMQ are greatly appreciated, whether for trivial cleanups, big new features or other material rewards. More details see <a href="https://github.com/apache/incubator-rocketmq/blob/master/CONTRIBUTING.md">here</a>.</p>
 +
 +<h3 id="members">Members</h3>
 +
 +<p>The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.</p>
 +
 +<table>
 +  <thead>
 +    <tr>
 +      <th style="text-align: left">Image</th>
 +      <th style="text-align: left">Id</th>
 +      <th style="text-align: left">Github Id</th>
 +      <th style="text-align: left">Email</th>
 +      <th style="text-align: left"><a href="https://www.apache.org/foundation/how-it-works.html#roles">Roles</a></th>
 +      <th style="text-align: left">Time Zone</th>
 +    </tr>
 +  </thead>
 +  <tbody>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/bsnyder.jpeg" alt="bsnyde" /></td>
 +      <td style="text-align: left">bsnyder</td>
 +      <td style="text-align: left"><a href="https://github.com/bsnyder">@bsnyder</a></td>
 +      <td style="text-align: left">bsnyder@apache.org</td>
 +      <td style="text-align: left">Mentor/PMC Member</td>
 +      <td style="text-align: left">-7</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/brianm.jpeg" alt="brian" /></td>
 +      <td style="text-align: left">brianm</td>
 +      <td style="text-align: left"><a href="https://github.com/brianm">@brianm</a></td>
 +      <td style="text-align: left">brianm@apache.org</td>
 +      <td style="text-align: left">Mentor/PMC Member</td>
 +      <td style="text-align: left">-8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/WillemJiang.jpeg" alt="WillemJiang" /></td>
 +      <td style="text-align: left">ningjiang</td>
 +      <td style="text-align: left"><a href="https://github.com/WillemJiang">@WillemJiang</a></td>
 +      <td style="text-align: left">ningjiang@apache.org</td>
 +      <td style="text-align: left">Mentor/PMC Member</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/lukehan.jpeg" alt="lukehan" /></td>
 +      <td style="text-align: left">lukehan</td>
 +      <td style="text-align: left"><a href="https://github.com/lukehan">@lukehan</a></td>
 +      <td style="text-align: left">lukehan@apache.org</td>
 +      <td style="text-align: left">Mentor/PMC Member</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/justinmclean.jpeg" alt="justinmclean" /></td>
 +      <td style="text-align: left">jmclean</td>
 +      <td style="text-align: left"><a href="https://github.com/justinmclean">@justinmclean</a></td>
 +      <td style="text-align: left">jmclean@apache.org</td>
 +      <td style="text-align: left">Mentor/PMC Member</td>
 +      <td style="text-align: left">+11</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/vongosling.jpeg" alt="vongosling" /></td>
 +      <td style="text-align: left">vongosling</td>
 +      <td style="text-align: left"><a href="https://github.com/vongosling">@vongosling</a></td>
 +      <td style="text-align: left">vongosling@apache.org</td>
 +      <td style="text-align: left">Committer/PMC Member</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/vintagewang.jpeg" alt="vintagewang" /></td>
 +      <td style="text-align: left">vintagewang</td>
 +      <td style="text-align: left"><a href="https://github.com/vintagewang">@vintagewang</a></td>
 +      <td style="text-align: left">vintagewang@apache.org</td>
 +      <td style="text-align: left">Committer/PMC Member</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/zhouxinyu.png" alt="zhouxinyu" /></td>
 +      <td style="text-align: left">yukon</td>
 +      <td style="text-align: left"><a href="https://github.com/zhouxinyu">@zhouxinyu</a></td>
 +      <td style="text-align: left">yukon@apache.org</td>
 +      <td style="text-align: left">Committer/PMC Member</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/lizhanhui.jpg" alt="lizhanhui" /></td>
 +      <td style="text-align: left">lizhanhui</td>
 +      <td style="text-align: left"><a href="https://github.com/lizhanhui">@lizhanhui</a></td>
 +      <td style="text-align: left">lizhanhui@apache.org</td>
 +      <td style="text-align: left">Committer</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/stevenschew.png" alt="stevensche" /></td>
 +      <td style="text-align: left">stevenschew</td>
 +      <td style="text-align: left"><a href="https://github.com/stevenschew">@stevenschew</a></td>
 +      <td style="text-align: left">stevenschew@apache.org</td>
 +      <td style="text-align: left">Committer</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/lollipop.jpeg" alt="lollipop" /></td>
 +      <td style="text-align: left">lollipop</td>
 +      <td style="text-align: left"><a href="https://github.com/lollipopjin">@lollipopjin</a></td>
 +      <td style="text-align: left">lollipop@apache.org</td>
 +      <td style="text-align: left">Committer</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/longdafeng.jpeg" alt="longdafeng" /></td>
 +      <td style="text-align: left">longda</td>
 +      <td style="text-align: left"><a href="https://github.com/longdafeng">@longdafeng</a></td>
 +      <td style="text-align: left">longda@apache.org</td>
 +      <td style="text-align: left">Committer</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
-       <td style="text-align: left"><img src="https://avatars2.githubusercontent.com/u/3435166?v=3&amp;s=400" alt="shroman" /></td>
++      <td style="text-align: left"><img src="/assets/images/about/rshtykh.png" alt="shroman" /></td>
 +      <td style="text-align: left">shroman</td>
 +      <td style="text-align: left"><a href="https://github.com/shroman">@shroman</a></td>
 +      <td style="text-align: left">shroman@apache.org</td>
 +      <td style="text-align: left">Committer</td>
 +      <td style="text-align: left">+9</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/dongeforever.jpeg" alt="dongeforever" /></td>
 +      <td style="text-align: left">dongeforever</td>
 +      <td style="text-align: left"><a href="https://github.com/dongeforever">@dongeforever</a></td>
 +      <td style="text-align: left">dongeforever@apache.org</td>
 +      <td style="text-align: left">Committer</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +  </tbody>
 +</table>
 +
 +<h3 id="top-contributors">Top Contributors</h3>
 +<p>There are a lot of contributors who improve the RocketMQ project through submission of patches and suggestions to the Members, top contributors to be added.</p>
 +
 +<table>
 +  <thead>
 +    <tr>
 +      <th style="text-align: left">Image</th>
 +      <th style="text-align: left">Id</th>
 +      <th style="text-align: left">Github Id</th>
 +      <th style="text-align: left">Email</th>
 +      <th style="text-align: left"><a href="https://www.apache.org/foundation/how-it-works.html#roles">Roles</a></th>
 +      <th style="text-align: left">Time Zone</th>
 +    </tr>
 +  </thead>
 +  <tbody>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/zhangke.png" alt="Zhang-Ke" /></td>
 +      <td style="text-align: left">Zhang-Ke</td>
 +      <td style="text-align: left"><a href="https://github.com/Zhang-Ke">@Zhang-Ke</a></td>
 +      <td style="text-align: left">zhangke_beijing@qq.com</td>
 +      <td style="text-align: left">Contributor</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/StyleTang.jpeg" alt="StyleTang" /></td>
 +      <td style="text-align: left">StyleTang</td>
 +      <td style="text-align: left"><a href="https://github.com/StyleTang">@StyleTang</a></td>
 +      <td style="text-align: left">styletang.me@gmail.com</td>
 +      <td style="text-align: left">Contributor</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/tcrow.png" alt="tcrow" /></td>
 +      <td style="text-align: left">tcrow</td>
 +      <td style="text-align: left"><a href="https://github.com/tcrow">@tcrow</a></td>
 +      <td style="text-align: left">�</td>
 +      <td style="text-align: left">Contributor</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/Jaskey.jpeg" alt="Jaskey" /></td>
 +      <td style="text-align: left">Jaskey</td>
 +      <td style="text-align: left"><a href="https://github.com/Jaskey">@Jaskey</a></td>
 +      <td style="text-align: left">linjunjie1103@gmail.com</td>
 +      <td style="text-align: left">Contributor</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/zhaoqun911.png" alt="zhaoqun911" /></td>
 +      <td style="text-align: left">zhaoqun911</td>
 +      <td style="text-align: left"><a href="https://github.com/zhaoqun911">@zhaoqun911</a></td>
 +      <td style="text-align: left">�</td>
 +      <td style="text-align: left">Contributor</td>
 +      <td style="text-align: left">+8</td>
 +    </tr>
 +  </tbody>
 +</table>
 +
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-29">December 29, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=TEAM /about/team/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/about/team/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/about/team/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/about/team/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="#" class="pagination--pager disabled">Previous</a>
 +    
 +    
 +      <a href="/about/contact/" class="pagination--pager" title="CONTACT
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/activity/launch-rocketmq-code-marathon/index.html
----------------------------------------------------------------------
diff --cc content/activity/launch-rocketmq-code-marathon/index.html
index 6847494,0000000..7604b3e
mode 100644,000000..100644
--- a/content/activity/launch-rocketmq-code-marathon/index.html
+++ b/content/activity/launch-rocketmq-code-marathon/index.html
@@@ -1,563 -1,0 +1,563 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Launch The Second RocketMQ Code Marathon - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="ROCKETMQ CODE MARATHON March 29th 2017">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Launch The Second RocketMQ Code Marathon">
 +
 +
 +
 +
 +  <meta property="og:description" content="ROCKETMQ CODE MARATHON March 29th 2017">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Launch The Second RocketMQ Code Marathon">
 +  <meta name="twitter:description" content="ROCKETMQ CODE MARATHON March 29th 2017">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
 +  <meta property="article:published_time" content="2017-03-31T00:00:00+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +
 +<div itemscope itemtype="http://schema.org/Person">
 +
 +  
 +    <div class="author__avatar">
 +      
 +        <img src="/assets/images/rmq-logo.png" class="author__avatar" alt="" itemprop="image">
 +      
 +    </div>
 +  
 +
 +  <div class="author__content">
 +    <h3 class="author__name" itemprop="name"></h3>
 +    
 +      <p class="author__bio" itemprop="description">
 +        A fast, low latency, reliable, scalable, distributed MOM.
 +      </p>
 +    
 +  </div>
 +
 +  <div class="author__urls-wrapper">
 +    <button class="btn btn--inverse">Follow</button>
 +    <ul class="author__urls social-icons">
 +      
 +        <li itemprop="homeLocation" itemscope itemtype="http://schema.org/Place">
 +          <i class="fa fa-fw fa-map-marker" aria-hidden="true"></i> <span itemprop="name">Hangzhou, China</span>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="http://incubator.staging.apache.org/projects/rocketmq.html" itemprop="url">
 +            <i class="fa fa-fw fa-chain" aria-hidden="true"></i> Website
 +          </a>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="mailto:dev@rocketmq.incubator.apache.org">
 +            <meta itemprop="email" content="dev@rocketmq.incubator.apache.org" />
 +            <i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> Email
 +          </a>
 +        </li>
 +      
 +
 +      
 +
 +      
 +        <li>
 +          <a href="https://twitter.com/ApacheRocketMQ" itemprop="sameAs">
 +            <i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter
 +          </a>
 +        </li>
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +        <li>
 +          <a href="https://github.com/apache/incubator-rocketmq" itemprop="sameAs">
 +            <i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub
 +          </a>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="https://www.stackoverflow.com/questions/tagged/rocketmq" itemprop="sameAs">
 +            <i class="fa fa-fw fa-stack-overflow" aria-hidden="true"></i> Stackoverflow
 +          </a>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="https://www.quora.com/topic/RocketMQ" itemprop="sameAs">
 +            <i class="fa fa-fw" aria-hidden="true"><strong>Q</strong></i> Quora
 +          </a>
 +        </li>
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      <!--
 +  <li>
 +    <a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs">
 +      <i class="fa fa-fw" aria-hidden="true"></i> Custom Social Profile Link
 +    </a>
 +  </li>
 +-->
 +    </ul>
 +  </div>
 +</div>
 +
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Launch The Second RocketMQ Code Marathon">
 +    <meta itemprop="description" content="ROCKETMQ CODE MARATHON March 29th 2017">
 +    <meta itemprop="datePublished" content="March 31, 2017">
 +    
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Launch The Second RocketMQ Code Marathon
 +</h1>
 +          
 +            <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
 +
 +
 +
 +
 +  less than 1 minute read
 +</p>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p><img src="/assets/images/blog/banner.jpg" alt="Banner" /></p>
 +<h1 id="rocketmq-code-marathon-">ROCKETMQ CODE MARATHON <a href="/assets/attachment/launch-second-rocketmq-code-marathon.pdf"><i class="fa fa-link"></i></a></h1>
 +<h5 id="march-29th-2017">March 29th 2017</h5>
 +
 +<h2 id="objective">Objective:</h2>
 +<ol>
 +  <li>Foster Community</li>
 +  <li>Prosper Ecology</li>
 +  <li>Incubate Committers</li>
 +</ol>
 +
 +<h2 id="output">Output:</h2>
 +<ol>
 +  <li>1~3 Milestone Releases Per Project</li>
 +</ol>
 +
 +<h2 id="rewards">Rewards:</h2>
 +<ol>
-   <li>Two Potential Committer Candidates Per Project</li>
-   <li>Free Offers to Active Participants for On-Site Meetup</li>
++  <li>Two Potential Committers Candidates Per Project</li>
++  <li>Free Offers to Active Participants for On-Site Meetup
++    <h2 id="projects">PROJECTS</h2>
++  </li>
 +</ol>
 +
- <h2 id="projects">PROJECTS</h2>
- 
 +<h3 id="rocketmq-big-data">RocketMQ-Big Data</h3>
 +<ol>
 +  <li>Integration of big data analysis framework</li>
 +  <li>Rich Documentation and Good Test Cases Coverage</li>
 +  <li>Apache Beam preferred</li>
 +  <li>Join by Creating Pull Requests against <a href="https://github.com/apache/incubator-rocketmq-externals">RocketMQ Beam Repository</a></li>
 +  <li>Join by Creating Pull Requests against <a href="https://github.com/apache/incubator-rocketmq-externals">RocketMQ Flink Repository</a></li>
 +  <li>Join by Existing Pull Request against <a href="https://github.com/apache/storm/pull/2024">RocketMQ Storm Repository</a></li>
 +  <li>Join by Existing Pull Request against <a href="https://github.com/apache/incubator-rocketmq-externals/pull/5">RocketMQ Spark Repository</a></li>
 +</ol>
 +
 +<h3 id="rocketmq-client-sdk">RocketMQ-Client SDK</h3>
 +<ol>
 +  <li>Development of RocketMQ Client</li>
 +  <li>Rich Documentation and Good Test Cases Coverage</li>
 +  <li>Go preferred</li>
 +  <li>Join by Creating Pull Requests against <a href="https://github.com/apache/incubator-rocketmq-externals">RocketMQ Go Repository</a></li>
 +  <li>Join by Creating Pull Requests against <a href="https://github.com/apache/incubator-rocketmq-externals">RocketMQ .Net Repository</a></li>
 +  <li>Join by Creating Pull Requests against <a href="https://github.com/apache/incubator-rocketmq-externals">RocketMQ PHP Repository</a></li>
 +</ol>
 +
 +<h3 id="rocketmq-data-replication">RocketMQ-Data Replication</h3>
 +<ol>
 +  <li>Implement Data Replication from Database</li>
 +  <li>Rich Documentation and Good Test Cases Coverage</li>
 +  <li>MySQL preferred</li>
 +  <li>Join by Creating Pull Requests against <a href="https://github.com/apache/incubator-rocketmq-externals">RocketMQ MySQL Repository</a></li>
 +  <li>Join by Creating Pull Requests against <a href="https://github.com/apache/incubator-rocketmq-externals">RocketMQ Redis Repository</a></li>
 +  <li>Join by Creating Pull Requests against <a href="https://github.com/apache/incubator-rocketmq-externals">RocketMQ MongoDB Repository</a></li>
 +</ol>
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +  
 +
 +
 +  
 +  
 +  
 +
 +  <p class="page__taxonomy">
 +    <strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> Tags: </strong>
 +    <span itemprop="keywords">
 +    
 +      
 +      
 +      <a href="/tags/#activity" class="page__taxonomy-item" rel="tag">Activity</a><span class="sep">, </span>
 +    
 +      
 +      
 +      <a href="/tags/#code" class="page__taxonomy-item" rel="tag">Code</a><span class="sep">, </span>
 +    
 +      
 +      
 +      <a href="/tags/#marathon" class="page__taxonomy-item" rel="tag">Marathon</a>
 +    
 +    </span>
 +  </p>
 +
 +
 +
 +
 +  
 +
 +
 +  
 +  
 +  
 +
 +  <p class="page__taxonomy">
 +    <strong><i class="fa fa-fw fa-folder-open" aria-hidden="true"></i> Categories: </strong>
 +    <span itemprop="keywords">
 +    
 +      
 +      
 +      <a href="/categories/#activity" class="page__taxonomy-item" rel="tag">Activity</a>
 +    
 +    </span>
 +  </p>
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-03-31T00:00:00+08:00">March 31, 2017</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Launch The Second RocketMQ Code Marathon /activity/launch-rocketmq-code-marathon/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/activity/launch-rocketmq-code-marathon/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/activity/launch-rocketmq-code-marathon/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/activity/launch-rocketmq-code-marathon/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/the-correct-posture-of-submitting-pull-request/" class="pagination--pager" title="The Correct Posture Of Submitting Pull Request
 +">Previous</a>
 +    
 +    
 +      <a href="#" class="pagination--pager disabled">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>


[04/16] incubator-rocketmq-site git commit: Resize the margin and padding of sub title.

Posted by yu...@apache.org.
Resize the margin and padding of sub title.


Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/commit/0446b8b8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/tree/0446b8b8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/diff/0446b8b8

Branch: refs/heads/asf-site
Commit: 0446b8b89c55f7f13836f3b3f63e3189d74abd4a
Parents: b3c93e1
Author: yukon <yu...@apache.org>
Authored: Mon Apr 24 22:21:37 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Mon Apr 24 22:21:37 2017 +0800

----------------------------------------------------------------------
 _sass/_navigation.scss | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/0446b8b8/_sass/_navigation.scss
----------------------------------------------------------------------
diff --git a/_sass/_navigation.scss b/_sass/_navigation.scss
index a5da695..6dfde7a 100644
--- a/_sass/_navigation.scss
+++ b/_sass/_navigation.scss
@@ -467,8 +467,8 @@
 
 .nav__sub-title {
   display: block;
-  margin: 0.5rem 0;
-  padding: 0.5rem 0;
+  margin: 0.3rem 0;
+  padding: 0.3rem 0;
   font-family: $sans-serif-narrow;
   font-size: $type-size-6;
   font-weight: bold;


[11/16] incubator-rocketmq-site git commit: Release at 2017.04.25

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/order-example/index.html
----------------------------------------------------------------------
diff --cc content/docs/order-example/index.html
index 0000000,0000000..23365f5
new file mode 100644
--- /dev/null
+++ b/content/docs/order-example/index.html
@@@ -1,0 -1,0 +1,674 @@@
++<!doctype html>
++<html lang="en" class="no-js">
++  <head>
++    <meta charset="utf-8">
++
++<!-- begin SEO -->
++
++
++
++
++
++
++
++
++
++<title>Order Message  - Apache RocketMQ</title>
++
++
++
++
++<meta name="description" content="How to send and receive ordered messages in Apache RocketMQ.">
++
++
++
++
++<meta property="og:locale" content="en">
++<meta property="og:site_name" content="Apache RocketMQ">
++<meta property="og:title" content="Order Message">
++
++
++
++
++  <meta property="og:description" content="How to send and receive ordered messages in Apache RocketMQ.">
++
++
++
++  <meta name="twitter:site" content="@ApacheRocketMQ">
++  <meta name="twitter:title" content="Order Message">
++  <meta name="twitter:description" content="How to send and receive ordered messages in Apache RocketMQ.">
++  <meta name="twitter:url" content="">
++
++  
++    <meta name="twitter:card" content="summary">
++    
++  
++
++  
++
++
++
++  
++
++  
++
++
++
++
++
++  <meta property="og:type" content="article">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
++
++
++
++
++
++
++
++
++  <script type="application/ld+json">
++    {
++      "@context" : "http://schema.org",
++      "@type" : "Person",
++      "name" : "Apache RocketMQ",
++      "url" : null,
++      "sameAs" : null
++    }
++  </script>
++
++
++
++  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
++
++
++  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
++
++
++
++
++<!-- end SEO -->
++
++
++<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
++
++<!-- http://t.co/dKP3o1e -->
++<meta name="HandheldFriendly" content="True">
++<meta name="MobileOptimized" content="320">
++<meta name="viewport" content="width=device-width, initial-scale=1.0">
++
++<script>
++  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
++</script>
++
++<!-- For all browsers -->
++<link rel="stylesheet" href="/assets/css/main.css">
++
++<meta http-equiv="cleartype" content="on">
++    <!-- start custom head snippets -->
++
++<!-- insert favicons. use http://realfavicongenerator.net/ -->
++
++<!-- end custom head snippets -->
++  </head>
++
++  <body class="layout--single">
++
++    <!--[if lt IE 9]>
++<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
++<![endif]-->
++    <div class="masthead">
++  <div class="masthead__inner-wrap">
++    <div class="masthead__menu">
++      <nav id="site-nav" class="greedy-nav">
++        <button><div class="navicon"></div></button>
++        <ul class="visible-links">
++          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
++          
++        </ul>
++        <ul class="hidden-links hidden"></ul>
++      </nav>
++    </div>
++  </div>
++</div>
++
++    
++
++
++
++<div id="main" role="main">
++  
++  <div class="sidebar sticky">
++  
++  
++    
++      
++      
++      
++    
++    
++      
++
++<nav class="nav__list">
++  
++  <input id="ac-toc" name="accordion-toc" type="checkbox" />
++  <label for="ac-toc">Toggle Menu</label>
++  <ul class="nav__items">
++    
++      <li>
++        
++          <span class="nav__sub-title">User Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/order-example/" class="active">Order Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Best Practice</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Release Notes</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/dowloading/releases/" class="">Download</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
++        
++
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
++        
++
++        
++      </li>
++    
++  </ul>
++</nav>
++    
++  
++  </div>
++
++
++  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
++    <meta itemprop="headline" content="Order Message">
++    <meta itemprop="description" content="How to send and receive ordered messages in Apache RocketMQ.">
++    <meta itemprop="datePublished" content="April 25, 2017">
++    <meta itemprop="dateModified" content="April 25, 2017">
++
++    <div class="page__inner-wrap">
++      
++        <header>
++          <h1 class="page__title" itemprop="headline">Order Message
++</h1>
++          
++        </header>
++      
++
++      <section class="page__content" itemprop="text">
++        <aside class="sidebar__right">
++<nav class="toc">
++    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
++<ul class="toc__menu" id="markdown-toc">
++  <li><a href="#send-message-sample-code" id="markdown-toc-send-message-sample-code">Send message sample code</a></li>
++  <li><a href="#subscription-message-sample-code" id="markdown-toc-subscription-message-sample-code">Subscription message sample code</a></li>
++</ul>
++
++  </nav>
++</aside>
++
++<p>To send and subscribe to order messages, use Java MQ SDK 1.2.7 and above. The sequential message is a kind of message type which is provided by MQ according to the order, which is suitable for the news release and consumption according to the principle of fifo.</p>
++
++<p>For more information, please refer to the sequential message file. 
++The global order message and the partition order message send and receive the way to be the same basically, please refer to the following example code specifically.</p>
++
++<h4 id="send-message-sample-code">Send message sample code</h4>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="k">try</span> <span class="o">{</span>
++    <span class="n">MQProducer</span> <span class="n">producer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DefaultMQProducer</span><span class="o">(</span><span class="s">"please_rename_unique_group_name"</span><span class="o">);</span>
++    <span class="n">producer</span><span class="o">.</span><span class="na">start</span><span class="o">();</span>
++
++    <span class="n">String</span><span class="o">[]</span> <span class="n">tags</span> <span class="o">=</span> <span class="k">new</span> <span class="n">String</span><span class="o">[]</span> <span class="o">{</span><span class="s">"TagA"</span><span class="o">,</span> <span class="s">"TagB"</span><span class="o">,</span> <span class="s">"TagC"</span><span class="o">,</span> <span class="s">"TagD"</span><span class="o">,</span> <span class="s">"TagE"</span><span class="o">};</span>
++    <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">100</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span>
++        <span class="kt">int</span> <span class="n">orderId</span> <span class="o">=</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">10</span><span class="o">;</span>
++        <span class="n">Message</span> <span class="n">msg</span> <span class="o">=</span>
++            <span class="k">new</span> <span class="nf">Message</span><span class="o">(</span><span class="s">"TopicTestjjj"</span><span class="o">,</span> <span class="n">tags</span><span class="o">[</span><span class="n">i</span> <span class="o">%</span> <span class="n">tags</span><span class="o">.</span><span class="na">length</span><span class="o">],</span> <span class="s">"KEY"</span> <span class="o">+</span> <span class="n">i</span><span class="o">,</span>
++                <span class="o">(</span><span class="s">"Hello RocketMQ "</span> <span class="o">+</span> <span class="n">i</span><span class="o">).</span><span class="na">getBytes</span><span class="o">(</span><span class="n">RemotingHelper</span><span class="o">.</span><span class="na">DEFAULT_CHARSET</span><span class="o">));</span>
++        <span class="n">SendResult</span> <span class="n">sendResult</span> <span class="o">=</span> <span class="n">producer</span><span class="o">.</span><span class="na">send</span><span class="o">(</span><span class="n">msg</span><span class="o">,</span> <span class="k">new</span> <span class="n">MessageQueueSelector</span><span class="o">()</span> <span class="o">{</span>
++            <span class="nd">@Override</span>
++            <span class="kd">public</span> <span class="n">MessageQueue</span> <span class="nf">select</span><span class="o">(</span><span class="n">List</span><span class="o">&lt;</span><span class="n">MessageQueue</span><span class="o">&gt;</span> <span class="n">mqs</span><span class="o">,</span> <span class="n">Message</span> <span class="n">msg</span><span class="o">,</span> <span class="n">Object</span> <span class="n">arg</span><span class="o">)</span> <span class="o">{</span>
++                <span class="n">Integer</span> <span class="n">id</span> <span class="o">=</span> <span class="o">(</span><span class="n">Integer</span><span class="o">)</span> <span class="n">arg</span><span class="o">;</span>
++                <span class="kt">int</span> <span class="n">index</span> <span class="o">=</span> <span class="n">id</span> <span class="o">%</span> <span class="n">mqs</span><span class="o">.</span><span class="na">size</span><span class="o">();</span>
++                <span class="k">return</span> <span class="n">mqs</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="n">index</span><span class="o">);</span>
++            <span class="o">}</span>
++        <span class="o">},</span> <span class="n">orderId</span><span class="o">);</span>
++
++        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"%s%n"</span><span class="o">,</span> <span class="n">sendResult</span><span class="o">);</span>
++    <span class="o">}</span>
++
++    <span class="n">producer</span><span class="o">.</span><span class="na">shutdown</span><span class="o">();</span>
++<span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">MQClientException</span> <span class="o">|</span> <span class="n">RemotingException</span> <span class="o">|</span> <span class="n">MQBrokerException</span> <span class="o">|</span> <span class="n">InterruptedException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
++    <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
++<span class="o">}</span>
++</code></pre>
++</div>
++
++<h4 id="subscription-message-sample-code">Subscription message sample code</h4>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">DefaultMQPushConsumer</span> <span class="n">consumer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DefaultMQPushConsumer</span><span class="o">(</span><span class="s">"please_rename_unique_group_name_3"</span><span class="o">);</span>
++
++<span class="n">consumer</span><span class="o">.</span><span class="na">setConsumeFromWhere</span><span class="o">(</span><span class="n">ConsumeFromWhere</span><span class="o">.</span><span class="na">CONSUME_FROM_FIRST_OFFSET</span><span class="o">);</span>
++
++<span class="n">consumer</span><span class="o">.</span><span class="na">subscribe</span><span class="o">(</span><span class="s">"TopicTest"</span><span class="o">,</span> <span class="s">"TagA || TagC || TagD"</span><span class="o">);</span>
++
++<span class="n">consumer</span><span class="o">.</span><span class="na">registerMessageListener</span><span class="o">(</span><span class="k">new</span> <span class="n">MessageListenerOrderly</span><span class="o">()</span> <span class="o">{</span>
++
++    <span class="n">AtomicLong</span> <span class="n">consumeTimes</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AtomicLong</span><span class="o">(</span><span class="mi">0</span><span class="o">);</span>
++    <span class="nd">@Override</span>
++    <span class="kd">public</span> <span class="n">ConsumeOrderlyStatus</span> <span class="nf">consumeMessage</span><span class="o">(</span><span class="n">List</span><span class="o">&lt;</span><span class="n">MessageExt</span><span class="o">&gt;</span> <span class="n">msgs</span><span class="o">,</span>
++                                               <span class="n">ConsumeOrderlyContext</span> <span class="n">context</span><span class="o">)</span> <span class="o">{</span>
++        <span class="n">context</span><span class="o">.</span><span class="na">setAutoCommit</span><span class="o">(</span><span class="kc">false</span><span class="o">);</span>
++        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="n">Thread</span><span class="o">.</span><span class="na">currentThread</span><span class="o">().</span><span class="na">getName</span><span class="o">()</span> <span class="o">+</span> <span class="s">" Receive New Messages: "</span> <span class="o">+</span> <span class="n">msgs</span> <span class="o">+</span> <span class="s">"%n"</span><span class="o">);</span>
++        <span class="k">this</span><span class="o">.</span><span class="na">consumeTimes</span><span class="o">.</span><span class="na">incrementAndGet</span><span class="o">();</span>
++        <span class="k">if</span> <span class="o">((</span><span class="k">this</span><span class="o">.</span><span class="na">consumeTimes</span><span class="o">.</span><span class="na">get</span><span class="o">()</span> <span class="o">%</span> <span class="mi">2</span><span class="o">)</span> <span class="o">==</span> <span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
++            <span class="k">return</span> <span class="n">ConsumeOrderlyStatus</span><span class="o">.</span><span class="na">SUCCESS</span><span class="o">;</span>
++        <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">((</span><span class="k">this</span><span class="o">.</span><span class="na">consumeTimes</span><span class="o">.</span><span class="na">get</span><span class="o">()</span> <span class="o">%</span> <span class="mi">3</span><span class="o">)</span> <span class="o">==</span> <span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
++            <span class="k">return</span> <span class="n">ConsumeOrderlyStatus</span><span class="o">.</span><span class="na">ROLLBACK</span><span class="o">;</span>
++        <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">((</span><span class="k">this</span><span class="o">.</span><span class="na">consumeTimes</span><span class="o">.</span><span class="na">get</span><span class="o">()</span> <span class="o">%</span> <span class="mi">4</span><span class="o">)</span> <span class="o">==</span> <span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
++            <span class="k">return</span> <span class="n">ConsumeOrderlyStatus</span><span class="o">.</span><span class="na">COMMIT</span><span class="o">;</span>
++        <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">((</span><span class="k">this</span><span class="o">.</span><span class="na">consumeTimes</span><span class="o">.</span><span class="na">get</span><span class="o">()</span> <span class="o">%</span> <span class="mi">5</span><span class="o">)</span> <span class="o">==</span> <span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
++            <span class="n">context</span><span class="o">.</span><span class="na">setSuspendCurrentQueueTimeMillis</span><span class="o">(</span><span class="mi">3000</span><span class="o">);</span>
++            <span class="k">return</span> <span class="n">ConsumeOrderlyStatus</span><span class="o">.</span><span class="na">SUSPEND_CURRENT_QUEUE_A_MOMENT</span><span class="o">;</span>
++        <span class="o">}</span>
++        <span class="k">return</span> <span class="n">ConsumeOrderlyStatus</span><span class="o">.</span><span class="na">SUCCESS</span><span class="o">;</span>
++
++    <span class="o">}</span>
++<span class="o">});</span>
++
++<span class="n">consumer</span><span class="o">.</span><span class="na">start</span><span class="o">();</span>
++
++<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Consumer Started.%n"</span><span class="o">);</span>
++</code></pre>
++</div>
++
++
++        
++      </section>
++
++      <footer class="page__meta">
++        
++        
++
++
++        
++          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-04-25">April 25, 2017</time></p>
++        
++      </footer>
++
++      <section class="page__share">
++  
++    <h4 class="page__share-title">Share on</h4>
++  
++
++  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Order Message  /docs/order-example/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
++
++  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/order-example/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
++
++  <a href="https://plus.google.com/share?url=/docs/order-example/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
++
++  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/order-example/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
++</section>
++
++
++      
++  <nav class="pagination">
++    
++      <a href="/docs/rmq-deployment/" class="pagination--pager" title="Deployment
++">Previous</a>
++    
++    
++      <a href="/docs/rmq-arc/" class="pagination--pager" title="RocketMQ Architecture
++">Next</a>
++    
++  </nav>
++
++    </div>
++
++    
++      <div class="page__comments">
++  
++  
++    <h4 class="page__comments-title">Leave a Comment</h4>
++    <section id="disqus_thread"></section>
++  
++</div>
++    
++  </article>
++
++  
++  
++</div>
++
++    <div class="page__footer">
++      <footer>
++        <!-- start custom footer snippets -->
++
++<!-- end custom footer snippets -->
++        <style type="text/css">
++  div.columns   { float: left; margin-left: 10px;}
++  div.clear     { clear: both; } 
++</style>
++<div>
++  <div class="columns">
++    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
++  </div>
++  <div class="columns" style="width: 80%">
++    <div class="page__footer-follow">
++      <ul class="social-icons">
++        
++          <li><strong>Follow:</strong></li>
++        
++        
++          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
++        
++        
++        
++          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
++        
++        
++        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
++      </ul>
++    </div>
++
++    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
++  </div>
++</div>
++<div class="clear"></div>
++      </footer>
++    </div>
++
++    <script src="/assets/js/main.min.js"></script>
++
++
++
++
++  <script>
++  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
++  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
++  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
++  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
++
++  ga('create', 'UA-89603173-1', 'auto');
++  ga('send', 'pageview');
++</script>
++
++<script>
++var _hmt = _hmt || [];
++(function() {
++  var hm = document.createElement("script");
++  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
++  var s = document.getElementsByTagName("script")[0]; 
++  s.parentNode.insertBefore(hm, s);
++})();
++</script>
++
++
++
++
++  
++  <script type="text/javascript">
++  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
++  	var disqus_shortname = 'rocketmq';
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function() {
++  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
++  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
++  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
++  	})();
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function () {
++  		var s = document.createElement('script'); s.async = true;
++  		s.type = 'text/javascript';
++  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
++  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
++  	}());
++  </script>
++  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
++
++
++
++
++
++
++  </body>
++</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/pull-request/index.html
----------------------------------------------------------------------
diff --cc content/docs/pull-request/index.html
index cc4f98c,0000000..5ce8ed9
mode 100644,000000..100644
--- a/content/docs/pull-request/index.html
+++ b/content/docs/pull-request/index.html
@@@ -1,722 -1,0 +1,782 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Best Practice in Pull Request - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="This page guides you through Git setup and contribution process.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Best Practice in Pull Request">
 +
 +
 +
 +
 +  <meta property="og:description" content="This page guides you through Git setup and contribution process.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Best Practice in Pull Request">
 +  <meta name="twitter:description" content="This page guides you through Git setup and contribution process.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="active">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="active">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Best Practice in Pull Request">
 +    <meta itemprop="description" content="This page guides you through Git setup and contribution process.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 25, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Best Practice in Pull Request
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>This page guides you through Git setup and contribution process.</p>
 +
 +<aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#git-setup-for-contributors" id="markdown-toc-git-setup-for-contributors">Git setup for Contributors</a></li>
 +  <li><a href="#git-setup-for-committers" id="markdown-toc-git-setup-for-committers">Git setup for Committers</a></li>
 +  <li><a href="#do-some-work-on-the-branch" id="markdown-toc-do-some-work-on-the-branch">Do some work on the branch</a></li>
 +  <li><a href="#how-to-create-a-pr-committers" id="markdown-toc-how-to-create-a-pr-committers">How to create a PR (committers)</a></li>
 +  <li><a href="#how-to-create-a-pr-contributors" id="markdown-toc-how-to-create-a-pr-contributors">How to create a PR (contributors)</a></li>
 +  <li><a href="#merging-a-pr-yours-or-contributors" id="markdown-toc-merging-a-pr-yours-or-contributors">Merging a PR (yours or contributors)</a></li>
 +  <li><a href="#closing-a-pr-without-committing-for-committers" id="markdown-toc-closing-a-pr-without-committing-for-committers">Closing a PR without committing (for committers)</a></li>
 +  <li><a href="#apachegithub-integration-features" id="markdown-toc-apachegithub-integration-features">Apache/github integration features</a></li>
 +  <li><a href="#best-practises" id="markdown-toc-best-practises">Best Practises</a>    <ul>
 +      <li><a href="#avoiding-accidentally-committing-private-branches-to-the-asf-repo" id="markdown-toc-avoiding-accidentally-committing-private-branches-to-the-asf-repo">Avoiding accidentally committing private branches to the ASF repo</a></li>
 +    </ul>
 +  </li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h1 id="git-setup-for-contributors">Git setup for Contributors</h1>
 +<p>First of all, fork github\u2019s <code class="highlighter-rouge">apache/incubator-rocketmq</code> to your own account on github and clone it as follows,</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git clone https://github.com/&lt;your_github_name&gt;/incubator-rocketmq.git
 +</code></pre>
 +</div>
 +
 +<p>Cloning this locally will set up <code class="highlighter-rouge">origin</code> to point to your remote fork on github as the default remote.
 +Now you can create your pull requests.</p>
 +
 +<p>You will need to update a local master sometimes (to merge to your development branches sometimes).
 +For this, you have to add remote for RocketMQ mirror as follows,</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git remote add upstream https://github.com/apache/incubator-rocketmq.git
 +</code></pre>
 +</div>
 +
 +<p>and update your local master via <code class="highlighter-rouge">git fetch</code> followed by <code class="highlighter-rouge">git rebase</code>, for instance, as follows</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git fetch upstream master
 +git rebase upstream/master
 +</code></pre>
 +</div>
 +
 +<h1 id="git-setup-for-committers">Git setup for Committers</h1>
 +<p>In addition to contributors\u2019 configurations, committers will have to attach the apache git repo:</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git remote add apache https://git-wip-us.apache.org/repos/asf/incubator-rocketmq.git
 +</code></pre>
 +</div>
 +
 +<p>To check your remote setup, issue</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git remote -v
 +</code></pre>
 +</div>
 +
 +<p>You should see something like this:</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>origin    https://github.com/&lt;your_github_name&gt;/incubator-rocketmq.git (fetch)
 +origin    https://github.com/&lt;your_github_name&gt;/incubator-rocketmq.git (push)
 +upstream  https://github.com/apache/incubator-rocketmq.git (fetch)
 +upstream  https://github.com/apache/incubator-rocketmq.git (push)
 +apache    https://git-wip-us.apache.org/repos/asf/incubator-rocketmq.git (fetch)
 +apache    https://git-wip-us.apache.org/repos/asf/incubator-rocketmq.git (push)
 +</code></pre>
 +</div>
 +
 +<p>Now if you want to experiment with a branch everything, by default, points to your github account because \u2018origin\u2019 is default. You can work as normal using only github until you are ready to merge with the apache remote. Some conventions will integrate with Apache JIRA ticket numbers.</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git checkout -b ROCKETMQ-xxxx #xxxx typically is a JIRA ticket number
 +</code></pre>
 +</div>
 +
 +<p><em>To guarantee code quality of the master branch, all but minor changes should go through pull requests reviewed by peer committers.</em></p>
 +
 +<h1 id="do-some-work-on-the-branch">Do some work on the branch</h1>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git commit -a -m "doing some work"
 +git push origin ROCKETMQ-xxxx # notice pushing to **origin** not **apache**
 +</code></pre>
 +</div>
 +
 +<p>Once you are ready to commit to the apache remote you can merge and push them directly or better yet create a PR.</p>
 +
 +<h1 id="how-to-create-a-pr-committers">How to create a PR (committers)</h1>
 +
 +<p>Push your branch to Github:</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git checkout ROCKETMQ-xxxx
 +git push origin ROCKETMQ-xxxx
 +</code></pre>
 +</div>
 +
 +<ol>
 +  <li>
 +    <p>Go to your ROCKETMQ-xxxx branch on Github. Since you forked it from Github\u2019s apache/incubator-rocketmq. it will default any PR to go to apache/master.</p>
 +  </li>
 +  <li>Click the green \u201cCompare, review, and create pull request\u201d button.You can edit the to and from for the PR if it isn\u2019t correct. The \u201cbase fork\u201d should be apache/incubator-rocketmq unless you are collaborating separately with one of the committers on the list. The \u201cbase\u201d will be master. Don\u2019t submit a PR to one of the other branches unless you know what you are doing. The \u201chead fork\u201d will be your forked repo and the \u201ccompare\u201d will be your ROCKETMQ-xxxx branch.</li>
 +  <li>Click the \u201cCreate pull request\u201d button and name the request \u201cROCKETMQ-xxxx\u201d all caps. This will connect the comments of the PR to the mailing list and JIRA comments.</li>
 +  <li>From now on the PR lives on github\u2019s apache/incubator-rocketmq. You use the commenting UI there.</li>
 +  <li>If you are looking for a review or sharing with someone else say so in the comments but don\u2019t worry about automated merging of your PR \u2013 you will have to do that later. The PR is tied to your branch so you can respond to comments, make fixes, and commit them from your local repo. They will appear on the PR page and be mirrored to Jira and the mailing list.</li>
 +  <li>When you are satisfied and want to push it to Apache\u2019s remote repo proceed with Merging a PR</li>
 +</ol>
 +
 +<h1 id="how-to-create-a-pr-contributors">How to create a PR (contributors)</h1>
 +<p>Before you create a pull request, make sure</p>
 +<ol>
 +  <li>A corresponding <a href="https://issues.apache.org/jira/browse/ROCKETMQ/">JIRA</a> issue is created and has a clear problem description.</li>
 +  <li>You follow <a href="/docs/code-guidelines/">Coding Guidelines</a>.</li>
 +  <li>You have unit tests for it, whenever applicable.</li>
 +</ol>
 +
 +<p>For information on creating pull requests, see <a href="https://help.github.com/articles/creating-a-pull-request/">GitHub PR docs</a>.</p>
 +
 +<p>Pull requests are made to <code class="highlighter-rouge">apache/incubator-rocketmq</code> repository on Github. 
 +In the Github UI you should pick the master branch to target the PR as described in the section for committers. <br /> 
 +You pull request will be reviewed and commented by committers, and issues can be discussed the contribution in progress. When all reviewers are positive on the pull request, it will be merged.</p>
 +
 +<h1 id="merging-a-pr-yours-or-contributors">Merging a PR (yours or contributors)</h1>
 +<p>Start with reading <a href="https://help.github.com/articles/checking-out-pull-requests-locally/">GitHub PR merging locally</a>. Remember that pull requests are equivalent to a remote github branch with potentially a multitude of commits. In this case it is recommended to squash remote commit history to have one commit per issue, rather than merging in a multitude of contributor\u2019s commits. In order to do that, as well as close the PR at the same time, it is recommended to use squash commits.
 +Merging pull requests are equivalent to a \u201cpull\u201d of a contributor\u2019s branch:</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git checkout master      # switch to local master branch
 +git pull apache master   # fast-forward to current remote HEAD
 +git pull --squash https://github.com/cuser/incubator-rocketmq.git ROCKETMQ-xxxx  # merge to master
 +</code></pre>
 +</div>
 +
 +<p><code class="highlighter-rouge">--squash</code> ensures all PR history is squashed into single commit, and allows committer to use his/her own message. Read git help for merge or pull for more information about <code class="highlighter-rouge">--squash</code> option. In this example we assume that the contributor\u2019s Github handle is \u201ccuser\u201d and the PR branch name is \u201cROCKETMQ-xxxx\u201d. Next, resolve conflicts, if any, or ask a contributor to rebase on top of master, if PR went out of sync.</p>
 +
 +<p>If you are ready to merge your own (committer\u2019s) PR you probably only need to merge (not pull), since you have a local copy that you\u2019ve been working on. This is the branch that you used to create the PR.</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git checkout master      # switch to local master branch
 +git pull apache master   # fast-forward to current remote HEAD
 +git merge --squash ROCKETMQ-xxxx
 +</code></pre>
 +</div>
 +
 +<p>Remember to run regular patch checks, build with tests enabled, and change CHANGELOG.
 +If everything is fine, you now can commit the squashed request along the lines</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git commit --author="contributor_name &lt;contributor_email&gt;" -a -m "ROCKETMQ-XXXX description closes apache/incubator-rocketmq#ZZ"
 +</code></pre>
 +</div>
 +
 +<p>ROCKETMQ-XXXX is all caps and where ZZ is the pull request number on apache/incubator-rocketmq repository. Including \u201ccloses apache/incubator-rocketmq#ZZ\u201d will close the PR automatically. More information is found here <a href="https://help.github.com/articles/closing-issues-via-commit-messages/">GitHub PR closing docs.</a>.
 +Next, push to git-wip-us.apache.org:</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git push apache master
 +</code></pre>
 +</div>
 +
 +<p>(this will require Apache handle credentials).
 +The PR, once pushed, will get mirrored to github. To update your github version push there too:</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git push origin master
 +</code></pre>
 +</div>
 +
 +<p>Note on squashing: Since squash discards remote branch history, repeated PRs from the same remote branch are difficult for merging. The workflow implies that every new PR starts with a new rebased branch. This is more important for contributors to know, rather than for committers, because if new PR is not mergeable, github would warn to begin with. Anyway, watch for dupe PRs (based on same source branches). This is a bad practice.</p>
 +
 +<h1 id="closing-a-pr-without-committing-for-committers">Closing a PR without committing (for committers)</h1>
 +<p>When we want to reject a PR (close without committing), we can just issue an empty commit on master\u2019s HEAD without merging the PR:</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>git commit --allow-empty -m "ROCKETMQ-XXXX closes apache/incubator-rocketmq#ZZ *Won't fix*"
 +git push apache master
 +</code></pre>
 +</div>
 +
 +<p>that should close PR ZZ on github mirror without merging and any code modifications in the master repository.more detail please refer to RocketMQ PR https://github.com/apache/incubator-rocketmq/pull/15</p>
 +
 +<h1 id="apachegithub-integration-features">Apache/github integration features</h1>
 +
 +<p>Read <a href="https://blogs.apache.org/infra/entry/improved_integration_between_apache_and">infra blog</a>. Comments and PRs with RocketMQ issue handles should post to mailing lists and JIRA. RocketMQ issue handles must in the form ROCKETMQ-YYYYY (all capitals). Usually it makes sense to file a JIRA issue first, and then create a PR with description
 +ROCKETMQ-YYYY: <jira-issue-description>
 +In this case all subsequent comments will automatically be copied to jira without having to mention JIRA issue explicitly in each comment of the PR.</jira-issue-description></p>
 +
 +<h1 id="best-practises">Best Practises</h1>
 +
 +<h2 id="avoiding-accidentally-committing-private-branches-to-the-asf-repo">Avoiding accidentally committing private branches to the ASF repo</h2>
 +
 +<p>Its dangerously easy \u2014especially when using IDEs\u2014 to accidentally commit changes to the ASF repo, be it direct to the trunk, branch-2 or other standard branch on which you are developing, or to a private branch you had intended to keep on github (or a private repo).</p>
 +
 +<p>Committers can avoid this by having the directory in which they develop code set up with read only access to the ASF repository on github, without the apache repository added. A separate directory should be set up with write access to the ASF repository as well as read access to your other repositories. Merging operations and pushes back to the ASF repo are done from this directory \u2014so isolated from all local development.</p>
 +
 +<p>If you accidentally commit a patch to an ASF branch, do not attempt to roll back the branch and force out a new update. Simply commit and push out a new patch revoking the change.</p>
 +
 +<p>If you do accidentally commit a branch to the ASF repo, the infrastructure team can delete it \u2014but they cannot stop it propagating to github and potentially being visible. Try not to do that.</p>
 +
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-25">December 25, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Best Practice in Pull Request /docs/pull-request/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/pull-request/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/pull-request/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/pull-request/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/cluster-deployment/" class="pagination--pager" title="Cluster Configuration and Deployment
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/code-guidelines/" class="pagination--pager" title="Coding Guidelines
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/quick-start/index.html
----------------------------------------------------------------------
diff --cc content/docs/quick-start/index.html
index 31e9485,0000000..861211e
mode 100644,000000..100644
--- a/content/docs/quick-start/index.html
+++ b/content/docs/quick-start/index.html
@@@ -1,605 -1,0 +1,665 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Quick Start - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="How to quickly install and setup Apache RocketMQ.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Quick Start">
 +
 +
 +
 +
 +  <meta property="og:description" content="How to quickly install and setup Apache RocketMQ.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Quick Start">
 +  <meta name="twitter:description" content="How to quickly install and setup Apache RocketMQ.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="active">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Quick Start">
 +    <meta itemprop="description" content="How to quickly install and setup Apache RocketMQ.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 30, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Quick Start
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>This quick start guide is to give detailed instructions, helping you setup RocketMQ messaging system on a single local machine and send/receive the very first message.</p>
 +
 +<aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#prerequisite" id="markdown-toc-prerequisite">Prerequisite</a></li>
 +  <li><a href="#clone--build" id="markdown-toc-clone--build">Clone &amp; Build</a></li>
 +  <li><a href="#start-name-server" id="markdown-toc-start-name-server">Start Name Server</a></li>
 +  <li><a href="#start-broker" id="markdown-toc-start-broker">Start Broker</a></li>
 +  <li><a href="#send--receive-messages" id="markdown-toc-send--receive-messages">Send &amp; Receive Messages</a></li>
 +  <li><a href="#shutdown-servers" id="markdown-toc-shutdown-servers">Shutdown Servers</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h1 id="prerequisite">Prerequisite</h1>
 +
 +<p>The following softwares are assumed installed:</p>
 +<ol>
 +  <li>64bit OS, Linux/Unix/Mac is recommended;</li>
 +  <li>64bit JDK 1.7+;</li>
 +  <li>Maven 3.2.x</li>
 +  <li>Git</li>
 +</ol>
 +
 +<h1 id="clone--build">Clone &amp; Build</h1>
 +
 +<div class="language-shell highlighter-rouge"><pre class="highlight"><code>  &gt; git clone https://github.com/apache/incubator-rocketmq.git
 +  &gt; <span class="nb">cd </span>incubator-rocketmq
-   &gt; mvn clean package install -Prelease-all assembly:assembly -U
-   &gt; <span class="nb">cd </span>target/apache-rocketmq-all/
++  &gt; mvn -Prelease-all -DskipTests clean install -U
++  &gt; <span class="nb">cd </span>distribution/target/apache-rocketmq
 +</code></pre>
 +</div>
 +
 +<h1 id="start-name-server">Start Name Server</h1>
 +
 +<div class="language-shell highlighter-rouge"><pre class="highlight"><code>  &gt; nohup sh bin/mqnamesrv &amp;
 +  &gt; tail -f ~/logs/rocketmqlogs/namesrv.log
 +  The Name Server boot success...
 +</code></pre>
 +</div>
 +
 +<h1 id="start-broker">Start Broker</h1>
 +
 +<div class="language-shell highlighter-rouge"><pre class="highlight"><code>  &gt; nohup sh bin/mqbroker -n localhost:9876 &amp;
 +  &gt; tail -f ~/logs/rocketmqlogs/broker.log 
 +  The broker[%s, 172.30.30.233:10911] boot success...
 +</code></pre>
 +</div>
 +<p>you may need to pay attention to the broker ip, for that the broker will not use the loopback network interface, So you should make sure you have connected to other network.</p>
 +
 +<h1 id="send--receive-messages">Send &amp; Receive Messages</h1>
 +
 +<p>Before sending/receiving messages, we need to tell clients where name servers are located. RocketMQ provides multiple ways to achieve this. For simplicity, we use environment variable <code class="highlighter-rouge">NAMESRV_ADDR</code></p>
 +
 +<div class="language-shell highlighter-rouge"><pre class="highlight"><code> &gt; <span class="nb">export </span><span class="nv">NAMESRV_ADDR</span><span class="o">=</span>localhost:9876
 + &gt; sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
 + SendResult <span class="o">[</span><span class="nv">sendStatus</span><span class="o">=</span>SEND_OK, <span class="nv">msgId</span><span class="o">=</span> ...
 +
 + &gt; sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
 + ConsumeMessageThread_%d Receive New Messages: <span class="o">[</span>MessageExt...
 +</code></pre>
 +</div>
 +
 +<h1 id="shutdown-servers">Shutdown Servers</h1>
 +
 +<div class="language-shell highlighter-rouge"><pre class="highlight"><code><span class="gp">&gt; </span>sh bin/mqshutdown broker
 +The mqbroker<span class="o">(</span>36695<span class="o">)</span> is running...
 +Send shutdown request to mqbroker<span class="o">(</span>36695<span class="o">)</span> OK
 +
 +<span class="gp">&gt; </span>sh bin/mqshutdown namesrv
 +The mqnamesrv<span class="o">(</span>36664<span class="o">)</span> is running...
 +Send shutdown request to mqnamesrv<span class="o">(</span>36664<span class="o">)</span> OK
 +</code></pre>
 +</div>
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-30">December 30, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Quick Start /docs/quick-start/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/quick-start/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/quick-start/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/quick-start/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="#" class="pagination--pager disabled">Previous</a>
 +    
 +    
 +      <a href="/docs/motivation/" class="pagination--pager" title="Motivation
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>


[13/16] incubator-rocketmq-site git commit: Release at 2017.04.25

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/broadcast-example/index.html
----------------------------------------------------------------------
diff --cc content/docs/broadcast-example/index.html
index 0000000,0000000..6712947
new file mode 100644
--- /dev/null
+++ b/content/docs/broadcast-example/index.html
@@@ -1,0 -1,0 +1,661 @@@
++<!doctype html>
++<html lang="en" class="no-js">
++  <head>
++    <meta charset="utf-8">
++
++<!-- begin SEO -->
++
++
++
++
++
++
++
++
++
++<title>Broadcasting - Apache RocketMQ</title>
++
++
++
++
++<meta name="description" content="How to send broadcast messages in Apache RocketMQ.">
++
++
++
++
++<meta property="og:locale" content="en">
++<meta property="og:site_name" content="Apache RocketMQ">
++<meta property="og:title" content="Broadcasting">
++
++
++
++
++  <meta property="og:description" content="How to send broadcast messages in Apache RocketMQ.">
++
++
++
++  <meta name="twitter:site" content="@ApacheRocketMQ">
++  <meta name="twitter:title" content="Broadcasting">
++  <meta name="twitter:description" content="How to send broadcast messages in Apache RocketMQ.">
++  <meta name="twitter:url" content="">
++
++  
++    <meta name="twitter:card" content="summary">
++    
++  
++
++  
++
++
++
++  
++
++  
++
++
++
++
++
++  <meta property="og:type" content="article">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
++
++
++
++
++
++
++
++
++  <script type="application/ld+json">
++    {
++      "@context" : "http://schema.org",
++      "@type" : "Person",
++      "name" : "Apache RocketMQ",
++      "url" : null,
++      "sameAs" : null
++    }
++  </script>
++
++
++
++  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
++
++
++  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
++
++
++
++
++<!-- end SEO -->
++
++
++<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
++
++<!-- http://t.co/dKP3o1e -->
++<meta name="HandheldFriendly" content="True">
++<meta name="MobileOptimized" content="320">
++<meta name="viewport" content="width=device-width, initial-scale=1.0">
++
++<script>
++  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
++</script>
++
++<!-- For all browsers -->
++<link rel="stylesheet" href="/assets/css/main.css">
++
++<meta http-equiv="cleartype" content="on">
++    <!-- start custom head snippets -->
++
++<!-- insert favicons. use http://realfavicongenerator.net/ -->
++
++<!-- end custom head snippets -->
++  </head>
++
++  <body class="layout--single">
++
++    <!--[if lt IE 9]>
++<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
++<![endif]-->
++    <div class="masthead">
++  <div class="masthead__inner-wrap">
++    <div class="masthead__menu">
++      <nav id="site-nav" class="greedy-nav">
++        <button><div class="navicon"></div></button>
++        <ul class="visible-links">
++          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
++          
++        </ul>
++        <ul class="hidden-links hidden"></ul>
++      </nav>
++    </div>
++  </div>
++</div>
++
++    
++
++
++
++<div id="main" role="main">
++  
++  <div class="sidebar sticky">
++  
++  
++    
++      
++      
++      
++    
++    
++      
++
++<nav class="nav__list">
++  
++  <input id="ac-toc" name="accordion-toc" type="checkbox" />
++  <label for="ac-toc">Toggle Menu</label>
++  <ul class="nav__items">
++    
++      <li>
++        
++          <span class="nav__sub-title">User Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/broadcast-example/" class="active">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Best Practice</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Release Notes</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/dowloading/releases/" class="">Download</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
++        
++
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
++        
++
++        
++      </li>
++    
++  </ul>
++</nav>
++    
++  
++  </div>
++
++
++  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
++    <meta itemprop="headline" content="Broadcasting">
++    <meta itemprop="description" content="How to send broadcast messages in Apache RocketMQ.">
++    <meta itemprop="datePublished" content="April 25, 2017">
++    <meta itemprop="dateModified" content="April 25, 2017">
++
++    <div class="page__inner-wrap">
++      
++        <header>
++          <h1 class="page__title" itemprop="headline">Broadcasting
++</h1>
++          
++        </header>
++      
++
++      <section class="page__content" itemprop="text">
++        <aside class="sidebar__right">
++<nav class="toc">
++    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
++<ul class="toc__menu" id="markdown-toc">
++  <li><a href="#what-is-broadcasting" id="markdown-toc-what-is-broadcasting">What is Broadcasting</a></li>
++  <li><a href="#how-to-use" id="markdown-toc-how-to-use">How to use</a>    <ul>
++      <li><a href="#firstproduce-message-as-before" id="markdown-toc-firstproduce-message-as-before">First,Produce message as before</a></li>
++      <li><a href="#secondconsume-message-in-broadcast-mode" id="markdown-toc-secondconsume-message-in-broadcast-mode">Second,Consume message in Broadcast mode</a></li>
++    </ul>
++  </li>
++</ul>
++
++  </nav>
++</aside>
++
++<h4 id="what-is-broadcasting">What is Broadcasting</h4>
++<p>Broadcasting is when sending a meeage to a topic,all subscribers of the topic will receive the message even if they are in the same consumer group.If you want all subscribers in a group receive all the messages in a topic,broadcasting is a good choice.</p>
++
++<h4 id="how-to-use">How to use</h4>
++
++<h5 id="firstproduce-message-as-before">First,Produce message as before</h5>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">DefaultMQProducer</span> <span class="n">producer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DefaultMQProducer</span><span class="o">(</span><span class="s">"ProducerGroupName"</span><span class="o">);</span>
++
++<span class="n">producer</span><span class="o">.</span><span class="na">start</span><span class="o">();</span>
++
++<span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">10000000</span><span class="o">;</span> <span class="n">i</span><span class="o">++){</span>
++    <span class="k">try</span> <span class="o">{</span>
++        <span class="o">{</span>
++            <span class="n">Message</span> <span class="n">msg</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Message</span><span class="o">(</span><span class="s">"TopicTest"</span><span class="o">,</span>
++                <span class="s">"TagA"</span><span class="o">,</span>
++                <span class="s">"OrderID188"</span><span class="o">,</span>
++                <span class="s">"Hello world"</span><span class="o">.</span><span class="na">getBytes</span><span class="o">(</span><span class="n">RemotingHelper</span><span class="o">.</span><span class="na">DEFAULT_CHARSET</span><span class="o">));</span>
++            <span class="n">SendResult</span> <span class="n">sendResult</span> <span class="o">=</span> <span class="n">producer</span><span class="o">.</span><span class="na">send</span><span class="o">(</span><span class="n">msg</span><span class="o">);</span>
++            <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"%s%n"</span><span class="o">,</span> <span class="n">sendResult</span><span class="o">);</span>
++        <span class="o">}</span>
++
++    <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
++        <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
++    <span class="o">}</span>
++<span class="o">}</span>
++<span class="n">producer</span><span class="o">.</span><span class="na">shutdown</span><span class="o">();</span>
++</code></pre>
++</div>
++
++<h5 id="secondconsume-message-in-broadcast-mode">Second,Consume message in Broadcast mode</h5>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">DefaultMQPushConsumer</span> <span class="n">consumer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DefaultMQPushConsumer</span><span class="o">(</span><span class="s">"please_rename_unique_group_name_1"</span><span class="o">);</span>
++
++<span class="n">consumer</span><span class="o">.</span><span class="na">setConsumeFromWhere</span><span class="o">(</span><span class="n">ConsumeFromWhere</span><span class="o">.</span><span class="na">CONSUME_FROM_FIRST_OFFSET</span><span class="o">);</span>
++
++<span class="c1">//set to broadcast mode</span>
++<span class="n">consumer</span><span class="o">.</span><span class="na">setMessageModel</span><span class="o">(</span><span class="n">MessageModel</span><span class="o">.</span><span class="na">BROADCASTING</span><span class="o">);</span>
++
++<span class="n">consumer</span><span class="o">.</span><span class="na">subscribe</span><span class="o">(</span><span class="s">"TopicTest"</span><span class="o">,</span> <span class="s">"TagA || TagC || TagD"</span><span class="o">);</span>
++
++<span class="n">consumer</span><span class="o">.</span><span class="na">registerMessageListener</span><span class="o">(</span><span class="k">new</span> <span class="n">MessageListenerConcurrently</span><span class="o">()</span> <span class="o">{</span>
++
++    <span class="nd">@Override</span>
++    <span class="kd">public</span> <span class="n">ConsumeConcurrentlyStatus</span> <span class="nf">consumeMessage</span><span class="o">(</span><span class="n">List</span><span class="o">&lt;</span><span class="n">MessageExt</span><span class="o">&gt;</span> <span class="n">msgs</span><span class="o">,</span>
++        <span class="n">ConsumeConcurrentlyContext</span> <span class="n">context</span><span class="o">)</span> <span class="o">{</span>
++        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="n">Thread</span><span class="o">.</span><span class="na">currentThread</span><span class="o">().</span><span class="na">getName</span><span class="o">()</span> <span class="o">+</span> <span class="s">" Receive New Messages: "</span> <span class="o">+</span> <span class="n">msgs</span> <span class="o">+</span> <span class="s">"%n"</span><span class="o">);</span>
++        <span class="k">return</span> <span class="n">ConsumeConcurrentlyStatus</span><span class="o">.</span><span class="na">CONSUME_SUCCESS</span><span class="o">;</span>
++    <span class="o">}</span>
++<span class="o">});</span>
++
++<span class="n">consumer</span><span class="o">.</span><span class="na">start</span><span class="o">();</span>
++<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Broadcast Consumer Started.%n"</span><span class="o">);</span>
++</code></pre>
++</div>
++
++<p>Enjoy it.</p>
++
++        
++      </section>
++
++      <footer class="page__meta">
++        
++        
++
++
++        
++          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-04-25">April 25, 2017</time></p>
++        
++      </footer>
++
++      <section class="page__share">
++  
++    <h4 class="page__share-title">Share on</h4>
++  
++
++  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Broadcasting /docs/broadcast-example/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
++
++  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/broadcast-example/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
++
++  <a href="https://plus.google.com/share?url=/docs/broadcast-example/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
++
++  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/broadcast-example/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
++</section>
++
++
++      
++  <nav class="pagination">
++    
++      <a href="/docs/batch-example/" class="pagination--pager" title="Batch Example
++">Previous</a>
++    
++    
++      <a href="/docs/rmq-deployment/" class="pagination--pager" title="Deployment
++">Next</a>
++    
++  </nav>
++
++    </div>
++
++    
++      <div class="page__comments">
++  
++  
++    <h4 class="page__comments-title">Leave a Comment</h4>
++    <section id="disqus_thread"></section>
++  
++</div>
++    
++  </article>
++
++  
++  
++</div>
++
++    <div class="page__footer">
++      <footer>
++        <!-- start custom footer snippets -->
++
++<!-- end custom footer snippets -->
++        <style type="text/css">
++  div.columns   { float: left; margin-left: 10px;}
++  div.clear     { clear: both; } 
++</style>
++<div>
++  <div class="columns">
++    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
++  </div>
++  <div class="columns" style="width: 80%">
++    <div class="page__footer-follow">
++      <ul class="social-icons">
++        
++          <li><strong>Follow:</strong></li>
++        
++        
++          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
++        
++        
++        
++          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
++        
++        
++        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
++      </ul>
++    </div>
++
++    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
++  </div>
++</div>
++<div class="clear"></div>
++      </footer>
++    </div>
++
++    <script src="/assets/js/main.min.js"></script>
++
++
++
++
++  <script>
++  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
++  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
++  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
++  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
++
++  ga('create', 'UA-89603173-1', 'auto');
++  ga('send', 'pageview');
++</script>
++
++<script>
++var _hmt = _hmt || [];
++(function() {
++  var hm = document.createElement("script");
++  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
++  var s = document.getElementsByTagName("script")[0]; 
++  s.parentNode.insertBefore(hm, s);
++})();
++</script>
++
++
++
++
++  
++  <script type="text/javascript">
++  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
++  	var disqus_shortname = 'rocketmq';
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function() {
++  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
++  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
++  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
++  	})();
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function () {
++  		var s = document.createElement('script'); s.async = true;
++  		s.type = 'text/javascript';
++  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
++  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
++  	}());
++  </script>
++  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
++
++
++
++
++
++
++  </body>
++</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/cli-admin-tool/index.html
----------------------------------------------------------------------
diff --cc content/docs/cli-admin-tool/index.html
index 314aba1,0000000..87b6682
mode 100644,000000..100644
--- a/content/docs/cli-admin-tool/index.html
+++ b/content/docs/cli-admin-tool/index.html
@@@ -1,617 -1,0 +1,677 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>CLI Admin Tool - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="RocketMQ provides a CLI admin tool belt to query, manage and diagnose various issues.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="CLI Admin Tool">
 +
 +
 +
 +
 +  <meta property="og:description" content="RocketMQ provides a CLI admin tool belt to query, manage and diagnose various issues.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="CLI Admin Tool">
 +  <meta name="twitter:description" content="RocketMQ provides a CLI admin tool belt to query, manage and diagnose various issues.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="active">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="active">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="CLI Admin Tool">
 +    <meta itemprop="description" content="RocketMQ provides a CLI admin tool belt to query, manage and diagnose various issues.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 17, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">CLI Admin Tool
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>RocketMQ provides a CLI admin tool belt to query, manage and diagnose various issues.</p>
 +
 +<aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#prerequisite" id="markdown-toc-prerequisite">Prerequisite</a></li>
 +  <li><a href="#how-to-get-it" id="markdown-toc-how-to-get-it">How To Get it</a></li>
 +  <li><a href="#how-to-use" id="markdown-toc-how-to-use">How to use</a></li>
 +  <li><a href="#command-manual" id="markdown-toc-command-manual">Command Manual</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h1 id="prerequisite">Prerequisite</h1>
 +
 +<p>Make sure you have walked through <a href="/docs/quick-start/">Quick Start</a> and <a href="/docs/core-concept/">Core Concept</a> sections.</p>
 +
 +<h1 id="how-to-get-it">How To Get it</h1>
 +
 +<p>The admin tool is shipped along with RocketMQ. Either you download a pre-built binary version or build from source by yourself, you already have it.</p>
 +
 +<p>In case you have source code, the <a href="https://github.com/apache/incubator-rocketmq/tree/master/tools">rocketmq-tools module</a> contains its source code.</p>
 +
 +<h1 id="how-to-use">How to use</h1>
 +
 +<p>The Admin Tool is very easy to use. Here, for demonstration purpose, *nix environment is assumed.</p>
 +
 +<p>Change directory to ${PACKAGE}/bin, command <code class="highlighter-rouge">bash mqadmin</code>, you should see the following help menu pops out.</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>The most commonly used mqadmin commands are:
 +   updateTopic          Update or create topic
 +   deleteTopic          Delete topic from broker and NameServer.
 +   updateSubGroup       Update or create subscription group
 +   deleteSubGroup       Delete subscription group from broker.
 +   updateBrokerConfig   Update broker's config
 +   updateTopicPerm      Update topic perm
 +   topicRoute           Examine topic route info
 +   topicStatus          Examine topic Status info
 +   topicClusterList     get cluster info for topic
 +   brokerStatus         Fetch broker runtime status data
 +   queryMsgById         Query Message by Id
 +   queryMsgByKey        Query Message by Key
 +   queryMsgByUniqueKey  Query Message by Unique key
 +   queryMsgByOffset     Query Message by offset
 +   queryMsgByUniqueKey  Query Message by Unique key
 +   printMsg             Print Message Detail
 +   sendMsgStatus        send msg to broker.
 +   brokerConsumeStats   Fetch broker consume stats data
 +   producerConnection   Query producer's socket connection and client version
 +   consumerConnection   Query consumer's socket connection, client version and subscription
 +   consumerProgress     Query consumers's progress, speed
 +   consumerStatus       Query consumer's internal data structure
 +   cloneGroupOffset     clone offset from other group.
 +   clusterList          List all of clusters
 +   topicList            Fetch all topic list from name server
 +   updateKvConfig       Create or update KV config.
 +   deleteKvConfig       Delete KV config.
 +   wipeWritePerm        Wipe write perm of broker in all name server
 +   resetOffsetByTime    Reset consumer offset by timestamp(without client restart).
 +   updateOrderConf      Create or update or delete order conf
 +   cleanExpiredCQ       Clean expired ConsumeQueue on broker.
 +   cleanUnusedTopic     Clean unused topic on broker.
 +   startMonitoring      Start Monitoring
 +   statsAll             Topic and Consumer tps stats
 +   syncDocs             Synchronize wiki and issue to github.com
 +   allocateMQ           Allocate MQ
 +   checkMsgSendRT       check message send response time
 +   clusterRT            List All clusters Message Send RT
 +
 +See 'mqadmin help &lt;command&gt;' for more information on a specific command.
 +</code></pre>
 +</div>
 +
 +<p>As you see, the most commonly used commands are listed with a brief description. To get detailed manual of each command, <code class="highlighter-rouge">bash mqadmin help &lt;command&gt;</code>. For example, command <code class="highlighter-rouge">bash mqadmin help clusterList</code> will bring out the following help text:</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>usage: mqadmin clusterList [-h] [-i &lt;arg&gt;] [-m] [-n &lt;arg&gt;]
 + -h,--help                Print help
 + -i,--interval &lt;arg&gt;      specify intervals numbers, it is in seconds
 + -m,--moreStats           Print more stats
 + -n,--namesrvAddr &lt;arg&gt;   Name server address list, eg: 192.168.0.1:9876;192.168.0.2:9876
 +</code></pre>
 +</div>
 +
 +<p>The help text lists possible options and interpretation of each option.</p>
 +
 +<h1 id="command-manual">Command Manual</h1>
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-17">December 17, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=CLI Admin Tool /docs/cli-admin-tool/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/cli-admin-tool/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/cli-admin-tool/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/cli-admin-tool/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/core-concept/" class="pagination--pager" title="Core Concept
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/cluster-deployment/" class="pagination--pager" title="Cluster Configuration and Deployment
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/cluster-deployment/index.html
----------------------------------------------------------------------
diff --cc content/docs/cluster-deployment/index.html
index d7e6d8f,0000000..8f71ae7
mode 100644,000000..100644
--- a/content/docs/cluster-deployment/index.html
+++ b/content/docs/cluster-deployment/index.html
@@@ -1,621 -1,0 +1,681 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Cluster Configuration and Deployment - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="Prerequisite">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Cluster Configuration and Deployment">
 +
 +
 +
 +
 +  <meta property="og:description" content="Prerequisite">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Cluster Configuration and Deployment">
 +  <meta name="twitter:description" content="Prerequisite">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="active">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Cluster Configuration and Deployment">
 +    <meta itemprop="description" content="Prerequisite">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 17, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Cluster Configuration and Deployment
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <h1 id="prerequisite">Prerequisite</h1>
 +
 +<p>Before starting this section, make sure you have read Quick Start section, in which core concepts and components of RocketMQ are introduced.</p>
 +
 +<aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#prerequisite" id="markdown-toc-prerequisite">Prerequisite</a></li>
 +  <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
 +  <li><a href="#name-server" id="markdown-toc-name-server">Name Server</a></li>
 +  <li><a href="#broker" id="markdown-toc-broker">Broker</a></li>
 +  <li><a href="#disk-flush-type-sync_flush--async_flush" id="markdown-toc-disk-flush-type-sync_flush--async_flush">Disk Flush Type: SYNC_FLUSH / ASYNC_FLUSH</a></li>
 +  <li><a href="#replication-sync--async-broker" id="markdown-toc-replication-sync--async-broker">Replication: Sync / Async Broker</a></li>
 +  <li><a href="#configuration" id="markdown-toc-configuration">Configuration</a></li>
 +  <li><a href="#deployment-example" id="markdown-toc-deployment-example">Deployment Example</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h1 id="introduction">Introduction</h1>
 +
 +<p>This section is to introduce deployment solution that may be considered production ready.  Generally speaking, we are deploying a resilient RocketMQ cluster having no single point of failure.</p>
 +
 +<h1 id="name-server">Name Server</h1>
 +
 +<p>To ensure the cluster can still operate normally when name server instance crashes, two or more name server instances are recommended.  As long as there is one name server instance alive, the whole cluster remains serving.</p>
 +
 +<p>Name server follows share-nothing design paradigm. Brokers send heartbeat data to all name servers. Producers and consumers may query meta data from any one of name servers available while sending / consuming messages.</p>
 +
 +<h1 id="broker">Broker</h1>
 +
 +<p>Brokers can be divided into two categories according to their roles: master and slave. Master brokers can read and write while slave brokers can only read messages replicated from master. Master brokers have brokerId=0; brokerId of slave is non-zero.</p>
 +
 +<p>Brokers may also be grouped by the brokerName property. Slave brokers find their master through brokerName. One master broker along with zero, one or multiple slave brokers is called a broker set.</p>
 +
 +<p>In serious scenarios, we should have at least two broker sets. Each topic, as you guess,  resides in two or more broker sets.</p>
 +
 +<h1 id="disk-flush-type-sync_flush--async_flush">Disk Flush Type: SYNC_FLUSH / ASYNC_FLUSH</h1>
 +
 +<p>Each broker can be configured to be sync or async in terms of IO flushing strategy. To put it simply, if your business tolerates none message loss at extreme scenarios like OS crash or power loss, SYNC_FLUSH mode is recommended. Broker of SYNC_FLUSH mode would flush each message it receives onto disk before acknowledging producer. Obviously, throughout of this mode is highly dependent on IOPS of your hard disk.</p>
 +
 +<p>Broker of ASYNC_FLUSH mode, on the other hand, takes advantage of group-committing: only flushes dirty page caches to disk periodically or when count of dirty page caches reaches certain amount. Hence, the latter yields better performance.</p>
 +
 +<h1 id="replication-sync--async-broker">Replication: Sync / Async Broker</h1>
 +
 +<p>Similar to many replication system, sync brokers await until commit log is replicated to a slave before acknowledging. Async brokers, instead, return immediately after messages are processed on master.</p>
 +
 +<h1 id="configuration">Configuration</h1>
 +
 +<p>There are three pre-built configurations shipped with the distribution of RocketMQ under conf folder for your reference:</p>
 +
 +<ol>
 +  <li>2m-2s-sync</li>
 +  <li>2m-2s-async</li>
 +  <li>2m-noslave</li>
 +</ol>
 +
 +<p>Note: all configurations uses ASYNC_FLUSH.</p>
 +
 +<h1 id="deployment-example">Deployment Example</h1>
 +
 +<p>For example, We want to have a cluster with 2 name servers, 2 broker sets with general purpose:
 +for this example, we choose <code class="highlighter-rouge">2m-2s-sync</code>
 +Assuming binary RocketMQ is at <code class="highlighter-rouge">/home/rocketmq/dist</code></p>
 +
 +<ol>
 +  <li>
 +    <p>Start up two name servers as is shown in Quick Start guide. Assume their IPs are 192.168.0.2 and 192.168.0.3.</p>
 +  </li>
 +  <li>
 +    <p>Start brokers</p>
 +
 +    <p><code class="highlighter-rouge">cd /home/rocketmq/dist/bin</code></p>
 +
 +    <p><code class="highlighter-rouge">bash mqbroker -c ../conf/2m-2s-sync/broker-a.properties -n 192.168.0.2:9876,192.168.0.3:9876</code></p>
 +
 +    <p><code class="highlighter-rouge">bash mqbroker -c ../conf/2m-2s-sync/broker-a-s.properties -n 192.168.0.2:9876,192.168.0.3:9876</code></p>
 +
 +    <p><code class="highlighter-rouge">bash mqbroker -c ../conf/2m-2s-sync/broker-b.properties -n 192.168.0.2:9876,192.168.0.3:9876</code></p>
 +
 +    <p><code class="highlighter-rouge">bash mqbroker -c ../conf/2m-2s-sync/broker-b-s.properties -n 192.168.0.2:9876,192.168.0.3:9876</code></p>
 +  </li>
 +  <li>
 +    <p>Verify</p>
 +
 +    <p>Execute the following command to verify</p>
 +
 +    <p><code class="highlighter-rouge">bash mqadmin clusterList</code></p>
 +  </li>
 +</ol>
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-17">December 17, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Cluster Configuration and Deployment /docs/cluster-deployment/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/cluster-deployment/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/cluster-deployment/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/cluster-deployment/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/cli-admin-tool/" class="pagination--pager" title="CLI Admin Tool
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/pull-request/" class="pagination--pager" title="Best Practice in Pull Request
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/code-guidelines/index.html
----------------------------------------------------------------------
diff --cc content/docs/code-guidelines/index.html
index 3e94bf2,0000000..c4b5da5
mode 100644,000000..100644
--- a/content/docs/code-guidelines/index.html
+++ b/content/docs/code-guidelines/index.html
@@@ -1,566 -1,0 +1,626 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Coding Guidelines - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="Apache RocketMQ Coding Guidelines">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Coding Guidelines">
 +
 +
 +
 +
 +  <meta property="og:description" content="Apache RocketMQ Coding Guidelines">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Coding Guidelines">
 +  <meta name="twitter:description" content="Apache RocketMQ Coding Guidelines">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="active">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Coding Guidelines">
 +    <meta itemprop="description" content="Apache RocketMQ Coding Guidelines">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 30, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Coding Guidelines
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
 +  <li><a href="#code-template-for-idea" id="markdown-toc-code-template-for-idea">Code template for idea</a>    <ul>
 +      <li><a href="#import-code-style" id="markdown-toc-import-code-style">Import code style</a></li>
 +      <li><a href="#import-copyright" id="markdown-toc-import-copyright">Import copyright</a></li>
 +      <li><a href="#choose-apache-copyright" id="markdown-toc-choose-apache-copyright">Choose Apache copyright</a></li>
 +      <li><a href="#remove-author-javadoc-tag" id="markdown-toc-remove-author-javadoc-tag">Remove author javadoc tag</a></li>
 +    </ul>
 +  </li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h1 id="introduction">Introduction</h1>
 +<p>This document describes formatting rules and guidelines for software source code. Note that this document does not cover best programming practices or techniques. It is solely concentrating on source code formatting and conventions.</p>
 +
 +<p>Studies have shown that 80% of development time is spent on software maintenance which involves software source code understanding, refactoring and support. Established and enforced code formatting rules and guidelines improve source code readability, promote team code ownership, allow engineers understand new code more quickly and thorough as well as simplify maintenance.</p>
 +
 +<h1 id="code-template-for-idea">Code template for idea</h1>
 +<h2 id="import-code-style">Import code style</h2>
 +<p><img src="/assets/images/code_guidelines/codestyle-pre.png" alt="codestyle" /></p>
 +
 +<p><img src="/assets/images/code_guidelines/codestyle.png" alt="codestyle" /></p>
 +
 +<h2 id="import-copyright">Import copyright</h2>
 +<p><img src="/assets/images/code_guidelines/copyright.png" alt="copyright" /></p>
 +
 +<h2 id="choose-apache-copyright">Choose Apache copyright</h2>
 +<p><img src="/assets/images/code_guidelines/copyright-choose.png" alt="copyright-choose" /></p>
 +
 +<h2 id="remove-author-javadoc-tag">Remove author javadoc tag</h2>
 +<p><img src="/assets/images/code_guidelines/author-tag.png" alt="author-javadoc-tag" /></p>
 +
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-30">December 30, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Coding Guidelines /docs/code-guidelines/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/code-guidelines/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/code-guidelines/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/code-guidelines/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/pull-request/" class="pagination--pager" title="Best Practice in Pull Request
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/documentation/" class="pagination--pager" title="Documentation
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>


[02/16] incubator-rocketmq-site git commit: Updated a committer's photo on request.

Posted by yu...@apache.org.
Updated a committer's photo on request.


Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/commit/e8401371
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/tree/e8401371
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/diff/e8401371

Branch: refs/heads/asf-site
Commit: e8401371ab64e2400f5dd8ea0a0c87189cb4b2fa
Parents: 5eb2385
Author: shtykh_roman <rs...@yahoo.com>
Authored: Mon Apr 17 11:30:36 2017 +0900
Committer: shtykh_roman <rs...@yahoo.com>
Committed: Mon Apr 17 11:30:36 2017 +0900

----------------------------------------------------------------------
 _about/01-team.md               |   2 +-
 assets/images/about/rshtykh.png | Bin 0 -> 5591 bytes
 2 files changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/e8401371/_about/01-team.md
----------------------------------------------------------------------
diff --git a/_about/01-team.md b/_about/01-team.md
index 1425500..361585a 100644
--- a/_about/01-team.md
+++ b/_about/01-team.md
@@ -26,7 +26,7 @@ The following is a list of developers with commit privileges that have directly
 |![stevensche](/assets/images/about/stevenschew.png)|stevenschew|[@stevenschew](https://github.com/stevenschew)|stevenschew@apache.org |Committer| +8 |
 |![lollipop](/assets/images/about/lollipop.jpeg)|lollipop|[@lollipopjin](https://github.com/lollipopjin)|lollipop@apache.org |Committer| +8 |
 |![longdafeng](/assets/images/about/longdafeng.jpeg)|longda|[@longdafeng](https://github.com/longdafeng)|longda@apache.org |Committer| +8 |
-|![shroman](https://avatars2.githubusercontent.com/u/3435166?v=3&s=400)|shroman|[@shroman](https://github.com/shroman)|shroman@apache.org |Committer| +9 |
+|![shroman](/assets/images/about/rshtykh.png)|shroman|[@shroman](https://github.com/shroman)|shroman@apache.org |Committer| +9 |
 |![dongeforever](/assets/images/about/dongeforever.jpeg)|dongeforever|[@dongeforever](https://github.com/dongeforever)|dongeforever@apache.org |Committer| +8 |
 
 ### Top Contributors

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/e8401371/assets/images/about/rshtykh.png
----------------------------------------------------------------------
diff --git a/assets/images/about/rshtykh.png b/assets/images/about/rshtykh.png
new file mode 100644
index 0000000..bc48883
Binary files /dev/null and b/assets/images/about/rshtykh.png differ


[07/16] incubator-rocketmq-site git commit: Release at 2017.04.25

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/feed.xml
----------------------------------------------------------------------
diff --cc content/feed.xml
index 9065b4b,0000000..f393f83
mode 100644,000000..100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@@ -1,759 -1,0 +1,759 @@@
- <?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xml" href="/feed.xslt.xml"?><feed xmlns="http://www.w3.org/2005/Atom"><generator uri="http://jekyllrb.com" version="3.3.1">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2017-04-07T09:16:21+08:00</updated><id>//</id><title type="html">Apache RocketMQ</title><subtitle>The homepage of RocketMQ.</subtitle><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;&quot;/assets/images/rmq-logo.png&quot;, &quot;bio&quot;=&gt;&quot;A fast, low latency, reliable, scalable, distributed MOM.&quot;, &quot;location&quot;=&gt;&quot;Hangzhou, China&quot;, &quot;email&quot;=&gt;&quot;dev@rocketmq.incubator.apache.org&quot;, &quot;uri&quot;=&gt;&quot;http://incubator.staging.apache.org/projects/rocketmq.html&quot;, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &qu
 ot;facebook&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;github&quot;=&gt;&quot;apache/incubator-rocketmq&quot;, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;&quot;questions/tagged/rocketmq&quot;, &quot;steam&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;&quot;ApacheRocketMQ&quot;, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;quora&quot;=&gt;&quot;topic/RocketMQ&quot;}</name><email>dev@rocketmq.incubator.apache.org</email><uri>http://incubator.staging.apache.org/projects/rocketmq.html</uri></author><entry><title type="html">Launch The Second RocketMQ Code Marathon</title><link href="/activity/launch-rocketmq-code-marathon/" rel="alternate" type="text/html" title="Launch The Second RocketMQ C
 ode Marathon" /><published>2017-03-31T00:00:00+08:00</published><updated>2017-03-31T00:00:00+08:00</updated><id>/activity/launch-rocketmq-code-marathon</id><content type="html" xml:base="/activity/launch-rocketmq-code-marathon/">&lt;p&gt;&lt;img src=&quot;/assets/images/blog/banner.jpg&quot; alt=&quot;Banner&quot; /&gt;&lt;/p&gt;
++<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xml" href="/feed.xslt.xml"?><feed xmlns="http://www.w3.org/2005/Atom"><generator uri="http://jekyllrb.com" version="3.3.1">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2017-04-25T01:02:11+08:00</updated><id>//</id><title type="html">Apache RocketMQ</title><subtitle>The homepage of RocketMQ.</subtitle><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;&quot;/assets/images/rmq-logo.png&quot;, &quot;bio&quot;=&gt;&quot;A fast, low latency, reliable, scalable, distributed MOM.&quot;, &quot;location&quot;=&gt;&quot;Hangzhou, China&quot;, &quot;email&quot;=&gt;&quot;dev@rocketmq.incubator.apache.org&quot;, &quot;uri&quot;=&gt;&quot;http://incubator.staging.apache.org/projects/rocketmq.html&quot;, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &qu
 ot;facebook&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;github&quot;=&gt;&quot;apache/incubator-rocketmq&quot;, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;&quot;questions/tagged/rocketmq&quot;, &quot;steam&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;&quot;ApacheRocketMQ&quot;, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;quora&quot;=&gt;&quot;topic/RocketMQ&quot;}</name><email>dev@rocketmq.incubator.apache.org</email><uri>http://incubator.staging.apache.org/projects/rocketmq.html</uri></author><entry><title type="html">Launch The Second RocketMQ Code Marathon</title><link href="/activity/launch-rocketmq-code-marathon/" rel="alternate" type="text/html" title="Launch The Second RocketMQ C
 ode Marathon" /><published>2017-03-31T00:00:00+08:00</published><updated>2017-03-31T00:00:00+08:00</updated><id>/activity/launch-rocketmq-code-marathon</id><content type="html" xml:base="/activity/launch-rocketmq-code-marathon/">&lt;p&gt;&lt;img src=&quot;/assets/images/blog/banner.jpg&quot; alt=&quot;Banner&quot; /&gt;&lt;/p&gt;
 +&lt;h1 id=&quot;rocketmq-code-marathon-&quot;&gt;ROCKETMQ CODE MARATHON &lt;a href=&quot;/assets/attachment/launch-second-rocketmq-code-marathon.pdf&quot;&gt;&lt;i class=&quot;fa fa-link&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
 +&lt;h5 id=&quot;march-29th-2017&quot;&gt;March 29th 2017&lt;/h5&gt;
 +
 +&lt;h2 id=&quot;objective&quot;&gt;Objective:&lt;/h2&gt;
 +&lt;ol&gt;
 +  &lt;li&gt;Foster Community&lt;/li&gt;
 +  &lt;li&gt;Prosper Ecology&lt;/li&gt;
 +  &lt;li&gt;Incubate Committers&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;h2 id=&quot;output&quot;&gt;Output:&lt;/h2&gt;
 +&lt;ol&gt;
 +  &lt;li&gt;1~3 Milestone Releases Per Project&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;h2 id=&quot;rewards&quot;&gt;Rewards:&lt;/h2&gt;
 +&lt;ol&gt;
-   &lt;li&gt;Two Potential Committer Candidates Per Project&lt;/li&gt;
-   &lt;li&gt;Free Offers to Active Participants for On-Site Meetup&lt;/li&gt;
++  &lt;li&gt;Two Potential Committers Candidates Per Project&lt;/li&gt;
++  &lt;li&gt;Free Offers to Active Participants for On-Site Meetup
++    &lt;h2 id=&quot;projects&quot;&gt;PROJECTS&lt;/h2&gt;
++  &lt;/li&gt;
 +&lt;/ol&gt;
 +
- &lt;h2 id=&quot;projects&quot;&gt;PROJECTS&lt;/h2&gt;
- 
 +&lt;h3 id=&quot;rocketmq-big-data&quot;&gt;RocketMQ-Big Data&lt;/h3&gt;
 +&lt;ol&gt;
 +  &lt;li&gt;Integration of big data analysis framework&lt;/li&gt;
 +  &lt;li&gt;Rich Documentation and Good Test Cases Coverage&lt;/li&gt;
 +  &lt;li&gt;Apache Beam preferred&lt;/li&gt;
 +  &lt;li&gt;Join by Creating Pull Requests against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals&quot;&gt;RocketMQ Beam Repository&lt;/a&gt;&lt;/li&gt;
 +  &lt;li&gt;Join by Creating Pull Requests against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals&quot;&gt;RocketMQ Flink Repository&lt;/a&gt;&lt;/li&gt;
 +  &lt;li&gt;Join by Existing Pull Request against &lt;a href=&quot;https://github.com/apache/storm/pull/2024&quot;&gt;RocketMQ Storm Repository&lt;/a&gt;&lt;/li&gt;
 +  &lt;li&gt;Join by Existing Pull Request against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals/pull/5&quot;&gt;RocketMQ Spark Repository&lt;/a&gt;&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;h3 id=&quot;rocketmq-client-sdk&quot;&gt;RocketMQ-Client SDK&lt;/h3&gt;
 +&lt;ol&gt;
 +  &lt;li&gt;Development of RocketMQ Client&lt;/li&gt;
 +  &lt;li&gt;Rich Documentation and Good Test Cases Coverage&lt;/li&gt;
 +  &lt;li&gt;Go preferred&lt;/li&gt;
 +  &lt;li&gt;Join by Creating Pull Requests against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals&quot;&gt;RocketMQ Go Repository&lt;/a&gt;&lt;/li&gt;
 +  &lt;li&gt;Join by Creating Pull Requests against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals&quot;&gt;RocketMQ .Net Repository&lt;/a&gt;&lt;/li&gt;
 +  &lt;li&gt;Join by Creating Pull Requests against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals&quot;&gt;RocketMQ PHP Repository&lt;/a&gt;&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;h3 id=&quot;rocketmq-data-replication&quot;&gt;RocketMQ-Data Replication&lt;/h3&gt;
 +&lt;ol&gt;
 +  &lt;li&gt;Implement Data Replication from Database&lt;/li&gt;
 +  &lt;li&gt;Rich Documentation and Good Test Cases Coverage&lt;/li&gt;
 +  &lt;li&gt;MySQL preferred&lt;/li&gt;
 +  &lt;li&gt;Join by Creating Pull Requests against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals&quot;&gt;RocketMQ MySQL Repository&lt;/a&gt;&lt;/li&gt;
 +  &lt;li&gt;Join by Creating Pull Requests against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals&quot;&gt;RocketMQ Redis Repository&lt;/a&gt;&lt;/li&gt;
 +  &lt;li&gt;Join by Creating Pull Requests against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals&quot;&gt;RocketMQ MongoDB Repository&lt;/a&gt;&lt;/li&gt;
 +&lt;/ol&gt;</content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;&quot;/assets/images/rmq-logo.png&quot;, &quot;bio&quot;=&gt;&quot;A fast, low latency, reliable, scalable, distributed MOM.&quot;, &quot;location&quot;=&gt;&quot;Hangzhou, China&quot;, &quot;email&quot;=&gt;&quot;dev@rocketmq.incubator.apache.org&quot;, &quot;uri&quot;=&gt;&quot;http://incubator.staging.apache.org/projects/rocketmq.html&quot;, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;github&quot;=&gt;&quot;apache/incubator-rocketmq&quot;, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;&quot;questions/tagged/rocketmq&quot;, &quot;steam&quot;=&gt;nil, &quot;tumblr
 &quot;=&gt;nil, &quot;twitter&quot;=&gt;&quot;ApacheRocketMQ&quot;, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;quora&quot;=&gt;&quot;topic/RocketMQ&quot;}</name><email>dev@rocketmq.incubator.apache.org</email><uri>http://incubator.staging.apache.org/projects/rocketmq.html</uri></author><category term="Activity" /><category term="Code" /><category term="Marathon" /><summary type="html">ROCKETMQ CODE MARATHON 
 +March 29th 2017</summary></entry><entry><title type="html">The Correct Posture Of Submitting Pull Request</title><link href="/the-correct-posture-of-submitting-pull-request/" rel="alternate" type="text/html" title="The Correct Posture Of Submitting Pull Request" /><published>2017-03-24T00:00:00+08:00</published><updated>2017-03-24T00:00:00+08:00</updated><id>/the-correct-posture-of-submitting-pull-request</id><content type="html" xml:base="/the-correct-posture-of-submitting-pull-request/">&lt;h2 id=&quot;the-correct-posture-of-submitting-a-pr&quot;&gt;The correct posture of submitting a PR&lt;/h2&gt;
 +
 +&lt;h3 id=&quot;prepare-the-repo&quot;&gt;Prepare the repo&lt;/h3&gt;
 +&lt;ul&gt;
 +  &lt;li&gt;fork the apache repo on Github
 +&lt;img src=&quot;http://img3.tbcdn.cn/5476e8b07b923/TB17G5kQpXXXXcUapXXXXXXXXXX&quot; alt=&quot;&quot; /&gt;
 +Click the \u201cfork\u201d button, a forked repo will be added to your repo list.&lt;/li&gt;
 +  &lt;li&gt;clone the forked repo, here take \u201cfoo\u201d as example
 +    &lt;blockquote&gt;
 +      &lt;p&gt;git clone  https://github.com/foo/incubator-rocketmq.git&lt;/p&gt;
 +    &lt;/blockquote&gt;
 +  &lt;/li&gt;
 +  &lt;li&gt;add apache remote repo
 +    &lt;blockquote&gt;
 +      &lt;p&gt;git remote add apache https://github.com/apache/incubator-rocketmq.git&lt;/p&gt;
 +    &lt;/blockquote&gt;
 +  &lt;/li&gt;
 +  &lt;li&gt;show the remote repos
 +    &lt;blockquote&gt;
 +      &lt;p&gt;git remote -v&lt;br /&gt;
 +apache	 https://github.com/apache/incubator-rocketmq.git (fetch)&lt;br /&gt;
 +apache	 https://github.com/apache/incubator-rocketmq.git (push)&lt;br /&gt;
 +origin	 https://github.com/foo/incubator-rocketmq.git (fetch)&lt;br /&gt;
 +origin	 https://github.com/foo/incubator-rocketmq.git (push)&lt;/p&gt;
 +    &lt;/blockquote&gt;
 +  &lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: https://github.com/apache/incubator-rocketmq.git is a read-only repo, mirrored from git://git.apache.org/incubator-rocketmq.git. For submitting PR, fork this read-only repo on Github is OK.&lt;/p&gt;
 +
 +&lt;h3 id=&quot;use-a-new-branch-to-write-your-own-code-and-commit&quot;&gt;Use a new branch to write your own code and commit&lt;/h3&gt;
 +&lt;p&gt;you\u2019d better use a new branch for each PR, for it is convenient to manage your code and commits&lt;/p&gt;
 +&lt;blockquote&gt;
 +  &lt;p&gt;git checkout -b new_pr&lt;br /&gt;
 +//do something and commit&lt;/p&gt;
 +&lt;/blockquote&gt;
 +
 +&lt;h3 id=&quot;important-rebase-instead-of-merge&quot;&gt;[Important] Rebase instead of merge&lt;/h3&gt;
 +&lt;blockquote&gt;
 +  &lt;p&gt;git fetch apache&lt;br /&gt;
 +git rebase apache/develop&lt;/p&gt;
 +&lt;/blockquote&gt;
 +
 +&lt;p&gt;Note: if using merge, it will dirty the commits&lt;/p&gt;
 +
 +&lt;p&gt;the difference between rebase and merge can refer to:&lt;br /&gt;
 +&lt;a href=&quot;https://www.atlassian.com/git/tutorials/merging-vs-rebasing&quot;&gt;https://www.atlassian.com/git/tutorials/merging-vs-rebasing&lt;/a&gt;&lt;/p&gt;
 +
 +&lt;h3 id=&quot;suggestedsquash-the-commits&quot;&gt;[Suggested]Squash the commits&lt;/h3&gt;
 +&lt;p&gt;you can code and commit as usual. But when you think it is time to submit a PR, it is better to squash your commits into single one, for that others can easily identify your PR from the history commits.
 +you can squash as follows:&lt;/p&gt;
 +&lt;blockquote&gt;
 +  &lt;p&gt;gt reset &amp;lt;the latest commit that dose not belong to you PR&amp;gt;&lt;br /&gt;
 +git add \u2013all&lt;br /&gt;
 +git commit -m \u201cattach the issue or jira\u201d&lt;br /&gt;
 +git push (if the commits have been already pushed to your remote repo, git push will fail , use git push -f instead)&lt;/p&gt;
 +&lt;/blockquote&gt;
 +
 +&lt;p&gt;For example:&lt;/p&gt;
 +&lt;blockquote&gt;
 +  &lt;p&gt;git log&lt;/p&gt;
 +&lt;/blockquote&gt;
 +
 +&lt;p&gt;&lt;img src=&quot;https://lh3.googleusercontent.com/-xYoltD_ZDhE/WNTONuq58WI/AAAAAAAAABo/zWZdGVxNVa8/I/14864352604541.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
 +
 +&lt;blockquote&gt;
 +  &lt;p&gt;git resset b4108d2d9d3b1522e45ac5e7ea37106f2135bfa0 &lt;br /&gt;
 +git commit -m \u2018Add batch feature\u2019&lt;br /&gt;
 +git log&lt;/p&gt;
 +&lt;/blockquote&gt;
 +
 +&lt;p&gt;&lt;img src=&quot;https://lh3.googleusercontent.com/-Pe_xYIiPAGE/WNTOOHEUd1I/AAAAAAAAABs/VfuT_wBQ5QI/I/14864353798102.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
 +&lt;blockquote&gt;
 +  &lt;p&gt;git push&lt;/p&gt;
 +&lt;/blockquote&gt;
 +
 +&lt;h3 id=&quot;attach-jira-or-issue&quot;&gt;Attach jira or issue&lt;/h3&gt;
 +&lt;p&gt;For now, we have finished the preparations of a PR. It is time to create it. For apache projects, we could attach the jira issue using specific title like \u201c[XXX] add something\u201d, such as \u201c[ROCKETMQ-80] Add batch feature\u201d, the \u201cXXX\u201d represents the the name of the jira issue.
 +you could refer to:&lt;/p&gt;
 +
 +&lt;p&gt;&lt;a href=&quot;https://github.com/apache/incubator-rocketmq/pull/53&quot;&gt;https://github.com/apache/incubator-rocketmq/pull/53&lt;/a&gt;&lt;/p&gt;</content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;&quot;/assets/images/rmq-logo.png&quot;, &quot;bio&quot;=&gt;&quot;A fast, low latency, reliable, scalable, distributed MOM.&quot;, &quot;location&quot;=&gt;&quot;Hangzhou, China&quot;, &quot;email&quot;=&gt;&quot;dev@rocketmq.incubator.apache.org&quot;, &quot;uri&quot;=&gt;&quot;http://incubator.staging.apache.org/projects/rocketmq.html&quot;, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;github&quot;=&gt;&quot;apache/incubator-rocketmq&quot;, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;pinterest&quot;=
 &gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;&quot;questions/tagged/rocketmq&quot;, &quot;steam&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;&quot;ApacheRocketMQ&quot;, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;quora&quot;=&gt;&quot;topic/RocketMQ&quot;}</name><email>dev@rocketmq.incubator.apache.org</email><uri>http://incubator.staging.apache.org/projects/rocketmq.html</uri></author><summary type="html">The correct posture of submitting a PR</summary></entry><entry><title type="html">Four Methods to Feed Name Server Address List</title><link href="/rocketmq/four-methods-to-feed-name-server-address-list/" rel="alternate" type="text/html" title="Four Methods to Feed Name Server Address List" /><published>2017-02-10T00:00:00+08:00</published><updated>2017-02-10T00:00:00+08:00</updated><id>/rocketmq/four-methods-to-feed-name-server-address-list</id><content type="html
 " xml:base="/rocketmq/four-methods-to-feed-name-server-address-list/">&lt;p&gt;In Apache RocketMQ, name servers are designed to coordinate each component of the distributed system
 +and fulfill much of this responsibility through managing topic route information.&lt;/p&gt;
 +
 +&lt;p&gt;The management, roughly speaking, consists two parts:&lt;/p&gt;
 +&lt;ul&gt;
 +  &lt;li&gt;Brokers periodically renew meta data, including topics they have, which are kept in every name servers.&lt;/li&gt;
 +  &lt;li&gt;Name servers are serving clients, including producers, consumers and command line clients with the latest routing information.&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;p&gt;Therefore, before launching brokers and clients, we need to tell them how to reach name servers by feeding them with a name server address list.
 +In Apache RocketMQ, this can be done in four ways.&lt;/p&gt;
 +
 +&lt;ol&gt;
 +  &lt;li&gt;
 +    &lt;p&gt;Programmatic Way&lt;/p&gt;
 +
 +    &lt;p&gt;For broker, we may specify &lt;code class=&quot;highlighter-rouge&quot;&gt;namesrvAddr=name-server-ip1:port;name-server-ip2:port&lt;/code&gt; in broker configuration file.&lt;/p&gt;
 +
 +    &lt;p&gt;For producers and consumers, we may feed name server address list to them as follows:&lt;/p&gt;
 +
 +    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;
 +DefaultMQProducer producer = new DefaultMQProducer(&quot;please_rename_unique_group_name&quot;);
 +producer.setNamesrvAddr(&quot;name-server1-ip:port;name-server2-ip:port&quot;);&lt;/code&gt;&lt;/p&gt;
 +
 +    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;
 +DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(&quot;please_rename_unique_group_name&quot;);
 +consumer.setNamesrvAddr(&quot;name-server1-ip:port;name-server2-ip:port&quot;);&lt;/code&gt;&lt;/p&gt;
 +
 +    &lt;p&gt;If you use admin command line from shell, you may specify this way:
 +&lt;code class=&quot;highlighter-rouge&quot;&gt;sh mqadmin command-name -n name-server-ip1:port;name-server-ip2:port -X OTHER-OPTION&lt;/code&gt;&lt;/p&gt;
 +
 +    &lt;p&gt;a simple example is:
 +&lt;code class=&quot;highlighter-rouge&quot;&gt;sh mqadmin -n localhost:9876 clusterList&lt;/code&gt;
 +assuming to query cluster info on the name server node.&lt;/p&gt;
 +
 +    &lt;p&gt;If integrating admin tool into your own dashboard, you may
 +&lt;code class=&quot;highlighter-rouge&quot;&gt;DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt(&quot;please_rename_unique_group_name&quot;);
 + defaultMQAdminExt.setNamesrvAddr(&quot;name-server1-ip:port;name-server2-ip:port&quot;);&lt;/code&gt;&lt;/p&gt;
 +  &lt;/li&gt;
 +  &lt;li&gt;
 +    &lt;p&gt;Java Options&lt;/p&gt;
 +
 +    &lt;p&gt;Name server address list may also be fed to your application through specifying the sequel java option 
 + &lt;code class=&quot;highlighter-rouge&quot;&gt;rocketmq.namesrv.addr&lt;/code&gt; before launching.&lt;/p&gt;
 +  &lt;/li&gt;
 +  &lt;li&gt;
 +    &lt;p&gt;Environment Variable&lt;/p&gt;
 +
 +    &lt;p&gt;You can export &lt;code class=&quot;highlighter-rouge&quot;&gt;NAMESRV_ADDR&lt;/code&gt; environment variable. Brokers and clients will examine and use its value if set.&lt;/p&gt;
 +  &lt;/li&gt;
 +  &lt;li&gt;
 +    &lt;p&gt;HTTP Endpoint&lt;/p&gt;
 +
 +    &lt;p&gt;If you do not specify name server address list using previously mentioned methods, Apache RocketMQ will access
 +  the following HTTP end point to acquire and update name server address list every two minutes with initial delay of
 +  ten seconds.&lt;/p&gt;
 +
 +    &lt;p&gt;On default, the end point is:&lt;/p&gt;
 +
 +    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;http://jmenv.tbsite.net:8080/rocketmq/nsaddr&lt;/code&gt;&lt;/p&gt;
 +
 +    &lt;p&gt;You may override &lt;code class=&quot;highlighter-rouge&quot;&gt;jmenv.tbsite.net&lt;/code&gt; by this java option: &lt;code class=&quot;highlighter-rouge&quot;&gt;rocketmq.namesrv.domain&lt;/code&gt;,
 + You may also override &lt;code class=&quot;highlighter-rouge&quot;&gt;nsaddr&lt;/code&gt; part by this java option: &lt;code class=&quot;highlighter-rouge&quot;&gt;rocketmq.namesrv.domain.subgroup&lt;/code&gt;&lt;/p&gt;
 +
 +    &lt;p&gt;If you are running Apache RocketMQ in production, this method is recommended because it gives you maximum flexibility
 +  \u2013 you can dynamically add or remove name server nodes without necessity of rebooting your brokers and clients 
 +  according to your name servers\u2019 system load.&lt;/p&gt;
 +  &lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;
 +    &lt;p&gt;Priority&lt;/p&gt;
 +
 +    &lt;p&gt;Methods introduced first take precedence over the latter, namely, &lt;br /&gt;
 + &lt;code class=&quot;highlighter-rouge&quot;&gt;Programmatic Way &amp;gt; Java Options &amp;gt; Environment Variable &amp;gt; HTTP Endpoint&lt;/code&gt;&lt;/p&gt;
 +  &lt;/li&gt;
 +&lt;/ul&gt;</content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;&quot;/assets/images/rmq-logo.png&quot;, &quot;bio&quot;=&gt;&quot;A fast, low latency, reliable, scalable, distributed MOM.&quot;, &quot;location&quot;=&gt;&quot;Hangzhou, China&quot;, &quot;email&quot;=&gt;&quot;dev@rocketmq.incubator.apache.org&quot;, &quot;uri&quot;=&gt;&quot;http://incubator.staging.apache.org/projects/rocketmq.html&quot;, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;github&quot;=&gt;&quot;apache/incubator-rocketmq&quot;, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;&quot;questions/tagged/rocketmq&quot;, &quot;steam&quot;=&gt;nil, &quot;tumblr
 &quot;=&gt;nil, &quot;twitter&quot;=&gt;&quot;ApacheRocketMQ&quot;, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;quora&quot;=&gt;&quot;topic/RocketMQ&quot;}</name><email>dev@rocketmq.incubator.apache.org</email><uri>http://incubator.staging.apache.org/projects/rocketmq.html</uri></author><category term="RocketMQ" /><category term="Name Server" /><summary type="html">In Apache RocketMQ, name servers are designed to coordinate each component of the distributed system
 +and fulfill much of this responsibility through managing topic route information.</summary></entry><entry><title type="html">Release Notes - Apache RocketMQ - Version 4.0.0-incubating</title><link href="/release_notes/release-notes-4.0.0-incubating/" rel="alternate" type="text/html" title="Release Notes - Apache RocketMQ - Version 4.0.0-incubating" /><published>2017-01-24T00:00:00+08:00</published><updated>2017-01-24T00:00:00+08:00</updated><id>/release_notes/release-notes-4.0.0-incubating</id><content type="html" xml:base="/release_notes/release-notes-4.0.0-incubating/">&lt;p&gt;Below is a summary of the JIRA issues addressed in the 4.0.0-incubating release of RocketMQ. For full documentation of the release, a guide to get started, please refer to &lt;a href=&quot;/docs/quick-start/&quot;&gt;Quick Start&lt;/a&gt;.&lt;/p&gt;
 +
 +&lt;h2&gt; Download the 4.0.0-incubating release
 +&lt;/h2&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;Source: &lt;a href=&quot;https://www.apache.org/dyn/closer.cgi?path=incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-source-release.zip&quot;&gt;rocketmq-all-4.0.0-incubating-source-release.zip&lt;/a&gt; [&lt;a href=&quot;https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-source-release.zip.asc&quot;&gt;PGP&lt;/a&gt;] [&lt;a href=&quot;https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-source-release.zip.md5&quot;&gt;MD5&lt;/a&gt;] [&lt;a href=&quot;https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-source-release.zip.sha1&quot;&gt;SHA1&lt;/a&gt;]&lt;/li&gt;
 +  &lt;li&gt;Binary: &lt;a href=&quot;https://www.apache.org/dyn/closer.cgi?path=incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-bin-release.zip&quot;&gt;rocketmq-all-4.0.0-incubating-bin-release.zip&lt;/a&gt; [&lt;a href=&quot;https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-bin-release.zip.asc&quot;&gt;PGP&lt;/a&gt;] [&lt;a href=&quot;https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-bin-release.zip.md5&quot;&gt;MD5&lt;/a&gt;] [&lt;a href=&quot;https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-bin-release.zip.sha1&quot;&gt;SHA1&lt;/a&gt;]&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;h2&gt; Bug
 +&lt;/h2&gt;
 +&lt;ul&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-2&quot;&gt;ROCKETMQ-2&lt;/a&gt;] - Broker tests fail with &amp;quot;Address
 +        already in use&amp;quot;
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-5&quot;&gt;ROCKETMQ-5&lt;/a&gt;] - Avoid creating directories in
 +        UtilAll#getDiskPartitionSpaceUsedPercent()
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-19&quot;&gt;ROCKETMQ-19&lt;/a&gt;] - Thread-unsafe in
 +        MQAdminImpl#queryMessage
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-22&quot;&gt;ROCKETMQ-22&lt;/a&gt;] - new funciton &amp;#39;printWaterMark&amp;#39;
 +        in version 3.5.8(4.0.0) will cause a ClassCastException
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-25&quot;&gt;ROCKETMQ-25&lt;/a&gt;] - Query Msg by key: Possible
 +        concurrent access to LinkedList
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-30&quot;&gt;ROCKETMQ-30&lt;/a&gt;] - Message Filter example has
 +        incorrect method signature
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-31&quot;&gt;ROCKETMQ-31&lt;/a&gt;] - Deletion needed for
 +        `$HOME/rmq_bk_gc.log` in `bin/mqbroker`
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-33&quot;&gt;ROCKETMQ-33&lt;/a&gt;] - CPU Occupy 100%
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-34&quot;&gt;ROCKETMQ-34&lt;/a&gt;] - Potential NPE in
 +        NettyConnetManageHandler#connect
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-35&quot;&gt;ROCKETMQ-35&lt;/a&gt;] - Consumer client can\u2019t persist
 +        consume offset table to Broker
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-45&quot;&gt;ROCKETMQ-45&lt;/a&gt;] - Delete consume queue hang file
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-47&quot;&gt;ROCKETMQ-47&lt;/a&gt;] - Broker updates NameServer
 +        address list on startup twice
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-59&quot;&gt;ROCKETMQ-59&lt;/a&gt;] - Charset misusage in
 +        RocketMQSerializable
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-64&quot;&gt;ROCKETMQ-64&lt;/a&gt;] - Remove duplication code line in
 +        BrokerOuterAPI.registerBroker method
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-70&quot;&gt;ROCKETMQ-70&lt;/a&gt;] - Duplicate methods in
 +        NettyRemotingClient
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-74&quot;&gt;ROCKETMQ-74&lt;/a&gt;] - DataVersion equals not working
 +        as expected.
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-83&quot;&gt;ROCKETMQ-83&lt;/a&gt;] - Fail in quickstart-sample
 +    &lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;h2&gt; Improvement
 +&lt;/h2&gt;
 +&lt;ul&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-8&quot;&gt;ROCKETMQ-8&lt;/a&gt;] - Standardize build script using
 +        maven wrapper
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-11&quot;&gt;ROCKETMQ-11&lt;/a&gt;] - Improve concision - Reuse local
 +        variable &amp;#39;brokerAddrs&amp;#39; in RouteInfoManager.getSystemTopicList method
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-14&quot;&gt;ROCKETMQ-14&lt;/a&gt;] - Remoting invoke callback shoule
 +        be invoked in an executor rather than in current thread.
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-16&quot;&gt;ROCKETMQ-16&lt;/a&gt;] - Improve the codes of setting
 +        topic.json&amp;#39;s and subscriptionGroup.json&amp;#39;s path
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-18&quot;&gt;ROCKETMQ-18&lt;/a&gt;] - Repackage com.alibaba to
 +        org.apache and change maven coordinate
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-20&quot;&gt;ROCKETMQ-20&lt;/a&gt;] - Default &amp;#39;consumeFromWhere&amp;#39;
 +        is inconsist with example&amp;#39;s
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-29&quot;&gt;ROCKETMQ-29&lt;/a&gt;] -
 +        org.apache.rocketmq.common.help.FAQUrl refers to docs in Chinese
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-32&quot;&gt;ROCKETMQ-32&lt;/a&gt;] - Improve concision - Reuse local
 +        variable &amp;#39;brokerAddrs&amp;#39; in RouteInfoManager.getSystemTopicList method
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-37&quot;&gt;ROCKETMQ-37&lt;/a&gt;] - Log output information is not
 +        accurate
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-43&quot;&gt;ROCKETMQ-43&lt;/a&gt;] - code style file didn&amp;#39;t match
 +        check-style in typecast
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-50&quot;&gt;ROCKETMQ-50&lt;/a&gt;] - Polish unit tests for RocketMQ
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-60&quot;&gt;ROCKETMQ-60&lt;/a&gt;] - Checklist review for
 +        4.0.0-incubating release
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-69&quot;&gt;ROCKETMQ-69&lt;/a&gt;] - Add link to RocketMQ web page
 +        into README.md
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-85&quot;&gt;ROCKETMQ-85&lt;/a&gt;] - Polish README file and remove
 +        all the 3rd party links in it.
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-87&quot;&gt;ROCKETMQ-87&lt;/a&gt;] - Polish the LICENSE and NOTICE
 +        files to match all the dependencies
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-1&quot;&gt;ROCKETMQ-1&lt;/a&gt;] - Update build and clean up ip for
 +        4.0.0-incubating
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-38&quot;&gt;ROCKETMQ-38&lt;/a&gt;] - Polish unit tests for
 +        rocketmq-remoting
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-51&quot;&gt;ROCKETMQ-51&lt;/a&gt;] - Polish unit tests for
 +        rocketmq-broker
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-52&quot;&gt;ROCKETMQ-52&lt;/a&gt;] - Polish unit tests for
 +        rocketmq-client
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-53&quot;&gt;ROCKETMQ-53&lt;/a&gt;] - Polish unit tests for
 +        rocketmq-commons
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-54&quot;&gt;ROCKETMQ-54&lt;/a&gt;] - Polish unit tests for
 +        rocketmq-namesrv
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-56&quot;&gt;ROCKETMQ-56&lt;/a&gt;] - Polish unit tests for
 +        rocketmq-store
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-57&quot;&gt;ROCKETMQ-57&lt;/a&gt;] - Polish unit tests for
 +        rocketmq-tools
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-58&quot;&gt;ROCKETMQ-58&lt;/a&gt;] - Add integration test for
 +        RocketMQ
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-62&quot;&gt;ROCKETMQ-62&lt;/a&gt;] - Polish Maven assembly release
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-3&quot;&gt;ROCKETMQ-3&lt;/a&gt;] - Clean up the unit test of rocketmq
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-13&quot;&gt;ROCKETMQ-13&lt;/a&gt;] - Wrong log level for
 +        AcceptSocketService termination
 +    &lt;/li&gt;
 +    &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-9&quot;&gt;ROCKETMQ-9&lt;/a&gt;] - Errors in rocketmq-store module
 +    &lt;/li&gt;
 +&lt;/ul&gt;</content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;&quot;/assets/images/rmq-logo.png&quot;, &quot;bio&quot;=&gt;&quot;A fast, low latency, reliable, scalable, distributed MOM.&quot;, &quot;location&quot;=&gt;&quot;Hangzhou, China&quot;, &quot;email&quot;=&gt;&quot;dev@rocketmq.incubator.apache.org&quot;, &quot;uri&quot;=&gt;&quot;http://incubator.staging.apache.org/projects/rocketmq.html&quot;, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;github&quot;=&gt;&quot;apache/incubator-rocketmq&quot;, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;&quot;questions/tagged/rocketmq&quot;, &quot;steam&quot;=&gt;nil, &quot;tumblr
 &quot;=&gt;nil, &quot;twitter&quot;=&gt;&quot;ApacheRocketMQ&quot;, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;quora&quot;=&gt;&quot;topic/RocketMQ&quot;}</name><email>dev@rocketmq.incubator.apache.org</email><uri>http://incubator.staging.apache.org/projects/rocketmq.html</uri></author><category term="Release_Notes" /><category term="RocketMQ" /><category term="Version" /><summary type="html">Below is a summary of the JIRA issues addressed in the 4.0.0-incubating release of RocketMQ. For full documentation of the release, a guide to get started, please refer to Quick Start.</summary></entry><entry><title type="html">Launch RocketMQ Code Marathon</title><link href="/activity/launch-rocketmq-code-marathon/" rel="alternate" type="text/html" title="Launch RocketMQ Code Marathon" /><published>2017-01-05T00:00:00+08:00</published><updated>2017-01-05T00:00:00+08:00</updated><id>/activity/launch-rocketmq-code-marathon</i
 d><content type="html" xml:base="/activity/launch-rocketmq-code-marathon/">&lt;p&gt;&lt;img src=&quot;/assets/images/blog/banner.jpg&quot; alt=&quot;Banner&quot; /&gt;&lt;/p&gt;
 +&lt;h1 id=&quot;rocketmq-code-marathon-&quot;&gt;ROCKETMQ CODE MARATHON &lt;a href=&quot;/assets/attachment/launch-rocketmq-code-marathon.pdf&quot;&gt;&lt;i class=&quot;fa fa-link&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
 +&lt;h5 id=&quot;january-5th-2017&quot;&gt;January 5th 2017&lt;/h5&gt;
 +
 +&lt;h2 id=&quot;objective&quot;&gt;Objective:&lt;/h2&gt;
 +&lt;ol&gt;
 +  &lt;li&gt;Foster Community&lt;/li&gt;
 +  &lt;li&gt;Prosper Ecology&lt;/li&gt;
 +  &lt;li&gt;Incubate Committers&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;h2 id=&quot;output&quot;&gt;Output:&lt;/h2&gt;
 +&lt;ol&gt;
 +  &lt;li&gt;1~3 Milestone Releases Per Project&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;h2 id=&quot;rewards&quot;&gt;Rewards:&lt;/h2&gt;
 +&lt;ol&gt;
 +  &lt;li&gt;Two Potential Committers Per Project&lt;/li&gt;
 +  &lt;li&gt;Free Offers to Active Participants for On-Site Meetup&lt;/li&gt;
 +  &lt;li&gt;PMC Memberships for Qualified Committers&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;h2 id=&quot;projects&quot;&gt;PROJECTS&lt;/h2&gt;
 +
 +&lt;h3 id=&quot;rocketmq-console&quot;&gt;RocketMQ-Console&lt;/h3&gt;
 +&lt;ol&gt;
 +  &lt;li&gt;Brand New UI&lt;/li&gt;
 +  &lt;li&gt;I18n Support&lt;/li&gt;
 +  &lt;li&gt;&lt;a href=&quot;https://projects.spring.io/spring-boot/&quot;&gt;Spring Boot&lt;/a&gt; + &lt;a href=&quot;http://getbootstrap.com/&quot;&gt;Bootstrap&lt;/a&gt; Recommended&lt;/li&gt;
 +  &lt;li&gt;Join by Creating Pull Requests against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals/tree/master/rocketmq-console&quot;&gt;RocketMQ Console Repository&lt;/a&gt;&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;h3 id=&quot;rocketmq-jms&quot;&gt;RocketMQ-JMS&lt;/h3&gt;
 +&lt;ol&gt;
 +  &lt;li&gt;Supporting JMS 2.0 Protocol&lt;/li&gt;
 +  &lt;li&gt;Rich Documentation and Good Test Cases Coverage&lt;/li&gt;
 +  &lt;li&gt;Join by Creating Pull Requests against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals/tree/master/rocketmq-jms&quot;&gt;RocketMQ JMS Repository&lt;/a&gt;&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;h3 id=&quot;rocketmq-flume&quot;&gt;RocketMQ-Flume&lt;/h3&gt;
 +&lt;ol&gt;
 +  &lt;li&gt;Supporting Latest &lt;a href=&quot;http://flume.apache.org/&quot;&gt;Flume&lt;/a&gt;&lt;/li&gt;
 +  &lt;li&gt;Rich Documentation and Good Test Cases Coverage&lt;/li&gt;
 +  &lt;li&gt;Join by Creating Pull Requests against &lt;a href=&quot;https://github.com/apache/incubator-rocketmq-externals/tree/master/rocketmq-flume&quot;&gt;RocketMQ Flume Repository&lt;/a&gt;&lt;/li&gt;
 +&lt;/ol&gt;</content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;&quot;/assets/images/rmq-logo.png&quot;, &quot;bio&quot;=&gt;&quot;A fast, low latency, reliable, scalable, distributed MOM.&quot;, &quot;location&quot;=&gt;&quot;Hangzhou, China&quot;, &quot;email&quot;=&gt;&quot;dev@rocketmq.incubator.apache.org&quot;, &quot;uri&quot;=&gt;&quot;http://incubator.staging.apache.org/projects/rocketmq.html&quot;, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;github&quot;=&gt;&quot;apache/incubator-rocketmq&quot;, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;&quot;questions/tagged/rocketmq&quot;, &quot;steam&quot;=&gt;nil, &quot;tumblr
 &quot;=&gt;nil, &quot;twitter&quot;=&gt;&quot;ApacheRocketMQ&quot;, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;quora&quot;=&gt;&quot;topic/RocketMQ&quot;}</name><email>dev@rocketmq.incubator.apache.org</email><uri>http://incubator.staging.apache.org/projects/rocketmq.html</uri></author><category term="Activity" /><category term="Code" /><category term="Marathon" /><summary type="html">ROCKETMQ CODE MARATHON 
 +January 5th 2017</summary></entry><entry><title type="html">Mastering Component Compatible Dependency</title><link href="/maven/mastering-component-compatible-dependency/" rel="alternate" type="text/html" title="Mastering Component Compatible Dependency" /><published>2016-12-23T00:00:00+08:00</published><updated>2016-12-23T00:00:00+08:00</updated><id>/maven/mastering-component-compatible-dependency</id><content type="html" xml:base="/maven/mastering-component-compatible-dependency/">&lt;p&gt;This article mainly includes three parts.at first,I will introduce compatibility principle(more details see &lt;a href=&quot;http://blog.csdn.net/fengjia10/article/details/7799227&quot;&gt;here&lt;/a&gt;) briefly.followed by a detailed elaborating about Java component compatible dependency,including the interface-oriented programming,single component signature protection,single component compatibility protection and multi-component compatibility compile time checking.Finally is the review and p
 rospect,especially about &lt;strong&gt;Dependency Mediator&lt;/strong&gt; project.&lt;/p&gt;
 +
 +&lt;aside class=&quot;sidebar__right&quot;&gt;
 +&lt;nav class=&quot;toc&quot;&gt;
 +    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-file-text&quot;&gt;&lt;/i&gt; On This Page&lt;/h4&gt;&lt;/header&gt;
 +&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
 +  &lt;li&gt;&lt;a href=&quot;#compatibility&quot; id=&quot;markdown-toc-compatibility&quot;&gt;Compatibility&lt;/a&gt;&lt;/li&gt;
 +  &lt;li&gt;&lt;a href=&quot;#component-compatible-dependency&quot; id=&quot;markdown-toc-component-compatible-dependency&quot;&gt;Component Compatible Dependency&lt;/a&gt;    &lt;ul&gt;
 +      &lt;li&gt;&lt;a href=&quot;#interface-oriented-programming&quot; id=&quot;markdown-toc-interface-oriented-programming&quot;&gt;Interface-oriented programming&lt;/a&gt;&lt;/li&gt;
 +      &lt;li&gt;&lt;a href=&quot;#single-component-signature-protection&quot; id=&quot;markdown-toc-single-component-signature-protection&quot;&gt;Single component signature protection&lt;/a&gt;&lt;/li&gt;
 +      &lt;li&gt;&lt;a href=&quot;#single-component-compatibility-protection&quot; id=&quot;markdown-toc-single-component-compatibility-protection&quot;&gt;Single component compatibility protection&lt;/a&gt;&lt;/li&gt;
 +      &lt;li&gt;&lt;a href=&quot;#multi-component-compatibility-compile-time-checking&quot; id=&quot;markdown-toc-multi-component-compatibility-compile-time-checking&quot;&gt;Multi-component compatibility compile time checking&lt;/a&gt;&lt;/li&gt;
 +    &lt;/ul&gt;
 +  &lt;/li&gt;
 +  &lt;li&gt;&lt;a href=&quot;#summary&quot; id=&quot;markdown-toc-summary&quot;&gt;Summary&lt;/a&gt;&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +  &lt;/nav&gt;
 +&lt;/aside&gt;
 +
 +&lt;h1 id=&quot;compatibility&quot;&gt;Compatibility&lt;/h1&gt;
 +
 +&lt;p&gt;what is compatibility\uff1fit is also the key to understanding the compatible dependency.Compatibility, often catch our eyes through two forms,&lt;strong&gt;binary compatibility&lt;/strong&gt;,that means they can run the same executable code, typically machine code for a general purpose computer CPU.within the framework of Release-to-Release Binary Compatibility in SOM (Forman, Conner, Danforth, and Raper, Proceedings of OOPSLA \u201895), Java programming language binaries are binary compatible under all relevant transformations that the authors identify (with some caveats with respect to the addition of instance variables). here is a list of some important binary compatible changes that the Java programming language supports:&lt;/p&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;Reimplementing existing methods, constructors, and initializers to improve performance.&lt;/li&gt;
 +  &lt;li&gt;Changing methods or constructors to return values on inputs for which they previously either threw exceptions that normally should not occur or failed by going into an infinite loop or causing a deadlock.&lt;/li&gt;
 +  &lt;li&gt;Adding new fields, methods, or constructors to an existing class or interface.&lt;/li&gt;
 +  &lt;li&gt;Deleting private fields, methods, or constructors of a class.&lt;/li&gt;
 +  &lt;li&gt;When an entire package is updated, deleting default (package-only) access fields, methods, or constructors of classes and interfaces in the package.&lt;/li&gt;
 +  &lt;li&gt;Reordering the fields, methods, or constructors in an existing type declaration.&lt;/li&gt;
 +  &lt;li&gt;Moving a method upward in the class hierarchy.&lt;/li&gt;
 +  &lt;li&gt;Reordering the list of direct superinterfaces of a class or interface.&lt;/li&gt;
 +  &lt;li&gt;Inserting new class or interface types in the type hierarchy.&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;p&gt;Generally,java language is &lt;strong&gt;upwards binary-compatible&lt;/strong&gt; with previous version,such as Java SE 6 is upwards binary-compatible with J2SE 5.0 except for some minor incompatibilities.You can get details from &lt;a href=&quot;http://www.oracle.com/technetwork/java/javase/compatibility-137541.html#binary&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
 +
 +&lt;p&gt;Another compatibility form,we call it &lt;strong&gt;source compatibility&lt;/strong&gt;,meaning that recompilation is necessary.Java language does not support downward source compatibility. Such as if source files use new language features or Java SE platform APIs, they will not be usable with an earlier version of the Java platform. Usually it will throw similar error like this:&lt;/p&gt;
 +
 +&lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;java&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;UnsupportedClassVersionError&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;alibaba&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;mq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;core&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;MessageConsumer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
 +         &lt;span class=&quot;n&quot;&gt;Unsupported&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;major&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;minor&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;version&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;51.0&lt;/span&gt;
 +         &lt;span class=&quot;n&quot;&gt;at&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;java&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;ClassLoader&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;defineClass1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Native&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Method&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
 +         &lt;span class=&quot;n&quot;&gt;at&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;java&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;ClassLoader&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;defineClassCond&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Unknown&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
 +&lt;/code&gt;&lt;/pre&gt;
 +&lt;/div&gt;
 +
 +&lt;p&gt;Java language source compatibility policy is as follows,except for any incompatibilities listed further below:&lt;/p&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;Maintenance releases (such as 1.7.25, 1.7.26) do not introduce any new language features or APIs. They will maintain source-compatibility with each other.&lt;/li&gt;
 +  &lt;li&gt;Functionality releases and major releases (such as 1.4.0,5.0,6.0,7.0,8.0) maintain upwards but not downwards source-compatibility.&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;p&gt;Let\u2019s sum up before going on:&lt;/p&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;Document those incompatibility cases as much as possible, even some rare circumstances and corner cases.&lt;/li&gt;
 +  &lt;li&gt;Recommend developer to provide facilities that alert developers to the impact of changes on pre-existing binaries that cannot be recompiled.&lt;/li&gt;
 +  &lt;li&gt;Generally speaking,Binary Compatibility problems may occur in the following situations:&lt;/li&gt;
 +  &lt;li&gt;&lt;strong&gt;Replacing the old with the new&lt;/strong&gt;,such as the Java platform Profiling Architecture in the Java SE6,JVMDI was removed and JVMPI was disabled in Java SE 6.&lt;/li&gt;
 +  &lt;li&gt;&lt;strong&gt;Combinatorial resolution&lt;/strong&gt;,such as Non class files have been moved from rt.jar in Java SE 6.if -Xbootclasspath:&lt;path to=&quot;&quot; rt.jar=&quot;&quot;&gt; is specified,and request any resource files will fail since these resources now reside in a different jar file called resources.jar.&lt;/path&gt;&lt;/li&gt;
 +  &lt;li&gt;&lt;strong&gt;Behavior change&lt;/strong&gt;,such as Java SE 6 will throw an OverlappingFileLockException,if the application attempts to lock the overlapping region other instances of FileChannel that has been locked, in order to realize the backward compatibility, it provides disableSystemWideOverlappingFileLockCheck system properties. again, also in Java SE 6, jar will preserve file modification dates and times during extract, through the sun.tools.jar.useExtractionTime=true to achieve backward compatibility.&lt;/li&gt;
 +  &lt;li&gt;&lt;strong&gt;Structure change&lt;/strong&gt;,this is also the key problem to solve in &lt;strong&gt;Dependency Mediator&lt;/strong&gt; project. generally speaking,modification and deletion belonging to incompatible operations.and more attentions must be paid in the RPC service maintenance, more detailed description,please refer to an &lt;a href=&quot;http://blog.csdn.net/fengjia10/article/details/7799227&quot;&gt;article&lt;/a&gt; I wrote before. also you can read the the thirteenth chapter of Java language specification.&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;h1 id=&quot;component-compatible-dependency&quot;&gt;Component Compatible Dependency&lt;/h1&gt;
 +
 +&lt;p&gt;This article don\u2019t talk about &lt;strong&gt;dependency analysis&lt;/strong&gt; and &lt;strong&gt;dependency decoupling&lt;/strong&gt;,if you care these topics,please read &lt;a href=&quot;http://java.dzone.com/articles/dependency-analysis-and-1&quot;&gt;Dependency Analysis and the Modularisation of Java Programs&lt;/a&gt;.highly recommending you try to dive into open source project &lt;a href=&quot;http://xplrarc.massey.ac.nz/&quot;&gt;Architecture Explorer&lt;/a&gt;,through bcel technology,analyzing and measuring component\u2019s dependency relationship.but in my opinion,&lt;a href=&quot;http://clarkware.com/software/JDepend.html&quot;&gt;Jdepend&lt;/a&gt; was surely the most distinguished tool in dependency analysis and dependency decoupling area.it traverses Java class file directories and generates design quality metrics for each Java package,also allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability 
 to manage package dependencies effectively.&lt;/p&gt;
 +
 +&lt;p&gt;Let\u2019s return,ask yourself\uff0chave you ever been disturbed by the following problems?&lt;/p&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;Your service depend a volatile service,volatile means your service depending neither an abstract class nor a interface,this class update at irregular intervals,you often encountered errors such as &lt;strong&gt;NoSuchMethodError&lt;/strong&gt;,&lt;strong&gt;NoSuchFieldError&lt;/strong&gt; and &lt;strong&gt;NoClassDefFoundError&lt;/strong&gt; etc.&lt;/li&gt;
 +  &lt;li&gt;You are developing a new feature,but this feature can not backward compatible with previous version,
 +what should you do ? How do you give a incompatible list in your release report.&lt;/li&gt;
 +  &lt;li&gt;Java language library is a superb collection of beautiful things,how do you make a rational dependency exclusion and effective mediate various dependency problems when developing.&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;p&gt;It is the time to introduce the key idea - &lt;strong&gt;Mediating Components Compatible Dependency&lt;/strong&gt;.Specifically,it includs the following basic principles:&lt;/p&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;Interface-oriented programming&lt;/li&gt;
 +  &lt;li&gt;Single component signature protection&lt;/li&gt;
 +  &lt;li&gt;Single component compatibility protection&lt;/li&gt;
 +  &lt;li&gt;Multi-component compatibility compile time checking&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;h2 id=&quot;interface-oriented-programming&quot;&gt;Interface-oriented programming&lt;/h2&gt;
 +
 +&lt;p&gt;Interface-oriented programming,It\u2019s easier said than done.I will cite SLF4J design philosophy explain this principle.&lt;/p&gt;
 +
 +&lt;p&gt;Differing from commons logging,SLF4J use &lt;strong&gt;static binder technology&lt;/strong&gt; so as to avoid notorious &lt;a href=&quot;http://articles.qos.ch/classloader.html&quot;&gt;classloader problem&lt;/a&gt;,every concrete log implementation must 
 +have a class named StaticLoggerBinder and implementing SLF4J spi LoggerFactoryBinder.thus you just depend SLF4J api,not concerned about underlying implementation.some people may asking,why choose SLF4J not commons logging\uff0cI can also depend commons logging api but not concret implementation\uff1fit\u2019s not performance but classloader problem.JCL discovery process relies on classloader hacks to find the logging framework at runtime but this mechanism leads to numerous problems including unexpected behavior,hard to debug classloading problems resulting in increased complexity.This is nicely captured by Ceki (the author of Log4J, SLF4J and Logback) in Think again before adopting the commons-logging API (which also mentions memory leaks problems observed with JCL).and this is why SLF4J, which uses static bindings, has been created. Let\u2019s see.how to find the concrete realizations in SLF4J:&lt;/p&gt;
 +
 +&lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;// We need to use the name of the StaticLoggerBinder class, but we can't reference&lt;/span&gt;
 +&lt;span class=&quot;c1&quot;&gt;// the class itself.&lt;/span&gt;
 +&lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;STATIC_LOGGER_BINDER_PATH&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;org/slf4j/impl/StaticLoggerBinder.class&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
 + &lt;span class=&quot;cm&quot;&gt;/**
 +  * It is LoggerFactory's responsibility to track version changes and manage
 +  * the compatibility list.
 +  * It is assumed that all versions in the 1.6 are mutually compatible.
 +  */&lt;/span&gt;
 +&lt;span class=&quot;kd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;API_COMPATIBILITY_LIST&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[]{&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;1.6&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;1.7&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;};&lt;/span&gt;
 +
 +&lt;span class=&quot;c1&quot;&gt;// private constructor prevents instantiation&lt;/span&gt;
 +&lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;LoggerFactory&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{}&lt;/span&gt;
 +&lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;versionSanityCheck&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
 + &lt;span class=&quot;k&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
 +    &lt;span class=&quot;n&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;requested&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;StaticLoggerBinder&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;REQUESTED_API_VERSION&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
 +    &lt;span class=&quot;kt&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;match&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
 +    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;API_COMPATIBILITY_LIST&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
 +      &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;requested&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;startsWith&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;API_COMPATIBILITY_LIST&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]))&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
 +          &lt;span class=&quot;n&quot;&gt;match&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
 +      &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
 +     &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
 +    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(!&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
 +      &lt;span class=&quot;n&quot;&gt;Util&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;report&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;The requested version &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;requested&lt;/span&gt;
 +           &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot; by your slf4j binding is not compatible with &quot;&lt;/span&gt;
 +           &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Arrays&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;asList&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;API_COMPATIBILITY_LIST&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;());&lt;/span&gt;
 +      &lt;span class=&quot;n&quot;&gt;Util&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;report&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;See &quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;VERSION_MISMATCH&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot; for further details.&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
 +    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;java&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;NoSuchFieldError&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;nsfe&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
 + &lt;span class=&quot;c1&quot;&gt;// given our large user base and SLF4J's commitment to backward&lt;/span&gt;
 + &lt;span class=&quot;c1&quot;&gt;// compatibility, we cannot cry here. Only for implementations&lt;/span&gt;
 + &lt;span class=&quot;c1&quot;&gt;// which willingly declare a REQUESTED_API_VERSION field do we&lt;/span&gt;
 + &lt;span class=&quot;c1&quot;&gt;// emit compatibility warnings.&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Throwable&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
 + &lt;span class=&quot;c1&quot;&gt;// we should never reach here&lt;/span&gt;
 + &lt;span class=&quot;n&quot;&gt;Util&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;report&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unexpected problem occured during version sanity check&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
 +  &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
 +&lt;/code&gt;&lt;/pre&gt;
 +&lt;/div&gt;
 +
 +&lt;p&gt;you can use these skills at your library.just Let others depend on your interface package,detecting certain implementation statically.&lt;/p&gt;
 +
 +&lt;p&gt;If you have developed an old version library,naming it as 2.x.x.next version,you hope to refactor some implementations,how to process multi-version compatibility?here is a skill from maven dependency plugin:&lt;/p&gt;
 +
 +&lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hint&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;isMaven31&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;maven31&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;isMaven2x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;maven2&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;maven3&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
 +
 +&lt;span class=&quot;cm&quot;&gt;/**
 +* Check the current Maven version to see if it's Maven 2.x.
 +*/&lt;/span&gt;
 +&lt;span class=&quot;kd&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;isMaven2x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
 +   &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;canFindCoreClass&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;org.apache.maven.project.DependencyResolutionRequest&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// Maven 3 specific&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
 +
 +&lt;span class=&quot;cm&quot;&gt;/**
 +* Check the current Maven version to see if it's Maven 3.1.
 +*/&lt;/span&gt;
 +&lt;span class=&quot;kd&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;isMaven31&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
 +   &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;canFindCoreClass&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;org.eclipse.aether.artifact.Artifact&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// Maven 3.1 specific&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
 +&lt;/code&gt;&lt;/pre&gt;
 +&lt;/div&gt;
 +
 +&lt;h2 id=&quot;single-component-signature-protection&quot;&gt;Single component signature protection&lt;/h2&gt;
 +
 +&lt;p&gt;Secondly,Single component signature protection,you can using &lt;a href=&quot;http://mojo.codehaus.org/animal-sniffer/&quot;&gt;Animal Sniffer project&lt;/a&gt; as well-known Guava library,Animal Sniffer provides tools to assist verifying that classes compiled with a newer JDK/API are compatible with an older JDK/API.&lt;/p&gt;
 +
 +&lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +   &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;codehaus&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;mojo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +   &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;animal&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sniffer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;maven&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +   &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;configuration&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +     &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;signature&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +       &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;codehaus&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;mojo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;signature&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +       &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;java16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sun&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +       &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;1.0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +     &lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;signature&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +   &lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;configuration&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +   &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;executions&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +     &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;execution&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +       &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;check&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;java16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sun&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +       &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;phase&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;phase&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +       &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;goals&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +         &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;goal&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;check&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;goal&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +       &lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;goals&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +     &lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;execution&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +   &lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;executions&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 + &lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +&lt;/code&gt;&lt;/pre&gt;
 +&lt;/div&gt;
 +
 +&lt;p&gt;So from now on, when you performing a mvn test or mvn install operation. If there is an incompatibility in one of the projects, you would find some output like this:&lt;/p&gt;
 +
 +&lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;INFO&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;animal&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;sniffer:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;check&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;execution:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;check&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;java&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;api&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}]&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;INFO&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Checking&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;unresolved&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;references&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;codehaus&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;mojo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;signature&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;java16&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;sun:&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;1.0&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ERROR&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Undefined&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;reference:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;java&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;contains&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Ljava&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CharSequence&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;)&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Z&lt;/span&gt; &lt;span cla
 ss=&quot;n&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;home&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;admin&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;workspace&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;kafka&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;classes&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;kafka&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tools&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;Producer&lt;
 /span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;class&lt;/span&gt;
 +&lt;/code&gt;&lt;/pre&gt;
 +&lt;/div&gt;
 +
 +&lt;p&gt;More details please see &lt;a href=&quot;http://blog.gvsig.org/2011/07/25/hunting-api-incompatibilities-with-the-animal-sniffer-project/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
 +
 +&lt;h2 id=&quot;single-component-compatibility-protection&quot;&gt;Single component compatibility protection&lt;/h2&gt;
 +
 +&lt;p&gt;If your a SOA develper,you almost concerned with single component compatibility protection.[Clirr project] (http://clirr.sourceforge.net/) may be your best choice.Clirr is a tool that checks Java libraries for binary and source compatibility with older releases. Basically you give it two sets of jar files and Clirr dumps out a list of changes in the public api. The Clirr Ant task can be configured to break the build if it detects incompatible api changes. In a continuous integration process Clirr can automatically prevent accidental introduction of binary or source compatibility problems.&lt;/p&gt;
 +
 +&lt;p&gt;How to use it\uff1fjust add some config snippets in your pom :&lt;/p&gt;
 +
 +&lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +  &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;codehaus&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;mojo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +  &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;clirr&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;maven&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +  &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;2.6&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
 +&lt;/code&gt;&lt;/pre&gt;
 +&lt;/div&gt;
 +
 +&lt;p&gt;then,run &lt;code class=&quot;highlighter-rouge&quot;&gt;mvn clirr:check&lt;/code&gt;,output may be like this:&lt;/p&gt;
 +
 +&lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;INFO&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;---&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;clirr&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;maven&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;plugin:&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;2.6&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;check&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;cli&lt;/span&gt;&lt;span class=&q
 uot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;@&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cmq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;common&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;---&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;INFO&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;artifact&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;alibaba&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;intl&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;base&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;cmq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;cmq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;common&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;checking&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&q
 uot;&gt;updates&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b2bmirror&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;INFO&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Comparing&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;version:&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;2.0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ERROR&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;7005&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;alibaba&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;mq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;CompletionListener&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Parameter&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span
  class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;onCompletion&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;alibaba&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;mq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;CommonMessage&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;'&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;has&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;changed&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;its&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;type&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;to&lt;/span&gt;   &lt;span class=&quot;n&quot;&gt;com&lt;/span&gt;&lt;span clas
 s=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;alibaba&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;mq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;common&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;CommonMessage&lt;/span&gt;
 +&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ERROR&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;7005&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;alibaba&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;mq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;CompletionListener&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Parameter&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;of&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span
  class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;onException&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;alibaba&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;mq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;CommonMessage&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;java&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;Exception&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;'&lt;/span&gt; &lt;span class=&quot
 ;n&quot;&gt;has&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;changed&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;its&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;type&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;alibaba&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;mq&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;common&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span cl

<TRUNCATED>


[05/16] incubator-rocketmq-site git commit: Add batch broadcast arc and schedule example documents, closes apache/incubator-rocketmq-site#10

Posted by yu...@apache.org.
Add batch broadcast arc and schedule example documents, closes apache/incubator-rocketmq-site#10


Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/commit/beb14e50
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/tree/beb14e50
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/diff/beb14e50

Branch: refs/heads/asf-site
Commit: beb14e500eab7a84ed90601a867b624cac470c07
Parents: 0446b8b
Author: lindzh <li...@163.com>
Authored: Tue Apr 25 00:59:49 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Tue Apr 25 00:59:49 2017 +0800

----------------------------------------------------------------------
 _data/navigation.yml                  |  10 +-
 _docs/12-rmq-batch-example.md         | 101 ++++++++++++++++
 _docs/13-rmq-broadcasting-example.md  |  66 ++++++++++
 _docs/14-rmq-deployment.md            | 145 ++++++++++++++++++++++
 _docs/15-order-message-example .md    |  86 +++++++++++++
 _docs/16-rmq-architecture.md          |  68 +++++++++++
 _docs/17-rmq-schedule-example.md      |  70 +++++++++++
 _docs/18-simple-example.md            | 187 +++++++++++++++++++++++++++++
 _sass/_navigation.scss                |   4 +-
 assets/images/rmq-basic-arc.png       | Bin 0 -> 69606 bytes
 assets/images/rmq-basic-component.png | Bin 0 -> 69730 bytes
 11 files changed, 731 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/beb14e50/_data/navigation.yml
----------------------------------------------------------------------
diff --git a/_data/navigation.yml b/_data/navigation.yml
index 4b86674..b239dd5 100644
--- a/_data/navigation.yml
+++ b/_data/navigation.yml
@@ -27,17 +27,19 @@ docs:
         url: /docs/simple-example/
       - title: "Order Example"
         url: /docs/order-example/
+      - title: "Broadcasting Example"
+        url: /docs/broadcast-example/
       - title: "Schedule Example"
         url: /docs/schedule-example/
-      - title: "Schedule Example"
-        url: /docs/schedule-example/
+      - title: "Batch Example"
+        url: /docs/batch-example/
 
   - title: Deployment & Operations
     children:
       - title: "Architecture"
-        url: /docs/architecture/
+        url: /docs/rmq-arc/
       - title: "Deployment"
-        url: /docs/deployment/
+        url: /docs/rmq-deployment/
       - title: "CLI Admin Tool"
         url: /docs/cli-admin-tool/
 

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/beb14e50/_docs/12-rmq-batch-example.md
----------------------------------------------------------------------
diff --git a/_docs/12-rmq-batch-example.md b/_docs/12-rmq-batch-example.md
new file mode 100644
index 0000000..01b5d32
--- /dev/null
+++ b/_docs/12-rmq-batch-example.md
@@ -0,0 +1,101 @@
+---
+title: "Batch Example"
+permalink: /docs/batch-example/
+excerpt: "How to use batch in Rocketmq"
+modified: 2017-04-24T15:01:43-04:00
+---
+
+{% include toc %}
+
+#### When to use batch
+Batch is not for packaging but improving performance of small messages. So the messages of the same batch should act the same role, no more effort should be taken to split the batch.
+No split has another important advantage, messages of the same batch should be sent atomically, that is all successfully or all unsuccessfully, of which the importance is self-evident.
+So performance and atomicity are the original intentions, which will reflect on the usage constraints. 
+That is to say, if you want to improve performance for small messages or to send messages atomically, batch is a nice solution for you.
+#### Usage constraints
+Performance and atomicity are worth  the following constraints:
+messages of the same batch should have:
+
+1. same topic: If they belong to different topics(internally the queues), then may be sent to different brokers, which will against atomicity.
+2. same waitStoreMsgOK: also differences will against atomicity.
+3. no delay level: If we care about the delay level, we need to decode the internal properties of every message, which will cause much performance loss.
+
+And the most important, the total size, that is the sum of size of each message in one batch, should be no more than 1M.
+
+#### How to use batch
+If you just send several small messages in a time and do not need to worry about the size limit, it is easy to use batch:
+
+```java
+String topic = "BatchTest";
+List<Message> messages = new ArrayList<>();
+messages.add(new Message(topic, "TagA", "OrderID001", "Hello world 0".getBytes()));
+messages.add(new Message(topic, "TagA", "OrderID002", "Hello world 1".getBytes()));
+messages.add(new Message(topic, "TagA", "OrderID003", "Hello world 2".getBytes()));
+try {
+    producer.send(messages);
+} catch (Exception e) {
+    e.printStackTrace();
+    //handle the error
+}
+    
+```
+#### Split into lists
+The complexity only grow when you send large batch and you may not sure if it exceeds the size limit (1M).
+
+At this time, you'd better split the lists:
+
+```java
+public class ListSplitter implements Iterator<List<Message>> {
+    private final int SIZE_LIMIT = 1000 * 1000;
+    private final List<Message> messages;
+    private int currIndex;
+    public ListSplitter(List<Message> messages) {
+            this.messages = messages;
+    }
+    @Override public boolean hasNext() {
+        return currIndex < messages.size();
+    }
+    @Override public List<Message> next() {
+        int nextIndex = currIndex;
+        int totalSize = 0;
+        for (; nextIndex < messages.size(); nextIndex++) {
+            Message message = messages.get(nextIndex);
+            int tmpSize = message.getTopic().length() + message.getBody().length;
+            Map<String, String> properties = message.getProperties();
+            for (Map.Entry<String, String> entry : properties.entrySet()) {
+                tmpSize += entry.getKey().length() + entry.getValue().length();
+            }
+            tmpSize = tmpSize + 20; //for log overhead
+            if (tmpSize > SIZE_LIMIT) {
+                //it is unexpected that single message exceeds the SIZE_LIMIT
+                //here just let it go, otherwise it will block the splitting process
+                if (nextIndex - currIndex == 0) {
+                   //if the next sublist has no element, add this one and then break, otherwise just break
+                   nextIndex++;  
+                }
+                break;
+            }
+            if (tmpSize + totalSize > SIZE_LIMIT) {
+                break;
+            } else {
+                totalSize += tmpSize;
+            }
+    
+        }
+        List<Message> subList = messages.subList(currIndex, nextIndex);
+        currIndex = nextIndex;
+        return subList;
+    }
+}
+//then you could split the large list into small ones:
+ListSplitter splitter = new ListSplitter(messages);
+while (splitter.hasNext()) {
+   try {
+       List<Message>  listItem = splitter.next();
+       producer.send(listItem);
+   } catch (Exception e) {
+       e.printStackTrace();
+       //handle the error
+   }
+}
+```
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/beb14e50/_docs/13-rmq-broadcasting-example.md
----------------------------------------------------------------------
diff --git a/_docs/13-rmq-broadcasting-example.md b/_docs/13-rmq-broadcasting-example.md
new file mode 100644
index 0000000..63a10fb
--- /dev/null
+++ b/_docs/13-rmq-broadcasting-example.md
@@ -0,0 +1,66 @@
+---
+title: "Broadcasting"
+permalink: /docs/broadcast-example/
+excerpt: "How to send broadcast messages in Apache RocketMQ."
+modified: 2017-04-24T15:01:43-04:00
+---
+
+{% include toc %}
+
+#### What is Broadcasting
+Broadcasting is when sending a meeage to a topic,all subscribers of the topic will receive the message even if they are in the same consumer group.If you want all subscribers in a group receive all the messages in a topic,broadcasting is a good choice.
+
+#### How to use
+
+##### First,Produce message as before
+
+```java
+DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName");
+
+producer.start();
+
+for (int i = 0; i < 10000000; i++){
+    try {
+        {
+            Message msg = new Message("TopicTest",
+                "TagA",
+                "OrderID188",
+                "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
+            SendResult sendResult = producer.send(msg);
+            System.out.printf("%s%n", sendResult);
+        }
+
+    } catch (Exception e) {
+        e.printStackTrace();
+    }
+}
+producer.shutdown();
+```
+
+##### Second,Consume message in Broadcast mode
+
+```java
+DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_1");
+
+consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
+
+//set to broadcast mode
+consumer.setMessageModel(MessageModel.BROADCASTING);
+
+consumer.subscribe("TopicTest", "TagA || TagC || TagD");
+
+consumer.registerMessageListener(new MessageListenerConcurrently() {
+
+    @Override
+    public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
+        ConsumeConcurrentlyContext context) {
+        System.out.printf(Thread.currentThread().getName() + " Receive New Messages: " + msgs + "%n");
+        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
+    }
+});
+
+consumer.start();
+System.out.printf("Broadcast Consumer Started.%n");
+```
+
+Enjoy it.

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/beb14e50/_docs/14-rmq-deployment.md
----------------------------------------------------------------------
diff --git a/_docs/14-rmq-deployment.md b/_docs/14-rmq-deployment.md
new file mode 100644
index 0000000..0f4af22
--- /dev/null
+++ b/_docs/14-rmq-deployment.md
@@ -0,0 +1,145 @@
+---
+title: "Deployment"
+permalink: /docs/rmq-deployment/
+excerpt: "How to deploy the Apache RocketMQ."
+modified: 2017-04-24T15:01:43-04:00
+---
+
+{% include toc %}
+
+This section is to introduce deployment solution which is considered production-ready. Generally speaking, we are deploying a resilient RocketMQ cluster having no single point of failure.
+
+### Prerequisite
+Before starting this section, make sure you have read Quick Start section, in which core concepts and components of RocketMQ are introduced.
+
+#### Production-ready Deployment
+#####Name Server
+To ensure the cluster can still operate normally when one instance crashes, two or more name server instances are recommended. As long as there is at least one name server instance alive, the whole cluster remains serving.
+
+Name server follows share-nothing design paradigm. Brokers send heartbeat data to all name servers. Producers and consumers may query meta data from any one of name servers available while sending / consuming messages.
+
+#### Broker
+Brokers can be divided into two categories according to their roles: master and slave. Master brokers provide RW access while slave brokers only accept read access.
+
+To deploy a high-availability RocketMQ cluster which has no single point of failure, a series of broker sets should be deployed. One broker set contains one master with brokerId set to 0 and several slaves with non-zero brokerIDs. All of the brokers in one set have the same brokerName. In serious scenarios, we should have at least two brokers in one broker set. Each topic resides in two or more brokers.
+
+### Configuration
+When deploying a RocketMQ cluster, below configurations should be taken into consideration.
+
+##### Broker configuration
+
+| Property Name        | Default values           | Details  |
+| ----------------- |:------------------:| ---------------:|
+| listenPort      | 10911 | listen port for client |
+| namesrvAddr      | null      |   name server address |
+| brokerIP1    | InetAddress for network interface  | Should be configured if having multiple addresses |
+| brokerName | null | broker name |
+| brokerClusterName | DefaultCluster |this broker belongs to which cluster |
+| brokerId | 0 |broker id, 0 means master, positive integers mean slave |
+| storePathCommitLog | $HOME/store/commitlog/ |file path for commit log |
+| storePathConsumerQueue |  $HOME/store/consumequeue/ | file path for consume queue |
+| mapedFileSizeCommitLog | 1024 * 1024 * 1024(1G) | mapped file size for commit log |
+| deleteWhen | 04 |When to delete the commitlog which is out of the reserve time |
+| fileReserverdTime | 72 |The number of hours to keep a commitlog before deleting it |
+| brokerRole | ASYNC_MASTER |SYNC_MASTER/ASYNC_MASTER/SLVAE |
+| flushDiskType | ASYNC_FLUSH |{SYNC_FLUSH/ASYNC_FLUSH}. Broker of SYNC_FLUSH mode flushes each message onto disk before acknowledging producer. Broker of ASYNC_FLUSH mode, on the other hand, takes advantage of group-committing, achieving better performance.|
+
+### CLI Admin Tool
+RocketMQ provides a CLI(command-line interface) admin tool belt to query, manage and diagnose various issues.
+
+#### How To Get
+The admin tool is shipped along with RocketMQ. Either you download a pre-built binary version or build from source by yourself, you already have it.
+
+In case you have source code, the rocketmq-tools module contains its source code.
+
+#### How to use
+The Admin Tool is very easy to use. Here, for demonstration purpose, *nix environment is assumed.
+
+Change directory to ${PACKAGE}/bin, command bash mqadmin, you should see the following help menu pops out:
+
+```java 
+The most commonly used mqadmin commands are:
+   updateTopic          Update or create topic
+   deleteTopic          Delete topic from broker and NameServer
+   updateSubGroup       Update or create subscription group
+   deleteSubGroup       Delete subscription group from broker
+   updateBrokerConfig   Update broker's config
+   updateTopicPerm      Update topic perm
+   topicRoute           Examine topic route info
+   topicStatus          Examine topic Status info
+   topicClusterList     get cluster info for topic
+   brokerStatus         Fetch broker runtime status data
+   queryMsgById         Query Message by Id
+   queryMsgByKey        Query Message by Key
+   queryMsgByUniqueKey  Query Message by Unique key
+   queryMsgByOffset     Query Message by offset
+   queryMsgByUniqueKey  Query Message by Unique key
+   printMsg             Print Message Detail
+   sendMsgStatus        send msg to broker
+   brokerConsumeStats   Fetch broker consume stats data
+   producerConnection   Query producer's socket connection and client version
+   consumerConnection   Query consumer's socket connection, client version and subscription
+   consumerProgress     Query consumers's progress, speed
+   consumerStatus       Query consumer's internal data structure
+   cloneGroupOffset     clone offset from other group
+   clusterList          List all of clusters
+   topicList            Fetch all topic list from name server
+   updateKvConfig       Create or update KV config
+   deleteKvConfig       Delete KV config
+   wipeWritePerm        Wipe write perm of broker in all name server
+   resetOffsetByTime    Reset consumer offset by timestamp(without client restart)
+   updateOrderConf      Create or update or delete order conf
+   cleanExpiredCQ       Clean expired ConsumeQueue on broker.
+   cleanUnusedTopic     Clean unused topic on broker
+   startMonitoring      Start Monitoring
+   statsAll             Topic and Consumer tps stats
+   syncDocs             Synchronize wiki and issue to github.com
+   allocateMQ           Allocate MQ
+   checkMsgSendRT       check message send response time
+   clusterRT            List All clusters Message Send RT
+
+```
+See 'mqadmin help <command>' for more information on a specific command. 
+If you want to get more information about a specific command like 'clusterList', just type bash mqadmin help clusterList and you will see:
+
+```java
+usage: mqadmin clusterList [-h] [-i <arg>] [-m] [-n <arg>]
+ -h,--help                Print help
+ -i,--interval <arg>      specify intervals numbers, it is in seconds
+ -m,--moreStats           Print more stats
+ -n,--namesrvAddr <arg>   Name server address list, eg: 192.168.0.1:9876;192.168.0.2:9876
+```
+
+### Replication mode
+With the purpose to guarantee that any successfully published message will not be lost, RocketMQ provides a Replication mode to gain stronger durability and higher availability with two replication way: Sync & Async.
+
+#####Replication: Sync / Async Broker
+
+Similar to many replication system, sync brokers await until commit log is replicated to the slave before acknowledging. Async brokers, instead, return immediately after messages are processed on master.
+
+##### How to configure
+There are three pre-built configurations shipped with the distribution of RocketMQ under conf folder for your reference:
+
+```java
+2m-2s-sync
+2m-2s-async
+2m-noslave
+```
+Note: all configurations uses ASYNC_FLUSH.
+
+#### Deployment
+Take the deployment of 2m-2s-sync as example. First, start up two name servers as is shown in the Quick Start section. Assume their IPs are 192.168.0.2 and 192.168.0.3.
+
+Then start the brokers(Assume binary RocketMQ is at /home/rocketmq/dist)
+
+```java
+>cd /home/rocketmq/dist/bin
+>bash mqbroker -c ../conf/2m-2s-sync/broker-a.properties -n 192.168.0.2:9876,192.168.0.3:9876
+>bash mqbroker -c ../conf/2m-2s-sync/broker-a-s.properties -n 192.168.0.2:9876,192.168.0.3:9876
+>bash mqbroker -c ../conf/2m-2s-sync/broker-b.properties -n 192.168.0.2:9876,192.168.0.3:9876
+>bash mqbroker -c ../conf/2m-2s-sync/broker-b-s.properties -n 192.168.0.2:9876,192.168.0.3:9876
+How to verify
+Execute the following command to verify according to the CLI section:
+> bash mqadmin clusterlist
+```
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/beb14e50/_docs/15-order-message-example .md
----------------------------------------------------------------------
diff --git a/_docs/15-order-message-example .md b/_docs/15-order-message-example .md
new file mode 100644
index 0000000..0375322
--- /dev/null
+++ b/_docs/15-order-message-example .md	
@@ -0,0 +1,86 @@
+---
+title: "Order Message "
+permalink: /docs/order-example/
+excerpt: "How to send and receive ordered messages in Apache RocketMQ."
+modified: 2017-04-24T15:01:43-04:00
+---
+
+
+{% include toc %}
+
+
+To send and subscribe to order messages, use Java MQ SDK 1.2.7 and above. The sequential message is a kind of message type which is provided by MQ according to the order, which is suitable for the news release and consumption according to the principle of fifo. 
+
+For more information, please refer to the sequential message file. 
+The global order message and the partition order message send and receive the way to be the same basically, please refer to the following example code specifically. 
+
+#### Send message sample code 
+
+```java
+try {
+    MQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
+    producer.start();
+
+    String[] tags = new String[] {"TagA", "TagB", "TagC", "TagD", "TagE"};
+    for (int i = 0; i < 100; i++) {
+        int orderId = i % 10;
+        Message msg =
+            new Message("TopicTestjjj", tags[i % tags.length], "KEY" + i,
+                ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET));
+        SendResult sendResult = producer.send(msg, new MessageQueueSelector() {
+            @Override
+            public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {
+                Integer id = (Integer) arg;
+                int index = id % mqs.size();
+                return mqs.get(index);
+            }
+        }, orderId);
+
+        System.out.printf("%s%n", sendResult);
+    }
+
+    producer.shutdown();
+} catch (MQClientException | RemotingException | MQBrokerException | InterruptedException e) {
+    e.printStackTrace();
+}
+```
+
+
+#### Subscription message sample code 
+
+```java
+DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_3");
+
+consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
+
+consumer.subscribe("TopicTest", "TagA || TagC || TagD");
+
+consumer.registerMessageListener(new MessageListenerOrderly() {
+
+    AtomicLong consumeTimes = new AtomicLong(0);
+    @Override
+    public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs,
+                                               ConsumeOrderlyContext context) {
+        context.setAutoCommit(false);
+        System.out.printf(Thread.currentThread().getName() + " Receive New Messages: " + msgs + "%n");
+        this.consumeTimes.incrementAndGet();
+        if ((this.consumeTimes.get() % 2) == 0) {
+            return ConsumeOrderlyStatus.SUCCESS;
+        } else if ((this.consumeTimes.get() % 3) == 0) {
+            return ConsumeOrderlyStatus.ROLLBACK;
+        } else if ((this.consumeTimes.get() % 4) == 0) {
+            return ConsumeOrderlyStatus.COMMIT;
+        } else if ((this.consumeTimes.get() % 5) == 0) {
+            context.setSuspendCurrentQueueTimeMillis(3000);
+            return ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT;
+        }
+        return ConsumeOrderlyStatus.SUCCESS;
+
+    }
+});
+
+consumer.start();
+
+System.out.printf("Consumer Started.%n");
+```
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/beb14e50/_docs/16-rmq-architecture.md
----------------------------------------------------------------------
diff --git a/_docs/16-rmq-architecture.md b/_docs/16-rmq-architecture.md
new file mode 100644
index 0000000..fc2774e
--- /dev/null
+++ b/_docs/16-rmq-architecture.md
@@ -0,0 +1,68 @@
+---
+title: "RocketMQ Architecture"
+permalink: /docs/rmq-arc/
+excerpt: "The main Architecture of Apache RocketMQ."
+modified: 2017-04-24T15:01:43-04:00
+---
+
+
+{% include toc %}
+
+
+![](/assets/images/rmq-basic-arc.png)
+
+# Overview
+
+The greatest innovation of RocketMQ is high throughput, high reliability, and low latency of supporting massive messages through exquisite scale out and scale up. RocketMQ consists of four parts, Name Servers, Brokers, Producers and Consumers. Each of them can be horizontally extended without single Point of Failure. As shown in screenshot below.
+
+
+
+**NameServer Cluster**
+
+Name Servers provide lightweight service discovery and routing. Each Name Server records full routing information, provides equivalent reading and writing service, and supports fast storage expansion.
+
+**Broker Cluster**
+
+Brokers take care of message storage by providing lightweight TOPIC and QUEUE mechanisms. It supports the Push and Pull modes, fault tolerance mechanism (2 copies or 3 copies), strong padding of peaks and capacity of accumulating hundreds of billion messages in their original time order. In addition, Brokers provide disaster recovery, rich metrics statistics, and alert mechanisms, all of which are lack in traditional messaging systems.
+
+**Producer Cluster**
+
+Producers support distributed deployment. Distributed Producers send messages to the Broker cluster through multiple load balancing modes. The sending processes support fast failure and have low latency.
+
+**Consumer Cluster**
+
+Consumers support distributed deployment in the Push and Pull models as well. It also supports cluster consumption and message broadcast. It provides real-time message subscription mechanism and can meet most consumer scenarios. 
+RocketMQ\u2019s website provide a quick-start guide[3] for those guys who want to have a try without too much labor.
+
+# NameServer
+
+NameServer is a little but fully functional server, which mainly includes two features:
+
+* Broker Management, **NameServer** accepts the register from Broker cluster and provides heartbeat mechanism to ensure whether a broker is alive.
+* Routing Management, each NameServer will hold whole routing info about the broker cluster and the **queue** info for clients query.
+
+As we know, RocketMQ clients(Producer/Consumer) will query the queue routing info from NameServer, but how do the clients find NameServer address?
+
+There are four methods to feed NameServer address list to clients:
+
+* Programmatic Way, like `producer.setNamesrvAddr("ip:port")`.
+* Java Options, use `rocketmq.namesrv.addr`.
+* Environment Variable, use `NAMESRV_ADDR`.
+* HTTP Endpoint.
+
+More details about how to find NameServer address please refer to [here](/rocketmq/four-methods-to-feed-name-server-address-list/).
+
+# Broker Server
+
+Broker server is responsible for message store and delivery, message query, HA guarantee, and so on.
+
+As shown in image below, Broker server has searval important sub modules:
+
+* Remoting Module, the entry of broker, handle the requests from clients.
+* Client Manager, manage the clients (Producer/Consumer), maintain topic subscription of consumer.
+* Store Service, provide simple APIs to store or query message in physical disk.
+* HA Service, provide data sync feature between master broker and slave broker.
+* Index Service, build index for messages by specified key and provide quick message query function.
+
+![](/assets/images/rmq-basic-component.png)
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/beb14e50/_docs/17-rmq-schedule-example.md
----------------------------------------------------------------------
diff --git a/_docs/17-rmq-schedule-example.md b/_docs/17-rmq-schedule-example.md
new file mode 100644
index 0000000..a55b46d
--- /dev/null
+++ b/_docs/17-rmq-schedule-example.md
@@ -0,0 +1,70 @@
+---
+title: "Schedule example"
+permalink: /docs/schedule-example/
+excerpt: "How to use schedule component to reduce pull in RocketMQ."
+modified: 2017-04-24T15:01:43-04:00
+---
+
+
+
+{% include toc %}
+
+
+### What is mq schedule?
+If you use `DefaultMQPullConsumer` to consume message,you have to fetch message manualy.There are some steps here to achieve this point.But with `MQPullConsumerScheduleService`,you will consume messages easily.
+
+#### DefaultMQPullConsumer use case
+
+> First fetch subscribed queues of a topic
+
+```java
+Set<MessageQueue> testTopic = consumer.fetchSubscribeMessageQueues("testTopic");
+```
+
+> Second chose a queue to fetch message,and save queue offset manually.
+
+#### Use MQPullConsumerScheduleService consume message
+
+```java
+final MQPullConsumerScheduleService scheduleService = new MQPullConsumerScheduleService("GroupName1");
+
+scheduleService.setMessageModel(MessageModel.CLUSTERING);
+scheduleService.registerPullTaskCallback("TopicTest1", new PullTaskCallback() {
+
+    @Override
+    public void doPullTask(MessageQueue mq, PullTaskContext context) {
+        MQPullConsumer consumer = context.getPullConsumer();
+        try {
+
+            long offset = consumer.fetchConsumeOffset(mq, false);
+            if (offset < 0)
+                offset = 0;
+
+            PullResult pullResult = consumer.pull(mq, "*", offset, 32);
+            System.out.printf("%s%n", offset + "\t" + mq + "\t" + pullResult);
+            switch (pullResult.getPullStatus()) {
+                case FOUND:
+                    break;
+                case NO_MATCHED_MSG:
+                    break;
+                case NO_NEW_MSG:
+                case OFFSET_ILLEGAL:
+                    break;
+                default:
+                    break;
+            }
+            consumer.updateConsumeOffset(mq, pullResult.getNextBeginOffset());
+
+			//consume message auto
+            context.setPullNextDelayTimeMillis(100);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+});
+
+scheduleService.start();
+```
+
+#### Have fun with `MQPullConsumerScheduleService`.
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/beb14e50/_docs/18-simple-example.md
----------------------------------------------------------------------
diff --git a/_docs/18-simple-example.md b/_docs/18-simple-example.md
new file mode 100644
index 0000000..92ac35b
--- /dev/null
+++ b/_docs/18-simple-example.md
@@ -0,0 +1,187 @@
+---
+title: "Simple Message Example"
+permalink: /docs/simple-example/
+excerpt: "How to send simple message to reduce pull in RocketMQ."
+modified: 2017-04-24T15:01:43-04:00
+---
+
+
+
+{% include toc %}
+
+Use Rocketmq to send ordinary messages have three ways: reliable synchronous transmission, reliable
+asynchronous transmission, one-way (Oneway) send. 
+
+This paper introduces the principle of
+each implementation, the use of the scene and the similarities and differences between the
+three implementations, and provides a code example for reference
+Reliable synchronous transmission
+Principle: synchronous transmission refers to the sender of the message issued after the
+data are received after the recipient sends back a packet should be made under the mode of
+communication
+Application scenarios: this way the application of the scene is very extensive, such as
+important notification messages, SMS notification, SMS marketing system, etc..
+
+```java
+public class Producer {
+    public static void main(String[] args) throws MQClientException,
+        InterruptedException {
+         /*
+         * Instantiate with a producer group name.
+         */
+        DefaultMQProducer producer = new
+            DefaultMQProducer("please_rename_unique_group_name");
+         /*
+         * Specify name server addresses.
+         * <p/>
+         *
+         * Alternatively, you may specify name server addresses via exporting
+        environmental variable: NAMESRV_ADDR
+         * <pre>
+         * {@code
+         * producer.setNamesrvAddr("name-server1-ip:9876;name-server2-ip:9876");
+         * }
+         * </pre>
+         */
+         /*
+         * Launch the instance.
+         */
+        producer.start();
+        for (int i = 0; i < 1000; i++) {
+            try {
+                 /*
+                 * Create a message instance, specifying topic, tag and message
+                body.
+                 */
+                Message msg = new Message("TopicTest" /* Topic */,
+                    "TagA" /* Tag */,
+                    ("Hello RocketMQ " +
+                        i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
+                );
+                 /*
+                 * Call send message to deliver message to one of brokers.
+                 */
+                SendResult sendResult = producer.send(msg);
+                System.out.printf("%s%n", sendResult);
+            } catch (Exception e) {
+                e.printStackTrace();
+                Thread.sleep(1000);
+            }
+        }
+         /*
+         * Shut down once the producer instance is not longer in use.
+         */
+        producer.shutdown();
+    }
+}
+
+```
+#### Reliable asynchronous transmission
+Principle: asynchronous transmission refers to the sender sends the data, not the receiver
+back to respond, and then send the next packet communication. Asynchronous send MQ,
+users need to realize asynchronous callback interface (SendCallback), in the implementation
+of asynchronous send message to the application server, without waiting for a response can
+be returned directly to the receiving server, through the callback interface response, and
+response to the server for processing results.
+
+
+Applications: asynchronous transmission is generally used to link time-consuming, RT
+response time sensitive business scenarios, such as user video upload after notification to
+start transcoding, the transcoding after push notification transcoding results.
+
+```java
+public class AsyncProducer {
+    public static void main(String[] args) throws MQClientException,
+        InterruptedException, UnsupportedEncodingException {
+        DefaultMQProducer producer = new DefaultMQProducer("Jodie_Daily_test");
+        producer.start();
+        producer.setRetryTimesWhenSendAsyncFailed(0);
+        for (int i = 0; i < 10000000; i++) {
+            try {
+                final int index = i;
+                Message msg = new Message("Jodie_topic_1023",
+                    "TagA",
+                    "OrderID188",
+                    "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
+                producer.send(msg, new SendCallback() {
+                    @Override
+                    public void onSuccess(SendResult sendResult) {
+                        System.out.printf("%-10d OK %s %n", index,
+                            sendResult.getMsgId());
+                    }
+                    @Override
+                    public void onException(Throwable e) {
+                        System.out.printf("%-10d Exception %s %n", index, e);
+                        e.printStackTrace();
+                    }
+                });
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        producer.shutdown();
+    }
+}
+```
+
+Unidirectional (Oneway) transmission
+Principle: one-way (Oneway) to send the message is only responsible for sending the
+message, do not wait for the server to respond and no callback function to trigger, that is,
+send the request does not wait for a reply. The process of sending messages in this way
+takes a very short time, usually at the microsecond level.
+Application scenarios: for some very short, but not high reliability requirements of the scene,
+such as log collection.
+
+```java
+public class producerOneWay {
+    public static void main(String[] args) throws MQClientException,
+        InterruptedException, MQClientException {
+         /*
+         * Instantiate with a producer group name.
+         */
+        DefaultMQProducer producer = new
+            DefaultMQProducer("please_rename_unique_group_name");
+         /*
+         * Specify name server addresses.
+         * <p/>
+         *
+         * Alternatively, you may specify name server addresses via exporting
+        environmental variable: NAMESRV_ADDR
+         * <pre>
+         * {@code
+         * producer.setNamesrvAddr("name-server1-ip:9876;name-server2-ip:9876");
+         * }
+         * </pre>
+         */
+         /*
+         * Launch the instance.
+         */
+        producer.start();
+        for (int i = 0; i < 1000; i++) {
+            try {
+                 /*
+                 * Create a message instance, specifying topic, tag and message
+                body.
+                 */
+                Message msg = new Message("TopicTest" /* Topic */,
+                    "TagA" /* Tag */,
+                    ("Hello RocketMQ " +
+                        i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
+                );
+                 /*
+                 * Call send message to deliver message to one of brokers.
+                 */
+                producer.sendOneway(msg);
+            } catch (Exception e) {
+                e.printStackTrace();
+                Thread.sleep(1000);
+            }
+        }
+         /*
+         * Shut down once the producer instance is not longer in use.
+         */
+        producer.shutdown();
+    }
+}
+
+```
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/beb14e50/_sass/_navigation.scss
----------------------------------------------------------------------
diff --git a/_sass/_navigation.scss b/_sass/_navigation.scss
index 6dfde7a..a5da695 100644
--- a/_sass/_navigation.scss
+++ b/_sass/_navigation.scss
@@ -467,8 +467,8 @@
 
 .nav__sub-title {
   display: block;
-  margin: 0.3rem 0;
-  padding: 0.3rem 0;
+  margin: 0.5rem 0;
+  padding: 0.5rem 0;
   font-family: $sans-serif-narrow;
   font-size: $type-size-6;
   font-weight: bold;

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/beb14e50/assets/images/rmq-basic-arc.png
----------------------------------------------------------------------
diff --git a/assets/images/rmq-basic-arc.png b/assets/images/rmq-basic-arc.png
new file mode 100644
index 0000000..33927be
Binary files /dev/null and b/assets/images/rmq-basic-arc.png differ

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/beb14e50/assets/images/rmq-basic-component.png
----------------------------------------------------------------------
diff --git a/assets/images/rmq-basic-component.png b/assets/images/rmq-basic-component.png
new file mode 100644
index 0000000..4cdc306
Binary files /dev/null and b/assets/images/rmq-basic-component.png differ


[06/16] incubator-rocketmq-site git commit: Release at 2017.04.25

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/sitemap.xml
----------------------------------------------------------------------
diff --cc content/sitemap.xml
index 7a2bfe8,0000000..967ec82
mode 100644,000000..100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@@ -1,180 -1,0 +1,222 @@@
 +<?xml version="1.0" encoding="UTF-8"?>
 +<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 +<url>
 +<loc>/activity/launch-rocketmq-code-marathon/</loc>
 +<lastmod>2017-03-31T00:00:00+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/the-correct-posture-of-submitting-pull-request/</loc>
 +<lastmod>2017-03-24T00:00:00+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/rocketmq/four-methods-to-feed-name-server-address-list/</loc>
 +<lastmod>2017-02-10T00:00:00+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/release_notes/release-notes-4.0.0-incubating/</loc>
 +<lastmod>2017-01-24T00:00:00+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/activity/launch-rocketmq-code-marathon/</loc>
 +<lastmod>2017-01-05T00:00:00+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/maven/mastering-component-compatible-dependency/</loc>
 +<lastmod>2016-12-23T00:00:00+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/rocketmq/how-to-support-more-queues-in-rocketmq/</loc>
 +<lastmod>2016-12-23T00:00:00+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/quick-start/</loc>
 +</url>
 +<url>
 +<loc>/about/team/</loc>
 +</url>
 +<url>
 +<loc>/about/contact/</loc>
 +</url>
 +<url>
 +<loc>/docs/motivation/</loc>
 +</url>
 +<url>
 +<loc>/docs/core-concept/</loc>
 +</url>
 +<url>
 +<loc>/about/rewards/</loc>
 +</url>
 +<url>
 +<loc>/docs/cli-admin-tool/</loc>
 +</url>
 +<url>
 +<loc>/docs/cluster-deployment/</loc>
 +</url>
 +<url>
 +<loc>/docs/pull-request/</loc>
 +</url>
 +<url>
 +<loc>/docs/code-guidelines/</loc>
 +</url>
 +<url>
 +<loc>/docs/documentation/</loc>
 +</url>
 +<url>
 +<loc>/docs/faq/</loc>
 +</url>
 +<url>
 +<loc>/docs/release-manual</loc>
 +</url>
 +<url>
 +<loc>/dowloading/releases/</loc>
 +</url>
 +<url>
 +<loc>/docs/roadmap/</loc>
 +</url>
 +<url>
++<loc>/docs/batch-example/</loc>
++</url>
++<url>
++<loc>/docs/broadcast-example/</loc>
++</url>
++<url>
++<loc>/docs/rmq-deployment/</loc>
++</url>
++<url>
++<loc>/docs/order-example/</loc>
++</url>
++<url>
++<loc>/docs/rmq-arc/</loc>
++</url>
++<url>
++<loc>/docs/schedule-example/</loc>
++</url>
++<url>
++<loc>/docs/simple-example/</loc>
++</url>
++<url>
 +<loc>/about/</loc>
 +</url>
 +<url>
 +<loc>/archive-layout-with-content/</loc>
 +</url>
 +<url>
 +<loc>/docs/best-practice-broker/</loc>
 +</url>
 +<url>
 +<loc>/docs/best-practice-consumer/</loc>
 +</url>
 +<url>
 +<loc>/docs/best-practice-namesvr/</loc>
 +</url>
 +<url>
 +<loc>/docs/best-practice-producer/</loc>
 +</url>
 +<url>
 +<loc>/categories/</loc>
 +</url>
 +<url>
 +<loc>/collection-archive/</loc>
 +</url>
 +<url>
 +<loc>/community/</loc>
 +</url>
 +<url>
 +<loc>/customer/</loc>
 +</url>
 +<url>
 +<loc>/</loc>
 +</url>
 +<url>
 +<loc>/tags/</loc>
 +</url>
 +<url>
 +<loc>/year-archive/</loc>
 +</url>
 +<url>
 +<loc>/about/team/</loc>
 +</url>
 +<url>
 +<loc>/about/contact/</loc>
 +</url>
 +<url>
 +<loc>/about/rewards/</loc>
 +</url>
 +<url>
 +<loc>/docs/quick-start/</loc>
 +</url>
 +<url>
 +<loc>/docs/motivation/</loc>
 +</url>
 +<url>
 +<loc>/docs/core-concept/</loc>
 +</url>
 +<url>
 +<loc>/docs/cli-admin-tool/</loc>
 +</url>
 +<url>
 +<loc>/docs/cluster-deployment/</loc>
 +</url>
 +<url>
 +<loc>/docs/pull-request/</loc>
 +</url>
 +<url>
 +<loc>/docs/code-guidelines/</loc>
 +</url>
 +<url>
 +<loc>/docs/documentation/</loc>
 +</url>
 +<url>
 +<loc>/docs/faq/</loc>
 +</url>
 +<url>
 +<loc>/docs/release-manual</loc>
 +</url>
 +<url>
 +<loc>/dowloading/releases/</loc>
 +</url>
 +<url>
 +<loc>/docs/roadmap/</loc>
 +</url>
 +<url>
++<loc>/docs/batch-example/</loc>
++</url>
++<url>
++<loc>/docs/broadcast-example/</loc>
++</url>
++<url>
++<loc>/docs/rmq-deployment/</loc>
++</url>
++<url>
++<loc>/docs/order-example/</loc>
++</url>
++<url>
++<loc>/docs/rmq-arc/</loc>
++</url>
++<url>
++<loc>/docs/schedule-example/</loc>
++</url>
++<url>
++<loc>/docs/simple-example/</loc>
++</url>
++<url>
 +<loc>/docs/best-practice-broker/</loc>
 +</url>
 +<url>
 +<loc>/docs/best-practice-consumer/</loc>
 +</url>
 +<url>
 +<loc>/docs/best-practice-namesvr/</loc>
 +</url>
 +<url>
 +<loc>/docs/best-practice-producer/</loc>
 +</url>
 +<url>
 +<loc>/assets/attachment/launch-rocketmq-code-marathon.pdf</loc>
- <lastmod>2017-03-31T09:01:32+08:00</lastmod>
++<lastmod>2017-01-09T17:53:23+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/assets/attachment/launch-second-rocketmq-code-marathon.pdf</loc>
- <lastmod>2017-04-07T09:13:08+08:00</lastmod>
++<lastmod>2017-04-25T01:00:49+08:00</lastmod>
 +</url>
 +</urlset>


[08/16] incubator-rocketmq-site git commit: Release at 2017.04.25

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/simple-example/index.html
----------------------------------------------------------------------
diff --cc content/docs/simple-example/index.html
index 0000000,0000000..b4c04d7
new file mode 100644
--- /dev/null
+++ b/content/docs/simple-example/index.html
@@@ -1,0 -1,0 +1,774 @@@
++<!doctype html>
++<html lang="en" class="no-js">
++  <head>
++    <meta charset="utf-8">
++
++<!-- begin SEO -->
++
++
++
++
++
++
++
++
++
++<title>Simple Message Example - Apache RocketMQ</title>
++
++
++
++
++<meta name="description" content="How to send simple message to reduce pull in RocketMQ.">
++
++
++
++
++<meta property="og:locale" content="en">
++<meta property="og:site_name" content="Apache RocketMQ">
++<meta property="og:title" content="Simple Message Example">
++
++
++
++
++  <meta property="og:description" content="How to send simple message to reduce pull in RocketMQ.">
++
++
++
++  <meta name="twitter:site" content="@ApacheRocketMQ">
++  <meta name="twitter:title" content="Simple Message Example">
++  <meta name="twitter:description" content="How to send simple message to reduce pull in RocketMQ.">
++  <meta name="twitter:url" content="">
++
++  
++    <meta name="twitter:card" content="summary">
++    
++  
++
++  
++
++
++
++  
++
++  
++
++
++
++
++
++  <meta property="og:type" content="article">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
++
++
++
++
++
++
++
++
++  <script type="application/ld+json">
++    {
++      "@context" : "http://schema.org",
++      "@type" : "Person",
++      "name" : "Apache RocketMQ",
++      "url" : null,
++      "sameAs" : null
++    }
++  </script>
++
++
++
++  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
++
++
++  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
++
++
++
++
++<!-- end SEO -->
++
++
++<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
++
++<!-- http://t.co/dKP3o1e -->
++<meta name="HandheldFriendly" content="True">
++<meta name="MobileOptimized" content="320">
++<meta name="viewport" content="width=device-width, initial-scale=1.0">
++
++<script>
++  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
++</script>
++
++<!-- For all browsers -->
++<link rel="stylesheet" href="/assets/css/main.css">
++
++<meta http-equiv="cleartype" content="on">
++    <!-- start custom head snippets -->
++
++<!-- insert favicons. use http://realfavicongenerator.net/ -->
++
++<!-- end custom head snippets -->
++  </head>
++
++  <body class="layout--single">
++
++    <!--[if lt IE 9]>
++<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
++<![endif]-->
++    <div class="masthead">
++  <div class="masthead__inner-wrap">
++    <div class="masthead__menu">
++      <nav id="site-nav" class="greedy-nav">
++        <button><div class="navicon"></div></button>
++        <ul class="visible-links">
++          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
++          
++        </ul>
++        <ul class="hidden-links hidden"></ul>
++      </nav>
++    </div>
++  </div>
++</div>
++
++    
++
++
++
++<div id="main" role="main">
++  
++  <div class="sidebar sticky">
++  
++  
++    
++      
++      
++      
++    
++    
++      
++
++<nav class="nav__list">
++  
++  <input id="ac-toc" name="accordion-toc" type="checkbox" />
++  <label for="ac-toc">Toggle Menu</label>
++  <ul class="nav__items">
++    
++      <li>
++        
++          <span class="nav__sub-title">User Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/simple-example/" class="active">Simple Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Best Practice</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Release Notes</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/dowloading/releases/" class="">Download</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
++        
++
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
++        
++
++        
++      </li>
++    
++  </ul>
++</nav>
++    
++  
++  </div>
++
++
++  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
++    <meta itemprop="headline" content="Simple Message Example">
++    <meta itemprop="description" content="How to send simple message to reduce pull in RocketMQ.">
++    <meta itemprop="datePublished" content="April 25, 2017">
++    <meta itemprop="dateModified" content="April 25, 2017">
++
++    <div class="page__inner-wrap">
++      
++        <header>
++          <h1 class="page__title" itemprop="headline">Simple Message Example
++</h1>
++          
++        </header>
++      
++
++      <section class="page__content" itemprop="text">
++        <aside class="sidebar__right">
++<nav class="toc">
++    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
++<ul class="toc__menu" id="markdown-toc">
++  <li><a href="#reliable-asynchronous-transmission" id="markdown-toc-reliable-asynchronous-transmission">Reliable asynchronous transmission</a></li>
++</ul>
++
++  </nav>
++</aside>
++
++<p>Use Rocketmq to send ordinary messages have three ways: reliable synchronous transmission, reliable
++asynchronous transmission, one-way (Oneway) send.</p>
++
++<p>This paper introduces the principle of
++each implementation, the use of the scene and the similarities and differences between the
++three implementations, and provides a code example for reference
++Reliable synchronous transmission
++Principle: synchronous transmission refers to the sender of the message issued after the
++data are received after the recipient sends back a packet should be made under the mode of
++communication
++Application scenarios: this way the application of the scene is very extensive, such as
++important notification messages, SMS notification, SMS marketing system, etc..</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">Producer</span> <span class="o">{</span>
++    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">MQClientException</span><span class="o">,</span>
++        <span class="n">InterruptedException</span> <span class="o">{</span>
++         <span class="cm">/*
++         * Instantiate with a producer group name.
++         */</span>
++        <span class="n">DefaultMQProducer</span> <span class="n">producer</span> <span class="o">=</span> <span class="k">new</span>
++            <span class="n">DefaultMQProducer</span><span class="o">(</span><span class="s">"please_rename_unique_group_name"</span><span class="o">);</span>
++         <span class="cm">/*
++         * Specify name server addresses.
++         * &lt;p/&gt;
++         *
++         * Alternatively, you may specify name server addresses via exporting
++        environmental variable: NAMESRV_ADDR
++         * &lt;pre&gt;
++         * {@code
++         * producer.setNamesrvAddr("name-server1-ip:9876;name-server2-ip:9876");
++         * }
++         * &lt;/pre&gt;
++         */</span>
++         <span class="cm">/*
++         * Launch the instance.
++         */</span>
++        <span class="n">producer</span><span class="o">.</span><span class="na">start</span><span class="o">();</span>
++        <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">1000</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span>
++            <span class="k">try</span> <span class="o">{</span>
++                 <span class="cm">/*
++                 * Create a message instance, specifying topic, tag and message
++                body.
++                 */</span>
++                <span class="n">Message</span> <span class="n">msg</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Message</span><span class="o">(</span><span class="s">"TopicTest"</span> <span class="cm">/* Topic */</span><span class="o">,</span>
++                    <span class="s">"TagA"</span> <span class="cm">/* Tag */</span><span class="o">,</span>
++                    <span class="o">(</span><span class="s">"Hello RocketMQ "</span> <span class="o">+</span>
++                        <span class="n">i</span><span class="o">).</span><span class="na">getBytes</span><span class="o">(</span><span class="n">RemotingHelper</span><span class="o">.</span><span class="na">DEFAULT_CHARSET</span><span class="o">)</span> <span class="cm">/* Message body */</span>
++                <span class="o">);</span>
++                 <span class="cm">/*
++                 * Call send message to deliver message to one of brokers.
++                 */</span>
++                <span class="n">SendResult</span> <span class="n">sendResult</span> <span class="o">=</span> <span class="n">producer</span><span class="o">.</span><span class="na">send</span><span class="o">(</span><span class="n">msg</span><span class="o">);</span>
++                <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"%s%n"</span><span class="o">,</span> <span class="n">sendResult</span><span class="o">);</span>
++            <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
++                <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
++                <span class="n">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">1000</span><span class="o">);</span>
++            <span class="o">}</span>
++        <span class="o">}</span>
++         <span class="cm">/*
++         * Shut down once the producer instance is not longer in use.
++         */</span>
++        <span class="n">producer</span><span class="o">.</span><span class="na">shutdown</span><span class="o">();</span>
++    <span class="o">}</span>
++<span class="o">}</span>
++
++</code></pre>
++</div>
++<h4 id="reliable-asynchronous-transmission">Reliable asynchronous transmission</h4>
++<p>Principle: asynchronous transmission refers to the sender sends the data, not the receiver
++back to respond, and then send the next packet communication. Asynchronous send MQ,
++users need to realize asynchronous callback interface (SendCallback), in the implementation
++of asynchronous send message to the application server, without waiting for a response can
++be returned directly to the receiving server, through the callback interface response, and
++response to the server for processing results.</p>
++
++<p>Applications: asynchronous transmission is generally used to link time-consuming, RT
++response time sensitive business scenarios, such as user video upload after notification to
++start transcoding, the transcoding after push notification transcoding results.</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">AsyncProducer</span> <span class="o">{</span>
++    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">MQClientException</span><span class="o">,</span>
++        <span class="n">InterruptedException</span><span class="o">,</span> <span class="n">UnsupportedEncodingException</span> <span class="o">{</span>
++        <span class="n">DefaultMQProducer</span> <span class="n">producer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DefaultMQProducer</span><span class="o">(</span><span class="s">"Jodie_Daily_test"</span><span class="o">);</span>
++        <span class="n">producer</span><span class="o">.</span><span class="na">start</span><span class="o">();</span>
++        <span class="n">producer</span><span class="o">.</span><span class="na">setRetryTimesWhenSendAsyncFailed</span><span class="o">(</span><span class="mi">0</span><span class="o">);</span>
++        <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">10000000</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span>
++            <span class="k">try</span> <span class="o">{</span>
++                <span class="kd">final</span> <span class="kt">int</span> <span class="n">index</span> <span class="o">=</span> <span class="n">i</span><span class="o">;</span>
++                <span class="n">Message</span> <span class="n">msg</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Message</span><span class="o">(</span><span class="s">"Jodie_topic_1023"</span><span class="o">,</span>
++                    <span class="s">"TagA"</span><span class="o">,</span>
++                    <span class="s">"OrderID188"</span><span class="o">,</span>
++                    <span class="s">"Hello world"</span><span class="o">.</span><span class="na">getBytes</span><span class="o">(</span><span class="n">RemotingHelper</span><span class="o">.</span><span class="na">DEFAULT_CHARSET</span><span class="o">));</span>
++                <span class="n">producer</span><span class="o">.</span><span class="na">send</span><span class="o">(</span><span class="n">msg</span><span class="o">,</span> <span class="k">new</span> <span class="n">SendCallback</span><span class="o">()</span> <span class="o">{</span>
++                    <span class="nd">@Override</span>
++                    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onSuccess</span><span class="o">(</span><span class="n">SendResult</span> <span class="n">sendResult</span><span class="o">)</span> <span class="o">{</span>
++                        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"%-10d OK %s %n"</span><span class="o">,</span> <span class="n">index</span><span class="o">,</span>
++                            <span class="n">sendResult</span><span class="o">.</span><span class="na">getMsgId</span><span class="o">());</span>
++                    <span class="o">}</span>
++                    <span class="nd">@Override</span>
++                    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">onException</span><span class="o">(</span><span class="n">Throwable</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
++                        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"%-10d Exception %s %n"</span><span class="o">,</span> <span class="n">index</span><span class="o">,</span> <span class="n">e</span><span class="o">);</span>
++                        <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
++                    <span class="o">}</span>
++                <span class="o">});</span>
++            <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
++                <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
++            <span class="o">}</span>
++        <span class="o">}</span>
++        <span class="n">producer</span><span class="o">.</span><span class="na">shutdown</span><span class="o">();</span>
++    <span class="o">}</span>
++<span class="o">}</span>
++</code></pre>
++</div>
++
++<p>Unidirectional (Oneway) transmission
++Principle: one-way (Oneway) to send the message is only responsible for sending the
++message, do not wait for the server to respond and no callback function to trigger, that is,
++send the request does not wait for a reply. The process of sending messages in this way
++takes a very short time, usually at the microsecond level.
++Application scenarios: for some very short, but not high reliability requirements of the scene,
++such as log collection.</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">producerOneWay</span> <span class="o">{</span>
++    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">MQClientException</span><span class="o">,</span>
++        <span class="n">InterruptedException</span><span class="o">,</span> <span class="n">MQClientException</span> <span class="o">{</span>
++         <span class="cm">/*
++         * Instantiate with a producer group name.
++         */</span>
++        <span class="n">DefaultMQProducer</span> <span class="n">producer</span> <span class="o">=</span> <span class="k">new</span>
++            <span class="n">DefaultMQProducer</span><span class="o">(</span><span class="s">"please_rename_unique_group_name"</span><span class="o">);</span>
++         <span class="cm">/*
++         * Specify name server addresses.
++         * &lt;p/&gt;
++         *
++         * Alternatively, you may specify name server addresses via exporting
++        environmental variable: NAMESRV_ADDR
++         * &lt;pre&gt;
++         * {@code
++         * producer.setNamesrvAddr("name-server1-ip:9876;name-server2-ip:9876");
++         * }
++         * &lt;/pre&gt;
++         */</span>
++         <span class="cm">/*
++         * Launch the instance.
++         */</span>
++        <span class="n">producer</span><span class="o">.</span><span class="na">start</span><span class="o">();</span>
++        <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">1000</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span>
++            <span class="k">try</span> <span class="o">{</span>
++                 <span class="cm">/*
++                 * Create a message instance, specifying topic, tag and message
++                body.
++                 */</span>
++                <span class="n">Message</span> <span class="n">msg</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Message</span><span class="o">(</span><span class="s">"TopicTest"</span> <span class="cm">/* Topic */</span><span class="o">,</span>
++                    <span class="s">"TagA"</span> <span class="cm">/* Tag */</span><span class="o">,</span>
++                    <span class="o">(</span><span class="s">"Hello RocketMQ "</span> <span class="o">+</span>
++                        <span class="n">i</span><span class="o">).</span><span class="na">getBytes</span><span class="o">(</span><span class="n">RemotingHelper</span><span class="o">.</span><span class="na">DEFAULT_CHARSET</span><span class="o">)</span> <span class="cm">/* Message body */</span>
++                <span class="o">);</span>
++                 <span class="cm">/*
++                 * Call send message to deliver message to one of brokers.
++                 */</span>
++                <span class="n">producer</span><span class="o">.</span><span class="na">sendOneway</span><span class="o">(</span><span class="n">msg</span><span class="o">);</span>
++            <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
++                <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
++                <span class="n">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">1000</span><span class="o">);</span>
++            <span class="o">}</span>
++        <span class="o">}</span>
++         <span class="cm">/*
++         * Shut down once the producer instance is not longer in use.
++         */</span>
++        <span class="n">producer</span><span class="o">.</span><span class="na">shutdown</span><span class="o">();</span>
++    <span class="o">}</span>
++<span class="o">}</span>
++
++</code></pre>
++</div>
++
++        
++      </section>
++
++      <footer class="page__meta">
++        
++        
++
++
++        
++          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-04-25">April 25, 2017</time></p>
++        
++      </footer>
++
++      <section class="page__share">
++  
++    <h4 class="page__share-title">Share on</h4>
++  
++
++  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Simple Message Example /docs/simple-example/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
++
++  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/simple-example/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
++
++  <a href="https://plus.google.com/share?url=/docs/simple-example/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
++
++  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/simple-example/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
++</section>
++
++
++      
++  <nav class="pagination">
++    
++      <a href="/docs/schedule-example/" class="pagination--pager" title="Schedule example
++">Previous</a>
++    
++    
++      <a href="/docs/best-practice-broker/" class="pagination--pager" title="Best Practice For Broker
++">Next</a>
++    
++  </nav>
++
++    </div>
++
++    
++      <div class="page__comments">
++  
++  
++    <h4 class="page__comments-title">Leave a Comment</h4>
++    <section id="disqus_thread"></section>
++  
++</div>
++    
++  </article>
++
++  
++  
++</div>
++
++    <div class="page__footer">
++      <footer>
++        <!-- start custom footer snippets -->
++
++<!-- end custom footer snippets -->
++        <style type="text/css">
++  div.columns   { float: left; margin-left: 10px;}
++  div.clear     { clear: both; } 
++</style>
++<div>
++  <div class="columns">
++    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
++  </div>
++  <div class="columns" style="width: 80%">
++    <div class="page__footer-follow">
++      <ul class="social-icons">
++        
++          <li><strong>Follow:</strong></li>
++        
++        
++          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
++        
++        
++        
++          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
++        
++        
++        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
++      </ul>
++    </div>
++
++    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
++  </div>
++</div>
++<div class="clear"></div>
++      </footer>
++    </div>
++
++    <script src="/assets/js/main.min.js"></script>
++
++
++
++
++  <script>
++  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
++  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
++  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
++  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
++
++  ga('create', 'UA-89603173-1', 'auto');
++  ga('send', 'pageview');
++</script>
++
++<script>
++var _hmt = _hmt || [];
++(function() {
++  var hm = document.createElement("script");
++  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
++  var s = document.getElementsByTagName("script")[0]; 
++  s.parentNode.insertBefore(hm, s);
++})();
++</script>
++
++
++
++
++  
++  <script type="text/javascript">
++  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
++  	var disqus_shortname = 'rocketmq';
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function() {
++  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
++  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
++  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
++  	})();
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function () {
++  		var s = document.createElement('script'); s.async = true;
++  		s.type = 'text/javascript';
++  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
++  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
++  	}());
++  </script>
++  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
++
++
++
++
++
++
++  </body>
++</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/dowloading/releases/index.html
----------------------------------------------------------------------
diff --cc content/dowloading/releases/index.html
index fa2dfaf,0000000..af2725e
mode 100644,000000..100644
--- a/content/dowloading/releases/index.html
+++ b/content/dowloading/releases/index.html
@@@ -1,537 -1,0 +1,597 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Downloading the Apache RocketMQ Releases - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="Use the links below to download the Apache RocketMQ Releases, the latest release is 4.0.0-incubating.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Downloading the Apache RocketMQ Releases">
 +
 +
 +
 +
 +  <meta property="og:description" content="Use the links below to download the Apache RocketMQ Releases, the latest release is 4.0.0-incubating.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Downloading the Apache RocketMQ Releases">
 +  <meta name="twitter:description" content="Use the links below to download the Apache RocketMQ Releases, the latest release is 4.0.0-incubating.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="active">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Downloading the Apache RocketMQ Releases">
 +    <meta itemprop="description" content="Use the links below to download the Apache RocketMQ Releases, the latest release is 4.0.0-incubating.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="February 21, 2017">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Downloading the Apache RocketMQ Releases
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>Use the links below to download the Apache RocketMQ Releases, the latest release is 4.0.0-incubating.</p>
 +
 +<h1 id="400-incubating-release">4.0.0-incubating release</h1>
 +
 +<ul>
 +  <li>Source: <a href="https://www.apache.org/dyn/closer.cgi?path=incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-source-release.zip">rocketmq-all-4.0.0-incubating-source-release.zip</a> [<a href="https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-source-release.zip.asc">PGP</a>] [<a href="https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-source-release.zip.md5">MD5</a>] [<a href="https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-source-release.zip.sha1">SHA1</a>]</li>
 +  <li>Binary: <a href="https://www.apache.org/dyn/closer.cgi?path=incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-bin-release.zip">rocketmq-all-4.0.0-incubating-bin-release.zip</a> [<a href="https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-bin-release.zip.asc">PGP</a>] [<a href="https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-bin-release.zip.md5">MD5</a>] [<a href="https://www.apache.org/dist/incubator/rocketmq/4.0.0-incubating/rocketmq-all-4.0.0-incubating-bin-release.zip.sha1">SHA1</a>]</li>
 +</ul>
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-02-21">February 21, 2017</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Downloading the Apache RocketMQ Releases /dowloading/releases/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/dowloading/releases/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/dowloading/releases/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/dowloading/releases/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/release-manual" class="pagination--pager" title="Release Manual
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/roadmap/" class="pagination--pager" title="The RoadMap of Apache RocketMQ
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>



[12/16] incubator-rocketmq-site git commit: Release at 2017.04.25

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/core-concept/index.html
----------------------------------------------------------------------
diff --cc content/docs/core-concept/index.html
index 2df252b,0000000..3144309
mode 100644,000000..100644
--- a/content/docs/core-concept/index.html
+++ b/content/docs/core-concept/index.html
@@@ -1,656 -1,0 +1,716 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Core Concept - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Core Concept">
 +
 +
 +
 +
 +  <meta property="og:description" content="">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Core Concept">
 +  <meta name="twitter:description" content="">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="active">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="active">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Core Concept">
 +    <meta itemprop="description" content="">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 17, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Core Concept
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p><img src="/assets/images/rmq-model.png" alt="RocketMQ model" /></p>
 +
 +<p>From the above model, we can look deeper into some topics about messaging system design:</p>
 +
 +<aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#producer" id="markdown-toc-producer">Producer</a>    <ul>
 +      <li><a href="#producer-group" id="markdown-toc-producer-group">Producer Group</a></li>
 +    </ul>
 +  </li>
 +  <li><a href="#consumer" id="markdown-toc-consumer">Consumer</a>    <ul>
 +      <li><a href="#pullconsumer" id="markdown-toc-pullconsumer">PullConsumer</a></li>
 +      <li><a href="#pushconsumer" id="markdown-toc-pushconsumer">PushConsumer</a></li>
 +      <li><a href="#consumer-group" id="markdown-toc-consumer-group">Consumer Group</a></li>
 +    </ul>
 +  </li>
 +  <li><a href="#topic" id="markdown-toc-topic">Topic</a></li>
 +  <li><a href="#message" id="markdown-toc-message">Message</a>    <ul>
 +      <li><a href="#message-queue" id="markdown-toc-message-queue">Message Queue</a></li>
 +      <li><a href="#tag" id="markdown-toc-tag">Tag</a></li>
 +      <li><a href="#broker" id="markdown-toc-broker">Broker</a></li>
 +    </ul>
 +  </li>
 +  <li><a href="#name-server" id="markdown-toc-name-server">Name Server</a></li>
 +  <li><a href="#message-model" id="markdown-toc-message-model">Message Model</a></li>
 +  <li><a href="#message-order" id="markdown-toc-message-order">Message Order</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<ul>
 +  <li>Consumer Concurrency</li>
 +  <li>Consumer Hot Issues</li>
 +  <li>Consumer Load Balance</li>
 +  <li>Message Router</li>
 +  <li>Connection Multiplex</li>
 +  <li>Canary Deployments</li>
 +</ul>
 +
 +<h1 id="producer">Producer</h1>
 +
 +<p>A producer sends messages generated by the business application systems to brokers. RocketMQ provides multiple paradigms of sending: synchronous, asynchronous and one-way.</p>
 +
 +<h2 id="producer-group">Producer Group</h2>
 +
 +<p>Producers of the same role are grouped together. A different producer instance of the same producer group may be contacted by a broker to commit or roll back a transaction in case the original producer crashed after starting the transaction.</p>
 +
 +<p><strong>Warning</strong>: Considering the provided producer is sufficiently powerful at sending messages, only one instance is allowed per producer group and process to avoid unnecessarily initializing of producer instances.</p>
 +
 +<h1 id="consumer">Consumer</h1>
 +
 +<p>A Consumer pulls messages from brokers and feeds them into application. In perspective of user application, two types of consumers are provided:</p>
 +
 +<h2 id="pullconsumer">PullConsumer</h2>
 +
 +<p>Pull consumer actively pulls messages from brokers. Once batches of messages are pulled, user application initiates consuming process.</p>
 +
 +<h2 id="pushconsumer">PushConsumer</h2>
 +
 +<p>Push consumer, on the other hand, encapsulates message pulling, consuming progress maintaining and other effortful work inside, leaving a callback interface to end user to implement which will be executed on message arrival.</p>
 +
 +<h2 id="consumer-group">Consumer Group</h2>
 +
 +<p>Similar to previously mentioned producer group, consumers of the exactly same role are grouped together and named <strong>Consumer Group</strong>.</p>
 +
 +<p>Consumer Group is a great concept with which achieving goals of load-balance and fault-tolerance, in terms of message consuming, is super easy.</p>
 +
 +<p><strong>Warning</strong>: consumer instances of a consumer group <strong>must</strong> have exactly same topic subscription(s).</p>
 +
 +<h1 id="topic">Topic</h1>
 +
 +<p>Topic is a category to which producers deliver messages and from which consumers pull messages. Topics have very loose relation with producers and consumers. Specifically, a topic may have zero, one or multiple producers that sends messages to it; conversely, a producer can sends messages of different topics. In consumer\u2019s view, a topic may be subscribed by zero, one or multiple consumer groups; and a consumer group, in the same paradigm, may subscribe one or multiple topics as long as instances of this group keep their subscription consistent as emphasized in the previous section.</p>
 +
 +<h1 id="message">Message</h1>
 +
 +<p>Message is the envelope of your information to deliver. A message must be specified with a topic, which can be interpreted as address of your letter to mail to. A message may also have an optional tag set. Extra key-value pairs may also be included. For example, you may set a business key for your message and look up the message on broker server to diagnose issues during development.</p>
 +
 +<h2 id="message-queue">Message Queue</h2>
 +
 +<p>Topic, internally, is logically partitioned into one or more sub-topics. We call these sub-topics \u201cmessage queues\u201d. This concept plays a major role in implementing valuable features, including fail-over, maximum concurrency, etc.</p>
 +
 +<h2 id="tag">Tag</h2>
 +
 +<p>Tag, which can be thought as sub-topic, provides an extra flexibility for user. Through introducing tag,  messages with different purposes from the same business module may have the same topic yet different tag. It would be helpful to keep your code clean and coherent.</p>
 +
 +<h2 id="broker">Broker</h2>
 +
 +<p>Broker is the major role of the RocketMQ system. It receives messages sent from producers, store them and being prepared to serve pull requests from consumers. It also stores message consuming related meta data, including consumer groups, consuming progress offsets and topic / queue info.</p>
 +
 +<h1 id="name-server">Name Server</h1>
 +
 +<p>Name server serves as the routing information provider. Producer/Consumer clients look up topics to find broker list to read from and write to.</p>
 +
 +<h1 id="message-model">Message Model</h1>
 +
 +<ul>
 +  <li>
 +    <p>Clustering</p>
 +  </li>
 +  <li>
 +    <p>Broadcasting</p>
 +  </li>
 +</ul>
 +
 +<h1 id="message-order">Message Order</h1>
 +
 +<p>When DefaultMQPushConsumer is employed, you may decide to consume messages orderly or concurrently.</p>
 +
 +<ul>
 +  <li>Orderly</li>
 +</ul>
 +
 +<p>Consuming messages orderly means messages are consumed the same order they are sent by producers for each message queue. If you are dealing with scenario that global order is mandatory, make sure the topic you use has only one message queue.</p>
 +
 +<p><strong>Warn</strong>: If consuming orderly is specified, the maximum concurrency of message consuming is the number of message queues subscribed by the consumer group.</p>
 +
 +<ul>
 +  <li>Concurrently</li>
 +</ul>
 +
 +<p>When consuming concurrently, maximum concurrency of message consuming is only limited by thread pool specified for each consumer client.</p>
 +
 +<p><strong>Warn</strong>: Message order is no longer guaranteed in this mode.</p>
 +
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-17">December 17, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Core Concept /docs/core-concept/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/core-concept/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/core-concept/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/core-concept/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/motivation/" class="pagination--pager" title="Motivation
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/cli-admin-tool/" class="pagination--pager" title="CLI Admin Tool
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/documentation/index.html
----------------------------------------------------------------------
diff --cc content/docs/documentation/index.html
index 4f326cb,0000000..9c9720b
mode 100644,000000..100644
--- a/content/docs/documentation/index.html
+++ b/content/docs/documentation/index.html
@@@ -1,590 -1,0 +1,650 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Documentation - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="Apache RocketMQ Documentation">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Documentation">
 +
 +
 +
 +
 +  <meta property="og:description" content="Apache RocketMQ Documentation">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Documentation">
 +  <meta name="twitter:description" content="Apache RocketMQ Documentation">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Documentation">
 +    <meta itemprop="description" content="Apache RocketMQ Documentation">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="March 02, 2017">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Documentation
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a>    <ul>
 +      <li><a href="#api-documentation" id="markdown-toc-api-documentation">API Documentation</a></li>
 +      <li><a href="#documentation-content" id="markdown-toc-documentation-content">Documentation Content</a></li>
 +    </ul>
 +  </li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h1 id="introduction">Introduction</h1>
 +
 +<p>Quality documentation is critically important to develop and maintain a project. The better the documentation is, the 
 +easier it will be for other participants to understand and respond properly.</p>
 +
 +<h2 id="api-documentation">API Documentation</h2>
 +
 +<p>The API is documented through javadoc comments.</p>
 +
 +<p>All classes, interfaces, methods and field variables should be documented. Public methods, in particular, should be 
 +commented fully \u2013 method purpose, return value, parameters and exceptions.</p>
 +
 +<p>Below is an example:</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>/**
 + * Send message in synchronous mode. This method returns only when the sending procedure totally completes.
 + * &lt;/p&gt;
 + *
 + * &lt;strong&gt;Warn:&lt;/strong&gt; this method has internal retry-mechanism, that is, internal implementation will retry
 + * {@link #retryTimesWhenSendFailed} times before claiming failure. As a result, multiple messages may potentially
 + * delivered to broker(s). It's up to the application developers to resolve potential duplication issue.
 + *
 + * @param msg Message to send.
 + * @return {@link SendResult} instance to inform senders details of the deliverable, say Message ID of the message,
 + * {@link SendStatus} indicating broker storage/replication status, message queue sent to, etc.
 + * @throws MQClientException if there is any client error.
 + * @throws RemotingException if there is any network-tier error.
 + * @throws MQBrokerException if there is any error with broker.
 + * @throws InterruptedException if the sending thread is interrupted.
 + */
 +@Override
 +public SendResult send(Message msg) throws MQClientException, RemotingException, MQBrokerException, InterruptedException {
 +    return this.defaultMQProducerImpl.send(msg);
 +}
 +</code></pre>
 +</div>
 +
 +<h2 id="documentation-content">Documentation Content</h2>
 +
 +<p>Every class and interface should have summary documentation, explaining its general function and purpose.  Additionally,
 +thread safety information should be included. If you are working on a class which represents a core concept, adding sample
 +usage is always a good practice.</p>
 +
 +<p>When writing API documentation, please keep a professional tune: write in active voice, be as descriptive as possible. 
 +Keep in mind that the audience may be a developer who would use RocketMQ for the first time, or a contributor who just gets
 + involved with the codebase. Either of them is not as familiar with Apache RocketMQ as you are.</p>
 +
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-03-02">March 02, 2017</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Documentation /docs/documentation/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/documentation/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/documentation/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/documentation/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/code-guidelines/" class="pagination--pager" title="Coding Guidelines
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/faq/" class="pagination--pager" title="Frequently Asked Questions
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/faq/index.html
----------------------------------------------------------------------
diff --cc content/docs/faq/index.html
index 9a2afd9,0000000..e748b12
mode 100644,000000..100644
--- a/content/docs/faq/index.html
+++ b/content/docs/faq/index.html
@@@ -1,630 -1,0 +1,690 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Frequently Asked Questions - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.General1. Why create rocketmq project instead of selecting other products?In some cases, slower consumers can slow down the producers. We tried our best efforts to handle this problems through throttling, circuit breaker or degradation, but it cannot scale out gracefully. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements such as low latency and high reliability. So we decided to innovate a new messaging middleware to handle a broad set of use cases, ranging from traditional publish/subscribe scenario to demandingly high volume realtime transaction system that tolerates no message loss.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Frequently Asked Questions">
 +
 +
 +
 +
 +  <meta property="og:description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.General1. Why create rocketmq project instead of selecting other products?In some cases, slower consumers can slow down the producers. We tried our best efforts to handle this problems through throttling, circuit breaker or degradation, but it cannot scale out gracefully. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements such as low latency and high reliability. So we decided to innovate a new messaging middleware to handle a broad set of use cases, ranging from traditional publish/subscribe scenario to demandingly high volume realtime transaction system that tolerates no message loss.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Frequently Asked Questions">
 +  <meta name="twitter:description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.General1. Why create rocketmq project instead of selecting other products?In some cases, slower consumers can slow down the producers. We tried our best efforts to handle this problems through throttling, circuit breaker or degradation, but it cannot scale out gracefully. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements such as low latency and high reliability. So we decided to innovate a new messaging middleware to handle a broad set of use cases, ranging from traditional publish/subscribe scenario to demandingly high volume realtime transaction system that tolerates no message loss.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Frequently Asked Questions">
 +    <meta itemprop="description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.General1. Why create rocketmq project instead of selecting other products?In some cases, slower consumers can slow down the producers. We tried our best efforts to handle this problems through throttling, circuit breaker or degradation, but it cannot scale out gracefully. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements such as low latency and high reliability. So we decided to innovate a new messaging middleware to handle a broad set of use cases, ranging from traditional publish/subscribe scenario to demandingly high volume realtime transaction system that tolerates no message loss.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 28, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Frequently Asked Questions
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.</p>
 +
 +<h2 id="general">General</h2>
 +<h3 id="1-why-create-rocketmq-project-instead-of-selecting-other-products">1. Why create rocketmq project instead of selecting other products?</h3>
 +<p>In some cases, slower consumers can slow down the producers. We tried our best efforts to handle this problems through throttling, circuit breaker or degradation, but it cannot scale out gracefully. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements such as low latency and high reliability. So we decided to innovate a new messaging middleware to handle a broad set of use cases, ranging from traditional publish/subscribe scenario to demandingly high volume realtime transaction system that tolerates no message loss.</p>
 +
 +<h3 id="2-do-i-have-to-install-other-softewares-such-as-zookeeper-to-use-rocketmq">2. Do I have to install other softewares, such as zookeeper, to use RocketMQ?</h3>
 +<p>No. RocketMQ can run without any other softeware, you can run broker server and name server indepentently. Aslo, the topic can be created by using command, such as sh mqadmin updatetopic etc. After creating successfully, you enjoy yourself with RocketMQ.</p>
 +
 +<h2 id="usage">Usage</h2>
 +<h3 id="1-where-does-the-newly-created-consumer-id-start-consuming-messages">1. Where does the newly created Consumer ID start consuming messages?</h3>
 +
 +<ol>
 +  <li>If the topic sends a message within three days, then the consumer start consume message from the first message saved in the server.</li>
 +  <li>If the topic sends a message in three days ago, the consumer start consume message from the latest message in the server, in other words, starting to consume the message queue tail.</li>
 +  <li>If such consumer is the second reboot, then start to consumer message from the last consumption location.</li>
 +</ol>
 +
 +<h3 id="2-how-to-reconsume-message-when-consumption-fails">2. How to reconsume message when consumption fails?</h3>
 +<div class="highlighter-rouge"><pre class="highlight"><code>1.Cluster consumption pattern
 +The consumer business logic code return Action.ReconsumerLater, or NULL, or throws an exception, the message will go up to 16 times retry procedure, if still fail to retry 16 times, then such message descarded.
 +
 +2.Broadcast consumption pattern
 +The broadcaset consumption still ensures that a message is consumered at least once, but it is consumed fail without retry.
 +</code></pre>
 +</div>
 +
 +<h3 id="3-how-to-deal-with-consume-message-failed">3. How to deal with consume message failed?</h3>
 +
 +<ol>
 +  <li>Use topic query by the time range, you can query to a period of time Topic received all the messages.</li>
 +  <li>Using Topic and Message Id to accurately query the message.</li>
 +  <li>Using Topic and Message Key accurately query a class of messages with the same Message Key.</li>
 +</ol>
 +
 +<h3 id="4-delivery-exactly-once">4. Delivery exactly once?</h3>
 +
 +<p>In most cases, the message is not repeated. As a distributed message middleware, in the network jitter, application processing timeout and other abnormal circumstances, can not guarantee that the message is not repeated, but can ensure that the message is not lost.</p>
 +
 +<h3 id="5-how-to-add-a-new-broker">5. How to add a new broker?</h3>
 +
 +<ol>
 +  <li>Start up a new broker and make it register to the same list of name servers.</li>
 +  <li>On default, only internally system topics and consumer groups are created automatically. If you would like to have your business topic and consumer groups on the new node, remember to replicate them from the existing broker. You may turn to admin tool command to achieve this.</li>
 +</ol>
 +
 +<h2 id="configuration-related">Configuration related</h2>
 +<h3 id="1-how-long-the-message-is-saved-on-the-server">1. How long the message is saved on the server?</h3>
 +
 +<p>Stored messages are saved for up to 3 days, and messages that are not consumed for more than 3 days will be deleted.</p>
 +
 +<h3 id="2-what-is-the-length-limit-for-message-body">2. What is the length limit for message Body?</h3>
 +<p>Generally 256KB, but can be modified by configuration.</p>
 +
 +<h3 id="3-how-to-set-the-number-of-consumer-threads">3. How to set the number of consumer threads?</h3>
 +<p>When you start Consumer, set a ConsumeThreadNums property, example as follow.</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>properties.put(PropertyKeyConst.ConsumeThreadNums,20);
 +</code></pre>
 +</div>
 +
 +<h2 id="errors">Errors</h2>
 +<h3 id="1-start-producer-or-consumer-failed-and-producer-group-or-consumer-repeat">1. Start producer or consumer failed and producer group or consumer repeat?</h3>
 +<p>Reason\uff1aIn the same JVM inside using the same Producer ID/Consumer ID launched multiple instances of Producer/Consumer, it may cause the client to start failure.</p>
 +
 +<p>Solution: Ensure that a JVM corresponds to a Producer ID/Consumer ID starts only with a Producer/Consumer instance.</p>
 +
 +<h3 id="2-in-broadcast-mode-consumer-start-loading-json-file-failed">2. In broadcast mode, consumer start loading json file failed?</h3>
 +<p>Reason: Fastjson version is too low to cause the broadcast consumer to load a local offsets.json file failed, which causing the consumer boot failure.</p>
 +
 +<p>Solution: Fastjson version will be upgraded to rocketmq client dependent version, to ensure that the local offsets.json can be normal loading. By default offsets.json file is in /home/{user}/.rocketmq_offsets.</p>
 +
 +<h3 id="3-what-if-a-broker-crashes">3. What if a broker crashes?</h3>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>1. Master crashes
 +   Messages can no longer be sent to this broker set, but if you have another broker set available, messages can be still sent there given the topic is present.Messages can still be consumed from slaves.
 +2. One slaves crashes
 +   As long as there is another working slave, no impact on writing messages;No impact on consuming messages except when the consumer group is set to consume from this slave preferably. By default, it is from master.
 +3. All slaves crash
 +   No impact on writing messages on master, but if master is a SYNC_MASTER, the producer will get a result of SLAVE_NOT_AVAILABLE indicating that the message is not replicated to any slaves.No impact on consuming messages except that if the consumer group is set to consume from slave preferably. By default, it is from master.
 +</code></pre>
 +</div>
 +
 +<h3 id="4-producer-complains-no-topic-route-info-how-to-diagnose">4. Producer complains \u201cNo Topic Route Info\u201d, how to diagnose?</h3>
 +<p>This happens when you are trying to send message to a topic whose route info is not available to the producer.</p>
 +
 +<ol>
 +  <li>Confirm the producer can connect to a name server and capable of fetching routing meta info from it.</li>
 +  <li>Confirm that name servers do contain routing meta info of the topic. You may query the routing meta info from name server through topicRoute of admin tools or web console.</li>
 +  <li>Confirm your brokers are sending heartbeats to the same list of name servers your producer is connecting to.</li>
 +  <li>Confirm that the topic\u2019s perm is 6(rw-), or at least 2(-w-).</li>
 +</ol>
 +
 +<p>If you can\u2019t find this topic, create it via admin tools command updateTopic or web console on a broker.</p>
 +
 +<h2 id="features">Features</h2>
 +<h3 id="1-what-kind-of-consumption-pattern-does-rocketmq-provide">1. What kind of consumption pattern does RocketMQ provide?</h3>
 +<p>In RocketMQ, it providers two types of consumption patterns, such as Clustering consumption patterns and broadcasting consumption patterns. See the documentation on cluster patterns for details.</p>
 +
 +<h3 id="2-how-many-kinds-of-message-type-are-supported">2. How many kinds of message type are supported?</h3>
 +<p>There are several types of messages that are currently supported in rocketmq\uff0csuch as common message, timed message, transaction message, sequential message and delay message. User can select the appropriate message type according to the needs of the business.</p>
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-28">December 28, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Frequently Asked Questions /docs/faq/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/faq/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/faq/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/faq/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/documentation/" class="pagination--pager" title="Documentation
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/release-manual" class="pagination--pager" title="Release Manual
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/motivation/index.html
----------------------------------------------------------------------
diff --cc content/docs/motivation/index.html
index 15430a0,0000000..43a32bf
mode 100644,000000..100644
--- a/content/docs/motivation/index.html
+++ b/content/docs/motivation/index.html
@@@ -1,619 -1,0 +1,679 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Motivation - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="In the early stages, we constructed our distributed messaging middleware on the basis of ActiveMQ 5.x(less than 5.3). Our international business uses it for async communication, search, social network activity stream, data pipeline, even in our trade order process. As our trade business throughput rises more and more inconceivably, pressure originating from our messaging cluster also become more and more obvious.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Motivation">
 +
 +
 +
 +
 +  <meta property="og:description" content="In the early stages, we constructed our distributed messaging middleware on the basis of ActiveMQ 5.x(less than 5.3). Our international business uses it for async communication, search, social network activity stream, data pipeline, even in our trade order process. As our trade business throughput rises more and more inconceivably, pressure originating from our messaging cluster also become more and more obvious.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Motivation">
 +  <meta name="twitter:description" content="In the early stages, we constructed our distributed messaging middleware on the basis of ActiveMQ 5.x(less than 5.3). Our international business uses it for async communication, search, social network activity stream, data pipeline, even in our trade order process. As our trade business throughput rises more and more inconceivably, pressure originating from our messaging cluster also become more and more obvious.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="active">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="active">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Motivation">
 +    <meta itemprop="description" content="In the early stages, we constructed our distributed messaging middleware on the basis of ActiveMQ 5.x(less than 5.3). Our international business uses it for async communication, search, social network activity stream, data pipeline, even in our trade order process. As our trade business throughput rises more and more inconceivably, pressure originating from our messaging cluster also become more and more obvious.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 17, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Motivation
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>In the early stages, we constructed our distributed messaging middleware on the basis of ActiveMQ 5.x(less than 5.3). Our international business uses it for async communication, search, social network activity stream, data pipeline, even in our trade order process. As our trade business throughput rises more and more inconceivably, pressure originating from our messaging cluster also become more and more obvious.</p>
 +
 +<aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#why-rocketmq-" id="markdown-toc-why-rocketmq-">Why RocketMQ ?</a></li>
 +  <li><a href="#rocketmq-vs-activemq-vs-kafka" id="markdown-toc-rocketmq-vs-activemq-vs-kafka">RocketMQ vs. ActiveMQ vs. Kafka</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h1 id="why-rocketmq-">Why RocketMQ ?</h1>
 +
 +<p>Based on our observations and research, with more and more queues and virtual topics in use, ActiveMQ IO module becomes a bottleneck. In some cases, slower consumers can slow down the producers. We tried our best efforts to handle this problems through throttling, circuit breaker or degradation, but it cannot scale out gracefully. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements such as low latency and high reliability, see <a href="/rocketmq/how-to-support-more-queues-in-rocketmq/">here</a> for details.</p>
 +
 +<p>In this context, we decided to innovate a new messaging middleware to handle a broad set of use cases, ranging from traditional publish/subscribe scenario to demandingly high volume realtime transaction system that tolerates no message loss. We also created a cornerstone product based on RocketMQ, a Platform as a Service (PaaS) product named the
 +<a href="https://intl.aliyun.com/">Alibaba Cloud Platform</a>. Today, more than 100 companies are using the RocketMQ open source version in their business solutions. We believe RocketMQ can benefit more people, so we would like to share it around the world.</p>
 +
 +<p>The following are some different design between RocketMQ, ActiveMQ and Kafka\uff08They are the apache\u2019s most popular messaging solutions according to <a href="https://github.com/akullpp/awesome-java">awesome-java</a>):</p>
 +
 +<h1 id="rocketmq-vs-activemq-vs-kafka">RocketMQ vs. ActiveMQ vs. Kafka</h1>
 +
 +<table>
 +  <thead>
 +    <tr>
 +      <th>Messaging Product</th>
 +      <th>Client SDK</th>
 +      <th>Protocol and Specification</th>
 +      <th>Order Message</th>
 +      <th>Message Filter</th>
 +      <th>Server Triggered Redelivery</th>
 +      <th>Persistent Message</th>
 +      <th>Retroactive Consumers</th>
 +      <th>Message Priority</th>
 +      <th>High Availability and Failover</th>
 +      <th>Message Track</th>
 +      <th>Configuration</th>
 +      <th>Management and Operation Tools</th>
 +    </tr>
 +  </thead>
 +  <tbody>
 +    <tr>
 +      <td>ActiveMQ</td>
 +      <td>Java, .NET, C++ etc.</td>
 +      <td>Push model, support OpenWire, STOMP, AMQP, MQTT, JMS</td>
 +      <td>Exclusive Consumer or Exclusive Queues can ensure ordering</td>
 +      <td>Supported</td>
 +      <td>Not Supported</td>
 +      <td>Supports very fast persistence using JDBC along with a high performance journal\uff0csuch as levelDB, kahaDB</td>
 +      <td>Supported</td>
 +      <td>Supported</td>
 +      <td>Supported, depending on storage,if using kahadb it requires a ZooKeeper server</td>
 +      <td>Not Supported</td>
 +      <td>The default configuration is low level, user need to optimize the configuration parameters</td>
 +      <td>Supported</td>
 +    </tr>
 +    <tr>
 +      <td>Kafka</td>
 +      <td>Java, Scala etc.</td>
 +      <td>Pull model, support TCP</td>
 +      <td>Ensure ordering of messages within a partition</td>
 +      <td>Supported, you can use Kafka Streams to filter messages</td>
 +      <td>Not Supported</td>
 +      <td>High performance file storage</td>
 +      <td>Supported offset indicate</td>
 +      <td>Not Supported</td>
 +      <td>Supported, requires a ZooKeeper server</td>
 +      <td>Not Supported</td>
 +      <td>Kafka uses key-value pairs format for configuration. These values can be supplied either from a file or programmatically.</td>
 +      <td>Supported, use terminal command to expose core metrics</td>
 +    </tr>
 +    <tr>
 +      <td>RocketMQ</td>
 +      <td>Java, .NET, C++</td>
 +      <td>Pull model, support TCP, JMS</td>
 +      <td>Ensure strict ordering of messages, have no hot spot problem,and can scale out gracefully</td>
 +      <td>Supported, you can even upload yourself custom-built filter code snippets</td>
 +      <td>Supported</td>
 +      <td>High performance and low latency file storage</td>
 +      <td>Supported timestamp and offset 2 indicates</td>
 +      <td>Not Supported</td>
 +      <td>Supported, Master-Slave model, without another kit</td>
 +      <td>Supported</td>
 +      <td>Work out of box,user only need to pay attention to a few configurations</td>
 +      <td>Supported, rich web and terminal command to expose core metrics</td>
 +    </tr>
 +  </tbody>
 +</table>
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-17">December 17, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Motivation /docs/motivation/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/motivation/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/motivation/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/motivation/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/quick-start/" class="pagination--pager" title="Quick Start
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/core-concept/" class="pagination--pager" title="Core Concept
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>



[14/16] incubator-rocketmq-site git commit: Release at 2017.04.25

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/best-practice-broker/index.html
----------------------------------------------------------------------
diff --cc content/docs/best-practice-broker/index.html
index 85be0f2,0000000..974c75b
mode 100644,000000..100644
--- a/content/docs/best-practice-broker/index.html
+++ b/content/docs/best-practice-broker/index.html
@@@ -1,556 -1,0 +1,616 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Best Practice For Broker - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="Some useful tips for users.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Best Practice For Broker">
 +
 +
 +
 +
 +  <meta property="og:description" content="Some useful tips for users.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Best Practice For Broker">
 +  <meta name="twitter:description" content="Some useful tips for users.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="active">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Best Practice For Broker">
 +    <meta itemprop="description" content="Some useful tips for users.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 25, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Best Practice For Broker
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>Some useful tips for users.</p>
 +
 +<aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#broker-role" id="markdown-toc-broker-role">Broker Role</a></li>
 +  <li><a href="#flushdisktype" id="markdown-toc-flushdisktype">FlushDiskType</a></li>
 +  <li><a href="#reentrantlock-vs-cas" id="markdown-toc-reentrantlock-vs-cas">ReentrantLock vs CAS</a></li>
 +  <li><a href="#ossh" id="markdown-toc-ossh">os.sh</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h2 id="broker-role">Broker Role</h2>
 +<p>Broker Role is ASYNC_MASTER, SYNC_MASTER or SLAVE.
 +If you cannot tolerate message missing, we suggest you deploy SYNC_MASTER and attach a SLAVE to it.
 +If you feel ok about missing, but you want the Broker to be always available, you may deploy ASYNC_MASTER with SLAVE.
 +If you just want to make it easy, you may only need a ASYNC_MASTER without SLAVE.</p>
 +<h2 id="flushdisktype">FlushDiskType</h2>
 +<p>ASYNC_FLUSH is recommended, for SYNC_FLUSH is expensive and will cause too much performance loss. If you want reliability, we recommend you use SYNC_MASTER with SLAVE.</p>
 +<h2 id="reentrantlock-vs-cas">ReentrantLock vs CAS</h2>
 +<p>to be finished</p>
 +<h2 id="ossh">os.sh</h2>
 +<p>to be finished</p>
 +
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-25">December 25, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Best Practice For Broker /docs/best-practice-broker/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/best-practice-broker/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/best-practice-broker/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/best-practice-broker/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
-       <a href="/docs/roadmap/" class="pagination--pager" title="The RoadMap of Apache RocketMQ
++      <a href="/docs/simple-example/" class="pagination--pager" title="Simple Message Example
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/best-practice-consumer/" class="pagination--pager" title="Best Practice For Consumer
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/best-practice-consumer/index.html
----------------------------------------------------------------------
diff --cc content/docs/best-practice-consumer/index.html
index edff23b,0000000..94f4d0f
mode 100644,000000..100644
--- a/content/docs/best-practice-consumer/index.html
+++ b/content/docs/best-practice-consumer/index.html
@@@ -1,581 -1,0 +1,641 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Best Practice For Consumer - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="Some useful tips for users.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Best Practice For Consumer">
 +
 +
 +
 +
 +  <meta property="og:description" content="Some useful tips for users.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Best Practice For Consumer">
 +  <meta name="twitter:description" content="Some useful tips for users.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="active">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Best Practice For Consumer">
 +    <meta itemprop="description" content="Some useful tips for users.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 25, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Best Practice For Consumer
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>Some useful tips for users.</p>
 +
 +<aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#consumer-group-and-subscriptions" id="markdown-toc-consumer-group-and-subscriptions">Consumer Group and Subscriptions</a></li>
 +  <li><a href="#messagelistener" id="markdown-toc-messagelistener">MessageListener</a>    <ul>
 +      <li><a href="#orderly" id="markdown-toc-orderly">Orderly</a></li>
 +      <li><a href="#concurrently" id="markdown-toc-concurrently">Concurrently</a></li>
 +      <li><a href="#consume-status" id="markdown-toc-consume-status">Consume Status</a></li>
 +      <li><a href="#blocking" id="markdown-toc-blocking">Blocking</a></li>
 +    </ul>
 +  </li>
 +  <li><a href="#thread-number" id="markdown-toc-thread-number">Thread Number</a></li>
 +  <li><a href="#consumefromwhere" id="markdown-toc-consumefromwhere">ConsumeFromWhere</a></li>
 +  <li><a href="#duplication" id="markdown-toc-duplication">Duplication</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +<h2 id="consumer-group-and-subscriptions">Consumer Group and Subscriptions</h2>
 +<p>The first thing you should be aware of is that different Consumer Group can consume the same topic independently, each of the group will have their own consuming offsets. 
 +And make sure each Consumer within the same Group to subscribe the same topics.</p>
 +<h2 id="messagelistener">MessageListener</h2>
 +<h3 id="orderly">Orderly</h3>
 +<p>The Consumer will lock each MessageQueue to make sure it is consumed one by one orderly. This will cause performance loss, but it is useful when you are care about the order of the messages.
 +It is not recommended to throw exception, you can return ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT instead.</p>
 +<h3 id="concurrently">Concurrently</h3>
 +<p>As the name tells, the Consumer will consume the messages concurrently. It is recommended to use this for achieving good performance.
 +It is not recommended to throw exception, you can return ConsumeConcurrentlyStatus.RECONSUME_LATER instead.</p>
 +<h3 id="consume-status">Consume Status</h3>
 +<p>For MessageListenerConcurrently, you can return RECONSUME_LATER to tell the consumer that you can not consume it right now and want to reconsume it later. Then you can continue to consume other messages. 
 +For MessageListenerOrderly, as that you care about the order, so you can not jump over the message, but you can return SUSPEND_CURRENT_QUEUE_A_MOMENT to tell the consumer to hold on for a moment.</p>
 +<h3 id="blocking">Blocking</h3>
 +<p>It is not recommend to block the Listener, for in return it will block the thread pool, and finally the consuming process may get stuck.</p>
 +<h2 id="thread-number">Thread Number</h2>
 +<p>The consumer use a ThreadPoolExecutor to process consuming internally. So you can tune it by using setConsumeThreadMin or setConsumeThreadMax.</p>
 +<h2 id="consumefromwhere">ConsumeFromWhere</h2>
 +<p>When a new Consumer Group is established, it will need to decide whether it need to consume the historical messages which had already existed in the Broker. 
 +CONSUME_FROM_LAST_OFFSET will ignore the historical messages, and consume any newly produced.
 +CONSUME_FROM_FIRST_OFFSET will consume every message existed in the Broker.
 +You can also use CONSUME_FROM_TIMESTAMP to consume messages produced after the specified timestamp.</p>
 +<h2 id="duplication">Duplication</h2>
 +<p>Many circumstances could cause duplication, such as:</p>
 +<ul>
 +  <li>Producer resend messages(i.e, in case of FLUSH_SLAVE_TIMEOUT)</li>
 +  <li>Consumer shutdown with some offsets not updated to the Broker in time.</li>
 +</ul>
 +
 +<p>So you may need to do some external work to handle this if your application cannot tolerate. For example, you may check the primary key of your DB.</p>
 +
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-25">December 25, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Best Practice For Consumer /docs/best-practice-consumer/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/best-practice-consumer/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/best-practice-consumer/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/best-practice-consumer/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/best-practice-broker/" class="pagination--pager" title="Best Practice For Broker
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/best-practice-namesvr/" class="pagination--pager" title="Best Practice For NameServer
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/best-practice-namesvr/index.html
----------------------------------------------------------------------
diff --cc content/docs/best-practice-namesvr/index.html
index 311f949,0000000..c69bc61
mode 100644,000000..100644
--- a/content/docs/best-practice-namesvr/index.html
+++ b/content/docs/best-practice-namesvr/index.html
@@@ -1,544 -1,0 +1,677 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Best Practice For NameServer - Apache RocketMQ</title>
 +
 +
 +
 +
- <meta name="description" content="Some useful tips for users.">
++<meta name="description" content="In Apache RocketMQ, name servers are designed to coordinate each component of the distributed systemand fulfill much of this responsibility through managing topic route information.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Best Practice For NameServer">
 +
 +
 +
 +
-   <meta property="og:description" content="Some useful tips for users.">
++  <meta property="og:description" content="In Apache RocketMQ, name servers are designed to coordinate each component of the distributed systemand fulfill much of this responsibility through managing topic route information.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Best Practice For NameServer">
-   <meta name="twitter:description" content="Some useful tips for users.">
++  <meta name="twitter:description" content="In Apache RocketMQ, name servers are designed to coordinate each component of the distributed systemand fulfill much of this responsibility through managing topic route information.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="active">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Best Practice For NameServer">
-     <meta itemprop="description" content="Some useful tips for users.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="description" content="In Apache RocketMQ, name servers are designed to coordinate each component of the distributed systemand fulfill much of this responsibility through managing topic route information.">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 25, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Best Practice For NameServer
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
-         <p>Some useful tips for users.</p>
++        <p>In Apache RocketMQ, name servers are designed to coordinate each component of the distributed system
++and fulfill much of this responsibility through managing topic route information.</p>
 +
 +<aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
-   <li><a href="#ordered-message" id="markdown-toc-ordered-message">Ordered Message</a></li>
++  <li><a href="#programmatic-way" id="markdown-toc-programmatic-way">Programmatic Way</a></li>
++  <li><a href="#java-options" id="markdown-toc-java-options">Java Options</a></li>
++  <li><a href="#environment-variable" id="markdown-toc-environment-variable">Environment Variable</a></li>
++  <li><a href="#http-endpoint" id="markdown-toc-http-endpoint">HTTP Endpoint</a></li>
++  <li><a href="#priority" id="markdown-toc-priority">Priority</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
- <h2 id="ordered-message">Ordered Message</h2>
- <p>to be finished</p>
++<p>The management, roughly speaking, consists two parts:</p>
++<ul>
++  <li>Brokers periodically renew meta data, including topics they have, which are kept in every name servers.</li>
++  <li>Name servers are serving clients, including producers, consumers and command line clients with the latest routing information.</li>
++</ul>
++
++<p>Therefore, before launching brokers and clients, we need to tell them how to reach name servers by feeding them with a name server address list.
++In Apache RocketMQ, this can be done in four ways.</p>
++
++<h2 id="programmatic-way">Programmatic Way</h2>
++
++<p>For broker, we may specify <code class="highlighter-rouge">namesrvAddr=name-server-ip1:port;name-server-ip2:port</code> in broker configuration file.</p>
++
++<p>For producers and consumers, we may feed name server address list to them as follows:</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">DefaultMQProducer</span> <span class="n">producer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DefaultMQProducer</span><span class="o">(</span><span class="s">"please_rename_unique_group_name"</span><span class="o">);</span>
++<span class="n">producer</span><span class="o">.</span><span class="na">setNamesrvAddr</span><span class="o">(</span><span class="s">"name-server1-ip:port;name-server2-ip:port"</span><span class="o">);</span>
++
++<span class="n">DefaultMQPushConsumer</span> <span class="n">consumer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DefaultMQPushConsumer</span><span class="o">(</span><span class="s">"please_rename_unique_group_name"</span><span class="o">);</span>
++<span class="n">consumer</span><span class="o">.</span><span class="na">setNamesrvAddr</span><span class="o">(</span><span class="s">"name-server1-ip:port;name-server2-ip:port"</span><span class="o">);</span>
++</code></pre>
++</div>
++
++<p>If you use admin command line from shell, you may specify this way:</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">sh</span> <span class="n">mqadmin</span> <span class="n">command</span><span class="o">-</span><span class="n">name</span> <span class="o">-</span><span class="n">n</span> <span class="n">name</span><span class="o">-</span><span class="n">server</span><span class="o">-</span><span class="nl">ip1:</span><span class="n">port</span><span class="o">;</span><span class="n">name</span><span class="o">-</span><span class="n">server</span><span class="o">-</span><span class="nl">ip2:</span><span class="n">port</span> <span class="o">-</span><span class="n">X</span> <span class="n">OTHER</span><span class="o">-</span><span class="n">OPTION</span>
++</code></pre>
++</div>
++
++<p>a simple example is:
++<code class="highlighter-rouge">sh mqadmin -n localhost:9876 clusterList</code>
++assuming to query cluster info on the name server node.</p>
++
++<p>If integrating admin tool into your own dashboard, you may</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">DefaultMQAdminExt</span> <span class="n">defaultMQAdminExt</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DefaultMQAdminExt</span><span class="o">(</span><span class="s">"please_rename_unique_group_name"</span><span class="o">);</span>
++<span class="n">defaultMQAdminExt</span><span class="o">.</span><span class="na">setNamesrvAddr</span><span class="o">(</span><span class="s">"name-server1-ip:port;name-server2-ip:port"</span><span class="o">);</span>
++</code></pre>
++</div>
++
++<h2 id="java-options">Java Options</h2>
++
++<p>Name server address list may also be fed to your application through specifying the sequel java option 
++<code class="highlighter-rouge">rocketmq.namesrv.addr</code> before launching.</p>
++
++<h2 id="environment-variable">Environment Variable</h2>
++
++<p>You can export <code class="highlighter-rouge">NAMESRV_ADDR</code> environment variable. Brokers and clients will examine and use its value if set.</p>
++
++<h2 id="http-endpoint">HTTP Endpoint</h2>
++
++<p>If you do not specify name server address list using previously mentioned methods, Apache RocketMQ will access
++ the following HTTP end point to acquire and update name server address list every two minutes with initial delay of
++ ten seconds.</p>
++
++<p>On default, the end point is:</p>
++
++<p><code class="highlighter-rouge">http://jmenv.tbsite.net:8080/rocketmq/nsaddr</code></p>
++
++<p>You may override <code class="highlighter-rouge">jmenv.tbsite.net</code> by this java option: <code class="highlighter-rouge">rocketmq.namesrv.domain</code>,
++You may also override <code class="highlighter-rouge">nsaddr</code> part by this java option: <code class="highlighter-rouge">rocketmq.namesrv.domain.subgroup</code></p>
++
++<p>If you are running Apache RocketMQ in production, this method is recommended because it gives you maximum flexibility
++ \u2013 you can dynamically add or remove name server nodes without necessity of rebooting your brokers and clients 
++ according to your name servers\u2019 system load.</p>
++
++<h2 id="priority">Priority</h2>
++
++<p>Methods introduced first take precedence over the latter, namely, <br />
++<code class="highlighter-rouge">Programmatic Way &gt; Java Options &gt; Environment Variable &gt; HTTP Endpoint</code></p>
 +
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-25">December 25, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Best Practice For NameServer /docs/best-practice-namesvr/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/best-practice-namesvr/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/best-practice-namesvr/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/best-practice-namesvr/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/best-practice-consumer/" class="pagination--pager" title="Best Practice For Consumer
 +">Previous</a>
 +    
 +    
 +      <a href="/docs/best-practice-producer/" class="pagination--pager" title="Best Practice For Producer
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/best-practice-producer/index.html
----------------------------------------------------------------------
diff --cc content/docs/best-practice-producer/index.html
index 1924a16,0000000..f1078f3
mode 100644,000000..100644
--- a/content/docs/best-practice-producer/index.html
+++ b/content/docs/best-practice-producer/index.html
@@@ -1,589 -1,0 +1,649 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Best Practice For Producer - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="Some useful tips for users.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Best Practice For Producer">
 +
 +
 +
 +
 +  <meta property="og:description" content="Some useful tips for users.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Best Practice For Producer">
 +  <meta name="twitter:description" content="Some useful tips for users.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="active">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Best Practice For Producer">
 +    <meta itemprop="description" content="Some useful tips for users.">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="December 25, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Best Practice For Producer
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>Some useful tips for users.</p>
 +
 +<aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#sendstatus" id="markdown-toc-sendstatus">SendStatus</a>    <ul>
 +      <li><a href="#flush_disk_timeout" id="markdown-toc-flush_disk_timeout">FLUSH_DISK_TIMEOUT</a></li>
 +      <li><a href="#flush_slave_timeout" id="markdown-toc-flush_slave_timeout">FLUSH_SLAVE_TIMEOUT</a></li>
 +      <li><a href="#slave_not_available" id="markdown-toc-slave_not_available">SLAVE_NOT_AVAILABLE</a></li>
 +      <li><a href="#send_ok" id="markdown-toc-send_ok">SEND_OK</a></li>
 +      <li><a href="#duplication-or-missing" id="markdown-toc-duplication-or-missing">Duplication or Missing</a></li>
 +    </ul>
 +  </li>
 +  <li><a href="#timeout" id="markdown-toc-timeout">Timeout</a></li>
 +  <li><a href="#message-size" id="markdown-toc-message-size">Message Size</a></li>
 +  <li><a href="#async-sending" id="markdown-toc-async-sending">Async Sending</a></li>
 +  <li><a href="#producer-group" id="markdown-toc-producer-group">Producer Group</a></li>
 +  <li><a href="#thread-safety" id="markdown-toc-thread-safety">Thread Safety</a></li>
 +  <li><a href="#performance" id="markdown-toc-performance">Performance</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h2 id="sendstatus">SendStatus</h2>
 +<p>When sending a message, you will get SendResult and it will contain the SendStatus. Firstly, we assume that Message\u2019s isWaitStoreMsgOK=true(default is true). If not, we will always get SEND_OK if no exception is thrown.
 +Follow are the descriptions about each status.</p>
 +<h3 id="flush_disk_timeout">FLUSH_DISK_TIMEOUT</h3>
 +<p>If the Broker set MessageStoreConfig\u2019s FlushDiskType=SYNC_FLUSH(default is ASYNC_FLUSH), and the Broker dose not finish flushing disk within MessageStoreConfig\u2019s syncFlushTimeout(default is 5 secs), you will get such status.</p>
 +<h3 id="flush_slave_timeout">FLUSH_SLAVE_TIMEOUT</h3>
 +<p>If the Broker\u2019s role is SYNC_MASTER(default is ASYNC_MASTER), and the slave Broker dose not finish synchronizing with the master within the MessageStoreConfig\u2019s syncFlushTimeout(default is 5 secs), you will get such status.</p>
 +<h3 id="slave_not_available">SLAVE_NOT_AVAILABLE</h3>
 +<p>If the Broker\u2019s role is SYNC_MASTER(default is ASYNC_MASTER), but no slave Broker is configured, you will get such status.</p>
 +<h3 id="send_ok">SEND_OK</h3>
 +<p>You should be aware that SEND_OK does not mean it is reliable. If you cannot tolerate message missing, you should also enable SYNC_MASTER or SYNC_FLUSH.</p>
 +<h3 id="duplication-or-missing">Duplication or Missing</h3>
 +<p>If you get FLUSH_DISK_TIMEOUT, FLUSH_SLAVE_TIMEOUT and the Broker happens to shutdown right the moment, you may get your message missing.
 +At this time, you have two choices, one is letting it go, which may get message missing; another is resending, which may get message duplication.
 +Often we suggest resend and make a way to handle the duplication removal when consuming. Unless you feel it does not matter when some messages are missed.
 +But be ware that resending has no use when you get SLAVE_NOT_AVAILABLE, you\u2019d better keep the scene and send some alerts to the Cluster Manager.</p>
 +<h2 id="timeout">Timeout</h2>
 +<p>The Client send requests to Broker, and wait the responses, but if the max wait time is elapsed and no response is return, the Client will throw a RemotingTimeoutException.
 +The default wait time is 3 seconds.You can also pass timeout argument using send(msg, timeout) instead of send(msg).
 +Note that we do not suggest the value to be too small, for the Broker need some time to flush disk or synchronize with slave. Also the value may have little effect if it is too bigger than syncFlushTimeout for Broker may return a response with FLUSH_SLAVE_TIMEOUT or FLUSH_SLAVE_TIMEOUT before the timeout.</p>
 +<h2 id="message-size">Message Size</h2>
 +<p>We suggest the message should be no more than 512K.</p>
 +<h2 id="async-sending">Async Sending</h2>
 +<p>Default send(msg) will block until the response is return. So if you care about performance, we suggest you use send(msg, callback) which will act in a async way.</p>
 +<h2 id="producer-group">Producer Group</h2>
 +<p>Normally, the producer group has no effects. But if you are involved in  transaction, you should pay attention to it. 
 +In default, you can only create only one producer with the same producer group in the same JVM. Usually, this is enough.</p>
 +<h2 id="thread-safety">Thread Safety</h2>
 +<p>The producer is thread-safe, you can just use it in your business logic.</p>
 +<h2 id="performance">Performance</h2>
 +<p>If you want more than one producer in one JVM, maybe for big data processing, we suggest you:</p>
 +<ul>
 +  <li>use async sending with a few producers(3~5 is enough)</li>
 +  <li>setInstanceName for each producer</li>
 +</ul>
 +
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-25">December 25, 2016</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Best Practice For Producer /docs/best-practice-producer/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/best-practice-producer/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/best-practice-producer/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/best-practice-producer/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/docs/best-practice-namesvr/" class="pagination--pager" title="Best Practice For NameServer
 +">Previous</a>
 +    
 +    
 +      <a href="#" class="pagination--pager disabled">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>


[03/16] incubator-rocketmq-site git commit: Use new documentation structure.

Posted by yu...@apache.org.
Use new documentation structure.


Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/commit/b3c93e12
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/tree/b3c93e12
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/diff/b3c93e12

Branch: refs/heads/asf-site
Commit: b3c93e1247cf7717d011536b3fd5c4cbb6014382
Parents: e840137
Author: yukon <yu...@apache.org>
Authored: Mon Apr 24 22:06:49 2017 +0800
Committer: yukon <yu...@apache.org>
Committed: Mon Apr 24 22:07:35 2017 +0800

----------------------------------------------------------------------
 _data/navigation.yml           | 29 ++++++++++----
 _docs/01-quick-start-guide.md  |  4 +-
 _docs/best-practice-namesvr.md | 76 +++++++++++++++++++++++++++++++++++--
 3 files changed, 97 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/b3c93e12/_data/navigation.yml
----------------------------------------------------------------------
diff --git a/_data/navigation.yml b/_data/navigation.yml
index 1fd0ac6..4b86674 100644
--- a/_data/navigation.yml
+++ b/_data/navigation.yml
@@ -21,26 +21,41 @@ docs:
     children:
       - title: "Quick Start"
         url: /docs/quick-start/
-      - title: "Motivation"
+      - title: "Why RocketMQ"
         url: /docs/motivation/
-      - title: "Core Concept"
-        url: /docs/core-concept/
+      - title: "Simple Example"
+        url: /docs/simple-example/
+      - title: "Order Example"
+        url: /docs/order-example/
+      - title: "Schedule Example"
+        url: /docs/schedule-example/
+      - title: "Schedule Example"
+        url: /docs/schedule-example/
+
+  - title: Deployment & Operations
+    children:
+      - title: "Architecture"
+        url: /docs/architecture/
+      - title: "Deployment"
+        url: /docs/deployment/
       - title: "CLI Admin Tool"
         url: /docs/cli-admin-tool/
-      - title: "Cluster Configuration & Deployment"
-        url: /docs/cluster-deployment/
-  - title: Developer Guide
+
+  - title: Contributor Guide
     children:
       - title: "Code Guidelines"
         url: /docs/code-guidelines/
       #- title: "Branching Model"
       #  url: /docs/branching-model
-      - title: "Best Practice in PR"
+      - title: "Pull Request"
         url: /docs/pull-request/
       - title: "Release Manual"
         url: /docs/release-manual
+
   - title: Best Practice
     children:
+      - title: "Core Concept"
+        url: /docs/core-concept/
       - title: "Broker"
         url: /docs/best-practice-broker/
       - title: "Producer"

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/b3c93e12/_docs/01-quick-start-guide.md
----------------------------------------------------------------------
diff --git a/_docs/01-quick-start-guide.md b/_docs/01-quick-start-guide.md
index 9dbf5f4..b0f2e24 100644
--- a/_docs/01-quick-start-guide.md
+++ b/_docs/01-quick-start-guide.md
@@ -22,8 +22,8 @@ This quick start guide is to give detailed instructions, helping you setup Rocke
 ```shell
   > git clone https://github.com/apache/incubator-rocketmq.git
   > cd incubator-rocketmq
-  > mvn clean package install -Prelease-all assembly:assembly -U
-  > cd target/apache-rocketmq-all/
+  > mvn -Prelease-all -DskipTests clean install -U
+  > cd distribution/target/apache-rocketmq
 ```
 
  

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/b3c93e12/_docs/best-practice-namesvr.md
----------------------------------------------------------------------
diff --git a/_docs/best-practice-namesvr.md b/_docs/best-practice-namesvr.md
index 2f5ba58..1679850 100644
--- a/_docs/best-practice-namesvr.md
+++ b/_docs/best-practice-namesvr.md
@@ -4,11 +4,81 @@ permalink: /docs/best-practice-namesvr/
 modified: 2016-12-24T15:01:43-04:00
 ---
 
-Some useful tips for users.
+In Apache RocketMQ, name servers are designed to coordinate each component of the distributed system
+and fulfill much of this responsibility through managing topic route information.
 
 {% include toc %}
 
-## Ordered Message
-to be finished
+The management, roughly speaking, consists two parts:
+- Brokers periodically renew meta data, including topics they have, which are kept in every name servers.
+- Name servers are serving clients, including producers, consumers and command line clients with the latest routing information.
+
+Therefore, before launching brokers and clients, we need to tell them how to reach name servers by feeding them with a name server address list.
+In Apache RocketMQ, this can be done in four ways.
+
+## Programmatic Way
+
+For broker, we may specify `namesrvAddr=name-server-ip1:port;name-server-ip2:port` in broker configuration file.
+
+For producers and consumers, we may feed name server address list to them as follows:
+
+```java
+DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
+producer.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");
+
+DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");
+consumer.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");
+```
+
+If you use admin command line from shell, you may specify this way:
+
+```java
+sh mqadmin command-name -n name-server-ip1:port;name-server-ip2:port -X OTHER-OPTION
+```
+
+a simple example is:
+`sh mqadmin -n localhost:9876 clusterList`
+assuming to query cluster info on the name server node.
+
+If integrating admin tool into your own dashboard, you may
+
+```java
+DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt("please_rename_unique_group_name");
+defaultMQAdminExt.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");
+```
+    
+    
+## Java Options
+
+Name server address list may also be fed to your application through specifying the sequel java option 
+`rocketmq.namesrv.addr` before launching.
+    
+## Environment Variable
+
+You can export `NAMESRV_ADDR` environment variable. Brokers and clients will examine and use its value if set.
+    
+    
+## HTTP Endpoint
+
+If you do not specify name server address list using previously mentioned methods, Apache RocketMQ will access
+ the following HTTP end point to acquire and update name server address list every two minutes with initial delay of
+ ten seconds.
+
+On default, the end point is:
+
+`http://jmenv.tbsite.net:8080/rocketmq/nsaddr`
+
+You may override `jmenv.tbsite.net` by this java option: `rocketmq.namesrv.domain`,
+You may also override `nsaddr` part by this java option: `rocketmq.namesrv.domain.subgroup`
+
+If you are running Apache RocketMQ in production, this method is recommended because it gives you maximum flexibility
+ -- you can dynamically add or remove name server nodes without necessity of rebooting your brokers and clients 
+ according to your name servers' system load.
+     
+     
+##  Priority
+
+Methods introduced first take precedence over the latter, namely, <br>
+`Programmatic Way > Java Options > Environment Variable > HTTP Endpoint`
 
 


[15/16] incubator-rocketmq-site git commit: Release at 2017.04.25

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/archive-layout-with-content/index.html
----------------------------------------------------------------------
diff --cc content/archive-layout-with-content/index.html
index c923688,0000000..5ce7bde
mode 100644,000000..100644
--- a/content/archive-layout-with-content/index.html
+++ b/content/archive-layout-with-content/index.html
@@@ -1,1065 -1,0 +1,1163 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Archive Layout with Content - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="The homepage of RocketMQ.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Archive Layout with Content">
 +
 +
 +
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Archive Layout with Content">
 +  <meta name="twitter:description" content="The homepage of RocketMQ.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--archive">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +
 +<div itemscope itemtype="http://schema.org/Person">
 +
 +  
 +    <div class="author__avatar">
 +      
 +        <img src="/assets/images/rmq-logo.png" class="author__avatar" alt="" itemprop="image">
 +      
 +    </div>
 +  
 +
 +  <div class="author__content">
 +    <h3 class="author__name" itemprop="name"></h3>
 +    
 +      <p class="author__bio" itemprop="description">
 +        A fast, low latency, reliable, scalable, distributed MOM.
 +      </p>
 +    
 +  </div>
 +
 +  <div class="author__urls-wrapper">
 +    <button class="btn btn--inverse">Follow</button>
 +    <ul class="author__urls social-icons">
 +      
 +        <li itemprop="homeLocation" itemscope itemtype="http://schema.org/Place">
 +          <i class="fa fa-fw fa-map-marker" aria-hidden="true"></i> <span itemprop="name">Hangzhou, China</span>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="http://incubator.staging.apache.org/projects/rocketmq.html" itemprop="url">
 +            <i class="fa fa-fw fa-chain" aria-hidden="true"></i> Website
 +          </a>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="mailto:dev@rocketmq.incubator.apache.org">
 +            <meta itemprop="email" content="dev@rocketmq.incubator.apache.org" />
 +            <i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> Email
 +          </a>
 +        </li>
 +      
 +
 +      
 +
 +      
 +        <li>
 +          <a href="https://twitter.com/ApacheRocketMQ" itemprop="sameAs">
 +            <i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter
 +          </a>
 +        </li>
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +        <li>
 +          <a href="https://github.com/apache/incubator-rocketmq" itemprop="sameAs">
 +            <i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub
 +          </a>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="https://www.stackoverflow.com/questions/tagged/rocketmq" itemprop="sameAs">
 +            <i class="fa fa-fw fa-stack-overflow" aria-hidden="true"></i> Stackoverflow
 +          </a>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="https://www.quora.com/topic/RocketMQ" itemprop="sameAs">
 +            <i class="fa fa-fw" aria-hidden="true"><strong>Q</strong></i> Quora
 +          </a>
 +        </li>
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      <!--
 +  <li>
 +    <a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs">
 +      <i class="fa fa-fw" aria-hidden="true"></i> Custom Social Profile Link
 +    </a>
 +  </li>
 +-->
 +    </ul>
 +  </div>
 +</div>
 +
 +  
 +  </div>
 +
 +
 +  <div class="archive">
 +    
 +      <h1 class="page__title">Archive Layout with Content</h1>
 +    
 +    <p>A variety of common markup showing how the theme styles them.</p>
 +
 +<h1 id="header-one">Header one</h1>
 +
 +<h2 id="header-two">Header two</h2>
 +
 +<h3 id="header-three">Header three</h3>
 +
 +<h4 id="header-four">Header four</h4>
 +
 +<h5 id="header-five">Header five</h5>
 +
 +<h6 id="header-six">Header six</h6>
 +
 +<h2 id="blockquotes">Blockquotes</h2>
 +
 +<p>Single line blockquote:</p>
 +
 +<blockquote>
 +  <p>Stay hungry. Stay foolish.</p>
 +</blockquote>
 +
 +<p>Multi line blockquote with a cite reference:</p>
 +
 +<blockquote>
 +  <p>People think focus means saying yes to the thing you\u2019ve got to focus on. But that\u2019s not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I\u2019m actually as proud of the things we haven\u2019t done as the things I have done. Innovation is saying no to 1,000 things.</p>
 +</blockquote>
 +
 +<p class="small"><cite>Steve Jobs</cite> \u2014 Apple Worldwide Developers\u2019 Conference, 1997</p>
 +
 +<h2 id="tables">Tables</h2>
 +
 +<table>
 +  <thead>
 +    <tr>
 +      <th>Employee</th>
 +      <th>Salary</th>
 +      <th>�</th>
 +    </tr>
 +  </thead>
 +  <tbody>
 +    <tr>
 +      <td><a href="#">John Doe</a></td>
 +      <td>$1</td>
 +      <td>Because that\u2019s all Steve Jobs needed for a salary.</td>
 +    </tr>
 +    <tr>
 +      <td><a href="#">Jane Doe</a></td>
 +      <td>$100K</td>
 +      <td>For all the blogging she does.</td>
 +    </tr>
 +    <tr>
 +      <td><a href="#">Fred Bloggs</a></td>
 +      <td>$100M</td>
 +      <td>Pictures are worth a thousand words, right? So Jane � 1,000.</td>
 +    </tr>
 +    <tr>
 +      <td><a href="#">Jane Bloggs</a></td>
 +      <td>$100B</td>
 +      <td>With hair like that?! Enough said.</td>
 +    </tr>
 +  </tbody>
 +</table>
 +
 +<table>
 +  <thead>
 +    <tr>
 +      <th style="text-align: left">Header1</th>
 +      <th style="text-align: center">Header2</th>
 +      <th style="text-align: right">Header3</th>
 +    </tr>
 +  </thead>
 +  <tbody>
 +    <tr>
 +      <td style="text-align: left">cell1</td>
 +      <td style="text-align: center">cell2</td>
 +      <td style="text-align: right">cell3</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left">cell4</td>
 +      <td style="text-align: center">cell5</td>
 +      <td style="text-align: right">cell6</td>
 +    </tr>
 +  </tbody>
 +  <tbody>
 +    <tr>
 +      <td style="text-align: left">cell1</td>
 +      <td style="text-align: center">cell2</td>
 +      <td style="text-align: right">cell3</td>
 +    </tr>
 +    <tr>
 +      <td style="text-align: left">cell4</td>
 +      <td style="text-align: center">cell5</td>
 +      <td style="text-align: right">cell6</td>
 +    </tr>
 +  </tbody>
 +  <tfoot>
 +    <tr>
 +      <td style="text-align: left">Foot1</td>
 +      <td style="text-align: center">Foot2</td>
 +      <td style="text-align: right">Foot3</td>
 +    </tr>
 +  </tfoot>
 +</table>
 +
 +<h2 id="definition-lists">Definition Lists</h2>
 +
 +<dl>
 +  <dt>Definition List Title</dt>
 +  <dd>Definition list division.</dd>
 +  <dt>Startup</dt>
 +  <dd>A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model.</dd>
 +  <dt>#dowork</dt>
 +  <dd>Coined by Rob Dyrdek and his personal body guard Christopher \u201cBig Black\u201d Boykins, \u201cDo Work\u201d works as a self motivator, to motivating your friends.</dd>
 +  <dt>Do It Live</dt>
 +  <dd>I\u2019ll let Bill O\u2019Reilly <a href="https://www.youtube.com/watch?v=O_HyZ5aW76c" title="We'll Do It Live">explain</a> this one.</dd>
 +</dl>
 +
 +<h2 id="unordered-lists-nested">Unordered Lists (Nested)</h2>
 +
 +<ul>
 +  <li>List item one
 +    <ul>
 +      <li>List item one
 +        <ul>
 +          <li>List item one</li>
 +          <li>List item two</li>
 +          <li>List item three</li>
 +          <li>List item four</li>
 +        </ul>
 +      </li>
 +      <li>List item two</li>
 +      <li>List item three</li>
 +      <li>List item four</li>
 +    </ul>
 +  </li>
 +  <li>List item two</li>
 +  <li>List item three</li>
 +  <li>List item four</li>
 +</ul>
 +
 +<h2 id="ordered-list-nested">Ordered List (Nested)</h2>
 +
 +<ol>
 +  <li>List item one
 +    <ol>
 +      <li>List item one
 +        <ol>
 +          <li>List item one</li>
 +          <li>List item two</li>
 +          <li>List item three</li>
 +          <li>List item four</li>
 +        </ol>
 +      </li>
 +      <li>List item two</li>
 +      <li>List item three</li>
 +      <li>List item four</li>
 +    </ol>
 +  </li>
 +  <li>List item two</li>
 +  <li>List item three</li>
 +  <li>List item four</li>
 +</ol>
 +
 +<h2 id="buttons">Buttons</h2>
 +
 +<p>Make any link standout more when applying the <code class="highlighter-rouge">.btn</code> class.</p>
 +
 +<div class="language-html highlighter-rouge"><pre class="highlight"><code><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">"#"</span> <span class="na">class=</span><span class="s">"btn--success"</span><span class="nt">&gt;</span>Success Button<span class="nt">&lt;/a&gt;</span>
 +</code></pre>
 +</div>
 +
 +<p><a href="#" class="btn">Primary Button</a>
 +<a href="#" class="btn btn--success">Success Button</a>
 +<a href="#" class="btn btn--warning">Warning Button</a>
 +<a href="#" class="btn btn--danger">Danger Button</a>
 +<a href="#" class="btn btn--info">Info Button</a>
 +<a href="#" class="btn btn--inverse">Inverse Button</a>
 +<a href="#" class="btn btn--light-outline">Light Outline Button</a></p>
 +
 +<div class="language-markdown highlighter-rouge"><pre class="highlight"><code><span class="p">[</span><span class="nv">Primary Button Text</span><span class="p">](</span><span class="sx">#link</span><span class="p">)</span>{: .btn}
 +<span class="p">[</span><span class="nv">Success Button Text</span><span class="p">](</span><span class="sx">#link</span><span class="p">)</span>{: .btn .btn--success}
 +<span class="p">[</span><span class="nv">Warning Button Text</span><span class="p">](</span><span class="sx">#link</span><span class="p">)</span>{: .btn .btn--warning}
 +<span class="p">[</span><span class="nv">Danger Button Text</span><span class="p">](</span><span class="sx">#link</span><span class="p">)</span>{: .btn .btn--danger}
 +<span class="p">[</span><span class="nv">Info Button Text</span><span class="p">](</span><span class="sx">#link</span><span class="p">)</span>{: .btn .btn--info}
 +<span class="p">[</span><span class="nv">Inverse Button</span><span class="p">](</span><span class="sx">#link</span><span class="p">)</span>{: .btn .btn--inverse}
 +<span class="p">[</span><span class="nv">Light Outline Button</span><span class="p">](</span><span class="sx">#link</span><span class="p">)</span>{: .btn .btn--light-outline}
 +</code></pre>
 +</div>
 +
 +<p><a href="#" class="btn btn--x-large">X-Large Button</a>
 +<a href="#" class="btn btn--large">Large Button</a>
 +<a href="#" class="btn">Default Button</a>
 +<a href="#" class="btn btn--small">Small Button</a></p>
 +
 +<div class="language-markdown highlighter-rouge"><pre class="highlight"><code><span class="p">[</span><span class="nv">X-Large Button</span><span class="p">](</span><span class="sx">#link</span><span class="p">)</span>{: .btn .btn--x-large}
 +<span class="p">[</span><span class="nv">Large Button</span><span class="p">](</span><span class="sx">#link</span><span class="p">)</span>{: .btn .btn--large}
 +<span class="p">[</span><span class="nv">Default Button</span><span class="p">](</span><span class="sx">#link</span><span class="p">)</span>{: .btn}
 +<span class="p">[</span><span class="nv">Small Button</span><span class="p">](</span><span class="sx">#link</span><span class="p">)</span>{: .btn .btn--small}
 +</code></pre>
 +</div>
 +
 +<h2 id="notices">Notices</h2>
 +
 +<p class="notice"><strong>Watch out!</strong> You can also add notices by appending <code class="highlighter-rouge"><span class="p">{</span><span class="err">:</span><span class="w"> </span><span class="err">.notice</span><span class="p">}</span></code> to a paragraph.</p>
 +
 +<h2 id="html-tags">HTML Tags</h2>
 +
 +<h3 id="address-tag">Address Tag</h3>
 +
 +<address>
 +  1 Infinite Loop<br /> Cupertino, CA 95014<br /> United States
 +</address>
 +
 +<h3 id="anchor-tag-aka-link">Anchor Tag (aka. Link)</h3>
 +
 +<p>This is an example of a <a href="http://apple.com" title="Apple">link</a>.</p>
 +
 +<h3 id="abbreviation-tag">Abbreviation Tag</h3>
 +
 +<p>The abbreviation <abbr title="Cascading Style Sheets">CSS</abbr> stands for \u201cCascading Style Sheets\u201d.</p>
 +
 +<h3 id="cite-tag">Cite Tag</h3>
 +
 +<p>\u201cCode is poetry.\u201d \u2014<cite>Automattic</cite></p>
 +
 +<h3 id="code-tag">Code Tag</h3>
 +
 +<p>You will learn later on in these tests that <code class="highlighter-rouge">word-wrap: break-word;</code> will be your best friend.</p>
 +
 +<h3 id="strike-tag">Strike Tag</h3>
 +
 +<p>This tag will let you <strike>strikeout text</strike>.</p>
 +
 +<h3 id="emphasize-tag">Emphasize Tag</h3>
 +
 +<p>The emphasize tag should <em>italicize</em> text.</p>
 +
 +<h3 id="insert-tag">Insert Tag</h3>
 +
 +<p>This tag should denote <ins>inserted</ins> text.</p>
 +
 +<h3 id="keyboard-tag">Keyboard Tag</h3>
 +
 +<p>This scarcely known tag emulates <kbd>keyboard text</kbd>, which is usually styled like the <code class="highlighter-rouge">&lt;code&gt;</code> tag.</p>
 +
 +<h3 id="preformatted-tag">Preformatted Tag</h3>
 +
 +<p>This tag styles large blocks of code.</p>
 +
 +<pre>
 +.post-title {
 +  margin: 0 0 5px;
 +  font-weight: bold;
 +  font-size: 38px;
 +  line-height: 1.2;
 +  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
 +}
 +</pre>
 +
 +<h3 id="quote-tag">Quote Tag</h3>
 +
 +<p><q>Developers, developers, developers\u2026</q> \u2013Steve Ballmer</p>
 +
 +<h3 id="strong-tag">Strong Tag</h3>
 +
 +<p>This tag shows <strong>bold text</strong>.</p>
 +
 +<h3 id="subscript-tag">Subscript Tag</h3>
 +
 +<p>Getting our science styling on with H<sub>2</sub>O, which should push the \u201c2\u201d down.</p>
 +
 +<h3 id="superscript-tag">Superscript Tag</h3>
 +
 +<p>Still sticking with science and Isaac Newton\u2019s E = MC<sup>2</sup>, which should lift the 2 up.</p>
 +
 +<h3 id="variable-tag">Variable Tag</h3>
 +
 +<p>This allows you to denote <var>variables</var>.</p>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/quick-start/" rel="permalink">Quick Start</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">How to quickly install and setup Apache RocketMQ.
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/about/team/" rel="permalink">TEAM</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Project team.
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/about/contact/" rel="permalink">CONTACT</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Contact.
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/motivation/" rel="permalink">Motivation</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/core-concept/" rel="permalink">Core Concept</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/about/rewards/" rel="permalink">REWARDS</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Rewards.
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/cli-admin-tool/" rel="permalink">CLI Admin Tool</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/cluster-deployment/" rel="permalink">Cluster Configuration and Deployment</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/pull-request/" rel="permalink">Best Practice in Pull Request</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/code-guidelines/" rel="permalink">Coding Guidelines</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Apache RocketMQ Coding Guidelines
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/documentation/" rel="permalink">Documentation</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Apache RocketMQ Documentation
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/faq/" rel="permalink">Frequently Asked Questions</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/release-manual" rel="permalink">Release Manual</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Apache RocketMQ Release Manual
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/dowloading/releases/" rel="permalink">Downloading the Apache RocketMQ Releases</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/roadmap/" rel="permalink">The RoadMap of Apache RocketMQ</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
++        <a href="/docs/batch-example/" rel="permalink">Batch Example</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to use batch in Rocketmq
++</p>
++  </article>
++</div>
++
++<div class="list__item">
++  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/broadcast-example/" rel="permalink">Broadcasting</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to send broadcast messages in Apache RocketMQ.
++</p>
++  </article>
++</div>
++
++<div class="list__item">
++  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/rmq-deployment/" rel="permalink">Deployment</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to deploy the Apache RocketMQ.
++</p>
++  </article>
++</div>
++
++<div class="list__item">
++  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/order-example/" rel="permalink">Order Message </a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to send and receive ordered messages in Apache RocketMQ.
++</p>
++  </article>
++</div>
++
++<div class="list__item">
++  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/rmq-arc/" rel="permalink">RocketMQ Architecture</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">The main Architecture of Apache RocketMQ.
++</p>
++  </article>
++</div>
++
++<div class="list__item">
++  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/schedule-example/" rel="permalink">Schedule example</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to use schedule component to reduce pull in RocketMQ.
++</p>
++  </article>
++</div>
++
++<div class="list__item">
++  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/simple-example/" rel="permalink">Simple Message Example</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to send simple message to reduce pull in RocketMQ.
++</p>
++  </article>
++</div>
++
++<div class="list__item">
++  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
 +        <a href="/404.html" rel="permalink">Page Not Found</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Page not found. Your pixels are in another canvas.
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/about/" rel="permalink">About</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Anything about RocketMQ.
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/archive-layout-with-content/" rel="permalink">Archive Layout with Content</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/best-practice-broker/" rel="permalink">Best Practice For Broker</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/best-practice-consumer/" rel="permalink">Best Practice For Consumer</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/best-practice-namesvr/" rel="permalink">Best Practice For NameServer</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/best-practice-producer/" rel="permalink">Best Practice For Producer</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/categories/" rel="permalink">Posts by Category</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/collection-archive/" rel="permalink">Posts by Collection</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/community/" rel="permalink">Apache RocketMQ</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Apache RocketMQ\u2122 is an open source distributed messaging and streaming data platform. Latest release v4.0.0-incubating  
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/customer/" rel="permalink">Apache RocketMQ</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Apache RocketMQ\u2122 is an open source distributed messaging and streaming data platform. Latest release v4.0.0-incubating  
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/" rel="permalink"></a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Apache RocketMQ\u2122 is an open source distributed messaging and streaming data platform. Latest release v4.0.0-incubating  
 +</p>
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/assets/css/main.css" rel="permalink"></a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/tags/" rel="permalink">Posts by Tags</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/year-archive/" rel="permalink">Read and Comment</a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/feed.xml" rel="permalink"></a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/feed.xslt.xml" rel="permalink"></a>
 +      
 +    </h2>
 +    
 +    
 +  </article>
 +</div>
 +
 +  </div>
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/assets/images/about/rshtykh.png
----------------------------------------------------------------------
diff --cc content/assets/images/about/rshtykh.png
index 0000000,0000000..bc48883
new file mode 100644
Binary files differ

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/assets/images/rmq-basic-arc.png
----------------------------------------------------------------------
diff --cc content/assets/images/rmq-basic-arc.png
index 0000000,0000000..33927be
new file mode 100644
Binary files differ

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/assets/images/rmq-basic-component.png
----------------------------------------------------------------------
diff --cc content/assets/images/rmq-basic-component.png
index 0000000,0000000..4cdc306
new file mode 100644
Binary files differ

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/collection-archive/index.html
----------------------------------------------------------------------
diff --cc content/collection-archive/index.html
index fa2850e,0000000..7b0a59f
mode 100644,000000..100644
--- a/content/collection-archive/index.html
+++ b/content/collection-archive/index.html
@@@ -1,829 -1,0 +1,975 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Posts by Collection - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="The homepage of RocketMQ.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Posts by Collection">
 +
 +
 +
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Posts by Collection">
 +  <meta name="twitter:description" content="The homepage of RocketMQ.">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--archive">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +
 +<div itemscope itemtype="http://schema.org/Person">
 +
 +  
 +    <div class="author__avatar">
 +      
 +        <img src="/assets/images/rmq-logo.png" class="author__avatar" alt="" itemprop="image">
 +      
 +    </div>
 +  
 +
 +  <div class="author__content">
 +    <h3 class="author__name" itemprop="name"></h3>
 +    
 +      <p class="author__bio" itemprop="description">
 +        A fast, low latency, reliable, scalable, distributed MOM.
 +      </p>
 +    
 +  </div>
 +
 +  <div class="author__urls-wrapper">
 +    <button class="btn btn--inverse">Follow</button>
 +    <ul class="author__urls social-icons">
 +      
 +        <li itemprop="homeLocation" itemscope itemtype="http://schema.org/Place">
 +          <i class="fa fa-fw fa-map-marker" aria-hidden="true"></i> <span itemprop="name">Hangzhou, China</span>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="http://incubator.staging.apache.org/projects/rocketmq.html" itemprop="url">
 +            <i class="fa fa-fw fa-chain" aria-hidden="true"></i> Website
 +          </a>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="mailto:dev@rocketmq.incubator.apache.org">
 +            <meta itemprop="email" content="dev@rocketmq.incubator.apache.org" />
 +            <i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> Email
 +          </a>
 +        </li>
 +      
 +
 +      
 +
 +      
 +        <li>
 +          <a href="https://twitter.com/ApacheRocketMQ" itemprop="sameAs">
 +            <i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter
 +          </a>
 +        </li>
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +        <li>
 +          <a href="https://github.com/apache/incubator-rocketmq" itemprop="sameAs">
 +            <i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub
 +          </a>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="https://www.stackoverflow.com/questions/tagged/rocketmq" itemprop="sameAs">
 +            <i class="fa fa-fw fa-stack-overflow" aria-hidden="true"></i> Stackoverflow
 +          </a>
 +        </li>
 +      
 +
 +      
 +        <li>
 +          <a href="https://www.quora.com/topic/RocketMQ" itemprop="sameAs">
 +            <i class="fa fa-fw" aria-hidden="true"><strong>Q</strong></i> Quora
 +          </a>
 +        </li>
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      
 +
 +      <!--
 +  <li>
 +    <a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs">
 +      <i class="fa fa-fw" aria-hidden="true"></i> Custom Social Profile Link
 +    </a>
 +  </li>
 +-->
 +    </ul>
 +  </div>
 +</div>
 +
 +  
 +  </div>
 +
 +
 +  <div class="archive">
 +    
 +      <h1 class="page__title">Posts by Collection</h1>
 +    
 +    
 +
 +
 +  
 +    
 +    
 +      <h2 id="about" class="archive__subtitle">about</h2>
 +      
 +    
 +  
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/about/team/" rel="permalink">TEAM
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Project team.
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/about/contact/" rel="permalink">CONTACT
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Contact.
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/about/rewards/" rel="permalink">REWARDS
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Rewards.
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +
 +  
 +    
 +    
 +      <h2 id="docs" class="archive__subtitle">docs</h2>
 +      
 +    
 +  
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/quick-start/" rel="permalink">Quick Start
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">How to quickly install and setup Apache RocketMQ.
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/motivation/" rel="permalink">Motivation
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">In the early stages, we constructed our distributed messaging middleware on the basis of ActiveMQ 5.x(less than 5.3). Our international business uses it for ...</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/core-concept/" rel="permalink">Core Concept
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">
 +
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/cli-admin-tool/" rel="permalink">CLI Admin Tool
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">RocketMQ provides a CLI admin tool belt to query, manage and diagnose various issues.
 +
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/cluster-deployment/" rel="permalink">Cluster Configuration and Deployment
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Prerequisite
 +
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/pull-request/" rel="permalink">Best Practice in Pull Request
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">This page guides you through Git setup and contribution process.
 +
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/code-guidelines/" rel="permalink">Coding Guidelines
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Apache RocketMQ Coding Guidelines
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/documentation/" rel="permalink">Documentation
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Apache RocketMQ Documentation
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/faq/" rel="permalink">Frequently Asked Questions
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the document...</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/release-manual" rel="permalink">Release Manual
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Apache RocketMQ Release Manual
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/dowloading/releases/" rel="permalink">Downloading the Apache RocketMQ Releases
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Use the links below to download the Apache RocketMQ Releases, the latest release is 4.0.0-incubating.
 +
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/roadmap/" rel="permalink">The RoadMap of Apache RocketMQ
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">4.1.0~4.3.0-incubating RoadMap:
 +
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
++        <a href="/docs/batch-example/" rel="permalink">Batch Example
++</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to use batch in Rocketmq
++</p>
++  </article>
++</div>
++    
++  
++    
++      
++
++
++
++<div class="list__item">
++  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/broadcast-example/" rel="permalink">Broadcasting
++</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to send broadcast messages in Apache RocketMQ.
++</p>
++  </article>
++</div>
++    
++  
++    
++      
++
++
++
++<div class="list__item">
++  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/rmq-deployment/" rel="permalink">Deployment
++</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to deploy the Apache RocketMQ.
++</p>
++  </article>
++</div>
++    
++  
++    
++      
++
++
++
++<div class="list__item">
++  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/order-example/" rel="permalink">Order Message
++</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to send and receive ordered messages in Apache RocketMQ.
++</p>
++  </article>
++</div>
++    
++  
++    
++      
++
++
++
++<div class="list__item">
++  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/rmq-arc/" rel="permalink">RocketMQ Architecture
++</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">The main Architecture of Apache RocketMQ.
++</p>
++  </article>
++</div>
++    
++  
++    
++      
++
++
++
++<div class="list__item">
++  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/schedule-example/" rel="permalink">Schedule example
++</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to use schedule component to reduce pull in RocketMQ.
++</p>
++  </article>
++</div>
++    
++  
++    
++      
++
++
++
++<div class="list__item">
++  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
++        <a href="/docs/simple-example/" rel="permalink">Simple Message Example
++</a>
++      
++    </h2>
++    
++    <p class="archive__item-excerpt" itemprop="description">How to send simple message to reduce pull in RocketMQ.
++</p>
++  </article>
++</div>
++    
++  
++    
++      
++
++
++
++<div class="list__item">
++  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
++    
++    <h2 class="archive__item-title" itemprop="headline">
++      
 +        <a href="/docs/best-practice-broker/" rel="permalink">Best Practice For Broker
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Some useful tips for users.
 +
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/best-practice-consumer/" rel="permalink">Best Practice For Consumer
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Some useful tips for users.
 +
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/best-practice-namesvr/" rel="permalink">Best Practice For NameServer
 +</a>
 +      
 +    </h2>
 +    
-     <p class="archive__item-excerpt" itemprop="description">Some useful tips for users.
- 
- </p>
++    <p class="archive__item-excerpt" itemprop="description">In Apache RocketMQ, name servers are designed to coordinate each component of the distributed system
++and fulfill much of this responsibility through managing...</p>
 +  </article>
 +</div>
 +    
 +  
 +    
 +      
 +
 +
 +
 +<div class="list__item">
 +  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
 +    
 +    <h2 class="archive__item-title" itemprop="headline">
 +      
 +        <a href="/docs/best-practice-producer/" rel="permalink">Best Practice For Producer
 +</a>
 +      
 +    </h2>
 +    
 +    <p class="archive__item-excerpt" itemprop="description">Some useful tips for users.
 +
 +</p>
 +  </article>
 +</div>
 +    
 +  
 +
 +  
 +    
 +    
 +      <h2 id="pets" class="archive__subtitle">pets</h2>
 +      
 +    
 +  
 +  
 +
 +  
 +    
 +    
 +      <h2 id="portfolio" class="archive__subtitle">portfolio</h2>
 +      
 +    
 +  
 +  
 +
 +  
 +  
 +    
 +  
 +    
 +  
 +    
 +  
 +    
 +  
 +    
 +  
 +    
 +  
 +    
 +  
 +
 +  
 +    
 +    
 +      <h2 id="recipes" class="archive__subtitle">recipes</h2>
 +      
 +    
 +  
 +  
 +
 +  </div>
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/batch-example/index.html
----------------------------------------------------------------------
diff --cc content/docs/batch-example/index.html
index 0000000,0000000..9cd89ad
new file mode 100644
--- /dev/null
+++ b/content/docs/batch-example/index.html
@@@ -1,0 -1,0 +1,696 @@@
++<!doctype html>
++<html lang="en" class="no-js">
++  <head>
++    <meta charset="utf-8">
++
++<!-- begin SEO -->
++
++
++
++
++
++
++
++
++
++<title>Batch Example - Apache RocketMQ</title>
++
++
++
++
++<meta name="description" content="How to use batch in Rocketmq">
++
++
++
++
++<meta property="og:locale" content="en">
++<meta property="og:site_name" content="Apache RocketMQ">
++<meta property="og:title" content="Batch Example">
++
++
++
++
++  <meta property="og:description" content="How to use batch in Rocketmq">
++
++
++
++  <meta name="twitter:site" content="@ApacheRocketMQ">
++  <meta name="twitter:title" content="Batch Example">
++  <meta name="twitter:description" content="How to use batch in Rocketmq">
++  <meta name="twitter:url" content="">
++
++  
++    <meta name="twitter:card" content="summary">
++    
++  
++
++  
++
++
++
++  
++
++  
++
++
++
++
++
++  <meta property="og:type" content="article">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
++
++
++
++
++
++
++
++
++  <script type="application/ld+json">
++    {
++      "@context" : "http://schema.org",
++      "@type" : "Person",
++      "name" : "Apache RocketMQ",
++      "url" : null,
++      "sameAs" : null
++    }
++  </script>
++
++
++
++  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
++
++
++  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
++
++
++
++
++<!-- end SEO -->
++
++
++<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
++
++<!-- http://t.co/dKP3o1e -->
++<meta name="HandheldFriendly" content="True">
++<meta name="MobileOptimized" content="320">
++<meta name="viewport" content="width=device-width, initial-scale=1.0">
++
++<script>
++  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
++</script>
++
++<!-- For all browsers -->
++<link rel="stylesheet" href="/assets/css/main.css">
++
++<meta http-equiv="cleartype" content="on">
++    <!-- start custom head snippets -->
++
++<!-- insert favicons. use http://realfavicongenerator.net/ -->
++
++<!-- end custom head snippets -->
++  </head>
++
++  <body class="layout--single">
++
++    <!--[if lt IE 9]>
++<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
++<![endif]-->
++    <div class="masthead">
++  <div class="masthead__inner-wrap">
++    <div class="masthead__menu">
++      <nav id="site-nav" class="greedy-nav">
++        <button><div class="navicon"></div></button>
++        <ul class="visible-links">
++          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
++          
++        </ul>
++        <ul class="hidden-links hidden"></ul>
++      </nav>
++    </div>
++  </div>
++</div>
++
++    
++
++
++
++<div id="main" role="main">
++  
++  <div class="sidebar sticky">
++  
++  
++    
++      
++      
++      
++    
++    
++      
++
++<nav class="nav__list">
++  
++  <input id="ac-toc" name="accordion-toc" type="checkbox" />
++  <label for="ac-toc">Toggle Menu</label>
++  <ul class="nav__items">
++    
++      <li>
++        
++          <span class="nav__sub-title">User Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="active">Batch Example</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Best Practice</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Release Notes</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/dowloading/releases/" class="">Download</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
++        
++
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
++        
++
++        
++      </li>
++    
++  </ul>
++</nav>
++    
++  
++  </div>
++
++
++  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
++    <meta itemprop="headline" content="Batch Example">
++    <meta itemprop="description" content="How to use batch in Rocketmq">
++    <meta itemprop="datePublished" content="April 25, 2017">
++    <meta itemprop="dateModified" content="April 25, 2017">
++
++    <div class="page__inner-wrap">
++      
++        <header>
++          <h1 class="page__title" itemprop="headline">Batch Example
++</h1>
++          
++        </header>
++      
++
++      <section class="page__content" itemprop="text">
++        <aside class="sidebar__right">
++<nav class="toc">
++    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
++<ul class="toc__menu" id="markdown-toc">
++  <li><a href="#when-to-use-batch" id="markdown-toc-when-to-use-batch">When to use batch</a></li>
++  <li><a href="#usage-constraints" id="markdown-toc-usage-constraints">Usage constraints</a></li>
++  <li><a href="#how-to-use-batch" id="markdown-toc-how-to-use-batch">How to use batch</a></li>
++  <li><a href="#split-into-lists" id="markdown-toc-split-into-lists">Split into lists</a></li>
++</ul>
++
++  </nav>
++</aside>
++
++<h4 id="when-to-use-batch">When to use batch</h4>
++<p>Batch is not for packaging but improving performance of small messages. So the messages of the same batch should act the same role, no more effort should be taken to split the batch.
++No split has another important advantage, messages of the same batch should be sent atomically, that is all successfully or all unsuccessfully, of which the importance is self-evident.
++So performance and atomicity are the original intentions, which will reflect on the usage constraints. 
++That is to say, if you want to improve performance for small messages or to send messages atomically, batch is a nice solution for you.</p>
++<h4 id="usage-constraints">Usage constraints</h4>
++<p>Performance and atomicity are worth  the following constraints:
++messages of the same batch should have:</p>
++
++<ol>
++  <li>same topic: If they belong to different topics(internally the queues), then may be sent to different brokers, which will against atomicity.</li>
++  <li>same waitStoreMsgOK: also differences will against atomicity.</li>
++  <li>no delay level: If we care about the delay level, we need to decode the internal properties of every message, which will cause much performance loss.</li>
++</ol>
++
++<p>And the most important, the total size, that is the sum of size of each message in one batch, should be no more than 1M.</p>
++
++<h4 id="how-to-use-batch">How to use batch</h4>
++<p>If you just send several small messages in a time and do not need to worry about the size limit, it is easy to use batch:</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">String</span> <span class="n">topic</span> <span class="o">=</span> <span class="s">"BatchTest"</span><span class="o">;</span>
++<span class="n">List</span><span class="o">&lt;</span><span class="n">Message</span><span class="o">&gt;</span> <span class="n">messages</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ArrayList</span><span class="o">&lt;&gt;();</span>
++<span class="n">messages</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">Message</span><span class="o">(</span><span class="n">topic</span><span class="o">,</span> <span class="s">"TagA"</span><span class="o">,</span> <span class="s">"OrderID001"</span><span class="o">,</span> <span class="s">"Hello world 0"</span><span class="o">.</span><span class="na">getBytes</span><span class="o">()));</span>
++<span class="n">messages</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">Message</span><span class="o">(</span><span class="n">topic</span><span class="o">,</span> <span class="s">"TagA"</span><span class="o">,</span> <span class="s">"OrderID002"</span><span class="o">,</span> <span class="s">"Hello world 1"</span><span class="o">.</span><span class="na">getBytes</span><span class="o">()));</span>
++<span class="n">messages</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">Message</span><span class="o">(</span><span class="n">topic</span><span class="o">,</span> <span class="s">"TagA"</span><span class="o">,</span> <span class="s">"OrderID003"</span><span class="o">,</span> <span class="s">"Hello world 2"</span><span class="o">.</span><span class="na">getBytes</span><span class="o">()));</span>
++<span class="k">try</span> <span class="o">{</span>
++    <span class="n">producer</span><span class="o">.</span><span class="na">send</span><span class="o">(</span><span class="n">messages</span><span class="o">);</span>
++<span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
++    <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
++    <span class="c1">//handle the error</span>
++<span class="o">}</span>
++    
++</code></pre>
++</div>
++<h4 id="split-into-lists">Split into lists</h4>
++<p>The complexity only grow when you send large batch and you may not sure if it exceeds the size limit (1M).</p>
++
++<p>At this time, you\u2019d better split the lists:</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">ListSplitter</span> <span class="kd">implements</span> <span class="n">Iterator</span><span class="o">&lt;</span><span class="n">List</span><span class="o">&lt;</span><span class="n">Message</span><span class="o">&gt;&gt;</span> <span class="o">{</span>
++    <span class="kd">private</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">SIZE_LIMIT</span> <span class="o">=</span> <span class="mi">1000</span> <span class="o">*</span> <span class="mi">1000</span><span class="o">;</span>
++    <span class="kd">private</span> <span class="kd">final</span> <span class="n">List</span><span class="o">&lt;</span><span class="n">Message</span><span class="o">&gt;</span> <span class="n">messages</span><span class="o">;</span>
++    <span class="kd">private</span> <span class="kt">int</span> <span class="n">currIndex</span><span class="o">;</span>
++    <span class="kd">public</span> <span class="nf">ListSplitter</span><span class="o">(</span><span class="n">List</span><span class="o">&lt;</span><span class="n">Message</span><span class="o">&gt;</span> <span class="n">messages</span><span class="o">)</span> <span class="o">{</span>
++            <span class="k">this</span><span class="o">.</span><span class="na">messages</span> <span class="o">=</span> <span class="n">messages</span><span class="o">;</span>
++    <span class="o">}</span>
++    <span class="nd">@Override</span> <span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">hasNext</span><span class="o">()</span> <span class="o">{</span>
++        <span class="k">return</span> <span class="n">currIndex</span> <span class="o">&lt;</span> <span class="n">messages</span><span class="o">.</span><span class="na">size</span><span class="o">();</span>
++    <span class="o">}</span>
++    <span class="nd">@Override</span> <span class="kd">public</span> <span class="n">List</span><span class="o">&lt;</span><span class="n">Message</span><span class="o">&gt;</span> <span class="nf">next</span><span class="o">()</span> <span class="o">{</span>
++        <span class="kt">int</span> <span class="n">nextIndex</span> <span class="o">=</span> <span class="n">currIndex</span><span class="o">;</span>
++        <span class="kt">int</span> <span class="n">totalSize</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
++        <span class="k">for</span> <span class="o">(;</span> <span class="n">nextIndex</span> <span class="o">&lt;</span> <span class="n">messages</span><span class="o">.</span><span class="na">size</span><span class="o">();</span> <span class="n">nextIndex</span><span class="o">++)</span> <span class="o">{</span>
++            <span class="n">Message</span> <span class="n">message</span> <span class="o">=</span> <span class="n">messages</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="n">nextIndex</span><span class="o">);</span>
++            <span class="kt">int</span> <span class="n">tmpSize</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="na">getTopic</span><span class="o">().</span><span class="na">length</span><span class="o">()</span> <span class="o">+</span> <span class="n">message</span><span class="o">.</span><span class="na">getBody</span><span class="o">().</span><span class="na">length</span><span class="o">;</span>
++            <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">&gt;</span> <span class="n">properties</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="na">getProperties</span><span class="o">();</span>
++            <span class="k">for</span> <span class="o">(</span><span class="n">Map</span><span class="o">.</span><span class="na">Entry</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">&gt;</span> <span class="n">entry</span> <span class="o">:</span> <span class="n">properties</span><span class="o">.</span><span class="na">entrySet</span><span class="o">())</span> <span class="o">{</span>
++                <span class="n">tmpSize</span> <span class="o">+=</span> <span class="n">entry</span><span class="o">.</span><span class="na">getKey</span><span class="o">().</span><span class="na">length</span><span class="o">()</span> <span class="o">+</span> <span class="n">entry</span><span class="o">.</span><span class="na">getValue</span><span class="o">().</span><span class="na">length</span><span class="o">();</span>
++            <span class="o">}</span>
++            <span class="n">tmpSize</span> <span class="o">=</span> <span class="n">tmpSize</span> <span class="o">+</span> <span class="mi">20</span><span class="o">;</span> <span class="c1">//for log overhead</span>
++            <span class="k">if</span> <span class="o">(</span><span class="n">tmpSize</span> <span class="o">&gt;</span> <span class="n">SIZE_LIMIT</span><span class="o">)</span> <span class="o">{</span>
++                <span class="c1">//it is unexpected that single message exceeds the SIZE_LIMIT</span>
++                <span class="c1">//here just let it go, otherwise it will block the splitting process</span>
++                <span class="k">if</span> <span class="o">(</span><span class="n">nextIndex</span> <span class="o">-</span> <span class="n">currIndex</span> <span class="o">==</span> <span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
++                   <span class="c1">//if the next sublist has no element, add this one and then break, otherwise just break</span>
++                   <span class="n">nextIndex</span><span class="o">++;</span>  
++                <span class="o">}</span>
++                <span class="k">break</span><span class="o">;</span>
++            <span class="o">}</span>
++            <span class="k">if</span> <span class="o">(</span><span class="n">tmpSize</span> <span class="o">+</span> <span class="n">totalSize</span> <span class="o">&gt;</span> <span class="n">SIZE_LIMIT</span><span class="o">)</span> <span class="o">{</span>
++                <span class="k">break</span><span class="o">;</span>
++            <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
++                <span class="n">totalSize</span> <span class="o">+=</span> <span class="n">tmpSize</span><span class="o">;</span>
++            <span class="o">}</span>
++    
++        <span class="o">}</span>
++        <span class="n">List</span><span class="o">&lt;</span><span class="n">Message</span><span class="o">&gt;</span> <span class="n">subList</span> <span class="o">=</span> <span class="n">messages</span><span class="o">.</span><span class="na">subList</span><span class="o">(</span><span class="n">currIndex</span><span class="o">,</span> <span class="n">nextIndex</span><span class="o">);</span>
++        <span class="n">currIndex</span> <span class="o">=</span> <span class="n">nextIndex</span><span class="o">;</span>
++        <span class="k">return</span> <span class="n">subList</span><span class="o">;</span>
++    <span class="o">}</span>
++<span class="o">}</span>
++<span class="c1">//then you could split the large list into small ones:</span>
++<span class="n">ListSplitter</span> <span class="n">splitter</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ListSplitter</span><span class="o">(</span><span class="n">messages</span><span class="o">);</span>
++<span class="k">while</span> <span class="o">(</span><span class="n">splitter</span><span class="o">.</span><span class="na">hasNext</span><span class="o">())</span> <span class="o">{</span>
++   <span class="k">try</span> <span class="o">{</span>
++       <span class="n">List</span><span class="o">&lt;</span><span class="n">Message</span><span class="o">&gt;</span>  <span class="n">listItem</span> <span class="o">=</span> <span class="n">splitter</span><span class="o">.</span><span class="na">next</span><span class="o">();</span>
++       <span class="n">producer</span><span class="o">.</span><span class="na">send</span><span class="o">(</span><span class="n">listItem</span><span class="o">);</span>
++   <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
++       <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
++       <span class="c1">//handle the error</span>
++   <span class="o">}</span>
++<span class="o">}</span>
++</code></pre>
++</div>
++
++        
++      </section>
++
++      <footer class="page__meta">
++        
++        
++
++
++        
++          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-04-25">April 25, 2017</time></p>
++        
++      </footer>
++
++      <section class="page__share">
++  
++    <h4 class="page__share-title">Share on</h4>
++  
++
++  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Batch Example /docs/batch-example/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
++
++  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/batch-example/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
++
++  <a href="https://plus.google.com/share?url=/docs/batch-example/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
++
++  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/batch-example/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
++</section>
++
++
++      
++  <nav class="pagination">
++    
++      <a href="/docs/roadmap/" class="pagination--pager" title="The RoadMap of Apache RocketMQ
++">Previous</a>
++    
++    
++      <a href="/docs/broadcast-example/" class="pagination--pager" title="Broadcasting
++">Next</a>
++    
++  </nav>
++
++    </div>
++
++    
++      <div class="page__comments">
++  
++  
++    <h4 class="page__comments-title">Leave a Comment</h4>
++    <section id="disqus_thread"></section>
++  
++</div>
++    
++  </article>
++
++  
++  
++</div>
++
++    <div class="page__footer">
++      <footer>
++        <!-- start custom footer snippets -->
++
++<!-- end custom footer snippets -->
++        <style type="text/css">
++  div.columns   { float: left; margin-left: 10px;}
++  div.clear     { clear: both; } 
++</style>
++<div>
++  <div class="columns">
++    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
++  </div>
++  <div class="columns" style="width: 80%">
++    <div class="page__footer-follow">
++      <ul class="social-icons">
++        
++          <li><strong>Follow:</strong></li>
++        
++        
++          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
++        
++        
++        
++          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
++        
++        
++        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
++      </ul>
++    </div>
++
++    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
++  </div>
++</div>
++<div class="clear"></div>
++      </footer>
++    </div>
++
++    <script src="/assets/js/main.min.js"></script>
++
++
++
++
++  <script>
++  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
++  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
++  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
++  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
++
++  ga('create', 'UA-89603173-1', 'auto');
++  ga('send', 'pageview');
++</script>
++
++<script>
++var _hmt = _hmt || [];
++(function() {
++  var hm = document.createElement("script");
++  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
++  var s = document.getElementsByTagName("script")[0]; 
++  s.parentNode.insertBefore(hm, s);
++})();
++</script>
++
++
++
++
++  
++  <script type="text/javascript">
++  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
++  	var disqus_shortname = 'rocketmq';
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function() {
++  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
++  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
++  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
++  	})();
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function () {
++  		var s = document.createElement('script'); s.async = true;
++  		s.type = 'text/javascript';
++  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
++  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
++  	}());
++  </script>
++  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
++
++
++
++
++
++
++  </body>
++</html>


[09/16] incubator-rocketmq-site git commit: Release at 2017.04.25

Posted by yu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/rmq-deployment/index.html
----------------------------------------------------------------------
diff --cc content/docs/rmq-deployment/index.html
index 0000000,0000000..72032fb
new file mode 100644
--- /dev/null
+++ b/content/docs/rmq-deployment/index.html
@@@ -1,0 -1,0 +1,814 @@@
++<!doctype html>
++<html lang="en" class="no-js">
++  <head>
++    <meta charset="utf-8">
++
++<!-- begin SEO -->
++
++
++
++
++
++
++
++
++
++<title>Deployment - Apache RocketMQ</title>
++
++
++
++
++<meta name="description" content="How to deploy the Apache RocketMQ.">
++
++
++
++
++<meta property="og:locale" content="en">
++<meta property="og:site_name" content="Apache RocketMQ">
++<meta property="og:title" content="Deployment">
++
++
++
++
++  <meta property="og:description" content="How to deploy the Apache RocketMQ.">
++
++
++
++  <meta name="twitter:site" content="@ApacheRocketMQ">
++  <meta name="twitter:title" content="Deployment">
++  <meta name="twitter:description" content="How to deploy the Apache RocketMQ.">
++  <meta name="twitter:url" content="">
++
++  
++    <meta name="twitter:card" content="summary">
++    
++  
++
++  
++
++
++
++  
++
++  
++
++
++
++
++
++  <meta property="og:type" content="article">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
++
++
++
++
++
++
++
++
++  <script type="application/ld+json">
++    {
++      "@context" : "http://schema.org",
++      "@type" : "Person",
++      "name" : "Apache RocketMQ",
++      "url" : null,
++      "sameAs" : null
++    }
++  </script>
++
++
++
++  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
++
++
++  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
++
++
++
++
++<!-- end SEO -->
++
++
++<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
++
++<!-- http://t.co/dKP3o1e -->
++<meta name="HandheldFriendly" content="True">
++<meta name="MobileOptimized" content="320">
++<meta name="viewport" content="width=device-width, initial-scale=1.0">
++
++<script>
++  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
++</script>
++
++<!-- For all browsers -->
++<link rel="stylesheet" href="/assets/css/main.css">
++
++<meta http-equiv="cleartype" content="on">
++    <!-- start custom head snippets -->
++
++<!-- insert favicons. use http://realfavicongenerator.net/ -->
++
++<!-- end custom head snippets -->
++  </head>
++
++  <body class="layout--single">
++
++    <!--[if lt IE 9]>
++<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
++<![endif]-->
++    <div class="masthead">
++  <div class="masthead__inner-wrap">
++    <div class="masthead__menu">
++      <nav id="site-nav" class="greedy-nav">
++        <button><div class="navicon"></div></button>
++        <ul class="visible-links">
++          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
++          
++        </ul>
++        <ul class="hidden-links hidden"></ul>
++      </nav>
++    </div>
++  </div>
++</div>
++
++    
++
++
++
++<div id="main" role="main">
++  
++  <div class="sidebar sticky">
++  
++  
++    
++      
++      
++      
++    
++    
++      
++
++<nav class="nav__list">
++  
++  <input id="ac-toc" name="accordion-toc" type="checkbox" />
++  <label for="ac-toc">Toggle Menu</label>
++  <ul class="nav__items">
++    
++      <li>
++        
++          <span class="nav__sub-title">User Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="active">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Best Practice</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Release Notes</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/dowloading/releases/" class="">Download</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
++        
++
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
++        
++
++        
++      </li>
++    
++  </ul>
++</nav>
++    
++  
++  </div>
++
++
++  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
++    <meta itemprop="headline" content="Deployment">
++    <meta itemprop="description" content="How to deploy the Apache RocketMQ.">
++    <meta itemprop="datePublished" content="April 25, 2017">
++    <meta itemprop="dateModified" content="April 25, 2017">
++
++    <div class="page__inner-wrap">
++      
++        <header>
++          <h1 class="page__title" itemprop="headline">Deployment
++</h1>
++          
++        </header>
++      
++
++      <section class="page__content" itemprop="text">
++        <aside class="sidebar__right">
++<nav class="toc">
++    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
++<ul class="toc__menu" id="markdown-toc">
++  <li><a href="#prerequisite" id="markdown-toc-prerequisite">Prerequisite</a>    <ul>
++      <li><a href="#production-ready-deployment" id="markdown-toc-production-ready-deployment">Production-ready Deployment</a></li>
++      <li><a href="#broker" id="markdown-toc-broker">Broker</a></li>
++    </ul>
++  </li>
++  <li><a href="#configuration" id="markdown-toc-configuration">Configuration</a>    <ul>
++      <li><a href="#broker-configuration" id="markdown-toc-broker-configuration">Broker configuration</a></li>
++    </ul>
++  </li>
++  <li><a href="#cli-admin-tool" id="markdown-toc-cli-admin-tool">CLI Admin Tool</a>    <ul>
++      <li><a href="#how-to-get" id="markdown-toc-how-to-get">How To Get</a></li>
++      <li><a href="#how-to-use" id="markdown-toc-how-to-use">How to use</a></li>
++    </ul>
++  </li>
++  <li><a href="#replication-mode" id="markdown-toc-replication-mode">Replication mode</a>    <ul>
++      <li><a href="#how-to-configure" id="markdown-toc-how-to-configure">How to configure</a></li>
++      <li><a href="#deployment" id="markdown-toc-deployment">Deployment</a></li>
++    </ul>
++  </li>
++</ul>
++
++  </nav>
++</aside>
++
++<p>This section is to introduce deployment solution which is considered production-ready. Generally speaking, we are deploying a resilient RocketMQ cluster having no single point of failure.</p>
++
++<h3 id="prerequisite">Prerequisite</h3>
++<p>Before starting this section, make sure you have read Quick Start section, in which core concepts and components of RocketMQ are introduced.</p>
++
++<h4 id="production-ready-deployment">Production-ready Deployment</h4>
++<p>#####Name Server
++To ensure the cluster can still operate normally when one instance crashes, two or more name server instances are recommended. As long as there is at least one name server instance alive, the whole cluster remains serving.</p>
++
++<p>Name server follows share-nothing design paradigm. Brokers send heartbeat data to all name servers. Producers and consumers may query meta data from any one of name servers available while sending / consuming messages.</p>
++
++<h4 id="broker">Broker</h4>
++<p>Brokers can be divided into two categories according to their roles: master and slave. Master brokers provide RW access while slave brokers only accept read access.</p>
++
++<p>To deploy a high-availability RocketMQ cluster which has no single point of failure, a series of broker sets should be deployed. One broker set contains one master with brokerId set to 0 and several slaves with non-zero brokerIDs. All of the brokers in one set have the same brokerName. In serious scenarios, we should have at least two brokers in one broker set. Each topic resides in two or more brokers.</p>
++
++<h3 id="configuration">Configuration</h3>
++<p>When deploying a RocketMQ cluster, below configurations should be taken into consideration.</p>
++
++<h5 id="broker-configuration">Broker configuration</h5>
++
++<table>
++  <thead>
++    <tr>
++      <th>Property Name</th>
++      <th style="text-align: center">Default values</th>
++      <th style="text-align: right">Details</th>
++    </tr>
++  </thead>
++  <tbody>
++    <tr>
++      <td>listenPort</td>
++      <td style="text-align: center">10911</td>
++      <td style="text-align: right">listen port for client</td>
++    </tr>
++    <tr>
++      <td>namesrvAddr</td>
++      <td style="text-align: center">null</td>
++      <td style="text-align: right">name server address</td>
++    </tr>
++    <tr>
++      <td>brokerIP1</td>
++      <td style="text-align: center">InetAddress for network interface</td>
++      <td style="text-align: right">Should be configured if having multiple addresses</td>
++    </tr>
++    <tr>
++      <td>brokerName</td>
++      <td style="text-align: center">null</td>
++      <td style="text-align: right">broker name</td>
++    </tr>
++    <tr>
++      <td>brokerClusterName</td>
++      <td style="text-align: center">DefaultCluster</td>
++      <td style="text-align: right">this broker belongs to which cluster</td>
++    </tr>
++    <tr>
++      <td>brokerId</td>
++      <td style="text-align: center">0</td>
++      <td style="text-align: right">broker id, 0 means master, positive integers mean slave</td>
++    </tr>
++    <tr>
++      <td>storePathCommitLog</td>
++      <td style="text-align: center">$HOME/store/commitlog/</td>
++      <td style="text-align: right">file path for commit log</td>
++    </tr>
++    <tr>
++      <td>storePathConsumerQueue</td>
++      <td style="text-align: center">$HOME/store/consumequeue/</td>
++      <td style="text-align: right">file path for consume queue</td>
++    </tr>
++    <tr>
++      <td>mapedFileSizeCommitLog</td>
++      <td style="text-align: center">1024 * 1024 * 1024(1G)</td>
++      <td style="text-align: right">mapped file size for commit log</td>
++    </tr>
++    <tr>
++      <td>deleteWhen</td>
++      <td style="text-align: center">04</td>
++      <td style="text-align: right">When to delete the commitlog which is out of the reserve time</td>
++    </tr>
++    <tr>
++      <td>fileReserverdTime</td>
++      <td style="text-align: center">72</td>
++      <td style="text-align: right">The number of hours to keep a commitlog before deleting it</td>
++    </tr>
++    <tr>
++      <td>brokerRole</td>
++      <td style="text-align: center">ASYNC_MASTER</td>
++      <td style="text-align: right">SYNC_MASTER/ASYNC_MASTER/SLVAE</td>
++    </tr>
++    <tr>
++      <td>flushDiskType</td>
++      <td style="text-align: center">ASYNC_FLUSH</td>
++      <td style="text-align: right">{SYNC_FLUSH/ASYNC_FLUSH}. Broker of SYNC_FLUSH mode flushes each message onto disk before acknowledging producer. Broker of ASYNC_FLUSH mode, on the other hand, takes advantage of group-committing, achieving better performance.</td>
++    </tr>
++  </tbody>
++</table>
++
++<h3 id="cli-admin-tool">CLI Admin Tool</h3>
++<p>RocketMQ provides a CLI(command-line interface) admin tool belt to query, manage and diagnose various issues.</p>
++
++<h4 id="how-to-get">How To Get</h4>
++<p>The admin tool is shipped along with RocketMQ. Either you download a pre-built binary version or build from source by yourself, you already have it.</p>
++
++<p>In case you have source code, the rocketmq-tools module contains its source code.</p>
++
++<h4 id="how-to-use">How to use</h4>
++<p>The Admin Tool is very easy to use. Here, for demonstration purpose, *nix environment is assumed.</p>
++
++<p>Change directory to ${PACKAGE}/bin, command bash mqadmin, you should see the following help menu pops out:</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">The</span> <span class="n">most</span> <span class="n">commonly</span> <span class="n">used</span> <span class="n">mqadmin</span> <span class="n">commands</span> <span class="nl">are:</span>
++   <span class="n">updateTopic</span>          <span class="n">Update</span> <span class="n">or</span> <span class="n">create</span> <span class="n">topic</span>
++   <span class="n">deleteTopic</span>          <span class="n">Delete</span> <span class="n">topic</span> <span class="n">from</span> <span class="n">broker</span> <span class="n">and</span> <span class="n">NameServer</span>
++   <span class="n">updateSubGroup</span>       <span class="n">Update</span> <span class="n">or</span> <span class="n">create</span> <span class="n">subscription</span> <span class="n">group</span>
++   <span class="n">deleteSubGroup</span>       <span class="n">Delete</span> <span class="n">subscription</span> <span class="n">group</span> <span class="n">from</span> <span class="n">broker</span>
++   <span class="n">updateBrokerConfig</span>   <span class="n">Update</span> <span class="n">broker</span><span class="err">'</span><span class="n">s</span> <span class="n">config</span>
++   <span class="n">updateTopicPerm</span>      <span class="n">Update</span> <span class="n">topic</span> <span class="n">perm</span>
++   <span class="n">topicRoute</span>           <span class="n">Examine</span> <span class="n">topic</span> <span class="n">route</span> <span class="n">info</span>
++   <span class="n">topicStatus</span>          <span class="n">Examine</span> <span class="n">topic</span> <span class="n">Status</span> <span class="n">info</span>
++   <span class="n">topicClusterList</span>     <span class="n">get</span> <span class="n">cluster</span> <span class="n">info</span> <span class="k">for</span> <span class="n">topic</span>
++   <span class="n">brokerStatus</span>         <span class="n">Fetch</span> <span class="n">broker</span> <span class="n">runtime</span> <span class="n">status</span> <span class="n">data</span>
++   <span class="n">queryMsgById</span>         <span class="n">Query</span> <span class="n">Message</span> <span class="n">by</span> <span class="n">Id</span>
++   <span class="n">queryMsgByKey</span>        <span class="n">Query</span> <span class="n">Message</span> <span class="n">by</span> <span class="n">Key</span>
++   <span class="n">queryMsgByUniqueKey</span>  <span class="n">Query</span> <span class="n">Message</span> <span class="n">by</span> <span class="n">Unique</span> <span class="n">key</span>
++   <span class="n">queryMsgByOffset</span>     <span class="n">Query</span> <span class="n">Message</span> <span class="n">by</span> <span class="n">offset</span>
++   <span class="n">queryMsgByUniqueKey</span>  <span class="n">Query</span> <span class="n">Message</span> <span class="n">by</span> <span class="n">Unique</span> <span class="n">key</span>
++   <span class="n">printMsg</span>             <span class="n">Print</span> <span class="n">Message</span> <span class="n">Detail</span>
++   <span class="n">sendMsgStatus</span>        <span class="n">send</span> <span class="n">msg</span> <span class="n">to</span> <span class="n">broker</span>
++   <span class="n">brokerConsumeStats</span>   <span class="n">Fetch</span> <span class="n">broker</span> <span class="n">consume</span> <span class="n">stats</span> <span class="n">data</span>
++   <span class="n">producerConnection</span>   <span class="n">Query</span> <span class="n">producer</span><span class="err">'</span><span class="n">s</span> <span class="n">socket</span> <span class="n">connection</span> <span class="n">and</span> <span class="n">client</span> <span class="n">version</span>
++   <span class="n">consumerConnection</span>   <span class="n">Query</span> <span class="n">consumer</span><span class="err">'</span><span class="n">s</span> <span class="n">socket</span> <span class="n">connection</span><span class="o">,</span> <span class="n">client</span> <span class="n">version</span> <span class="n">and</span> <span class="n">subscription</span>
++   <span class="n">consumerProgress</span>     <span class="n">Query</span> <span class="n">consumers</span><span class="err">'</span><span class="n">s</span> <span class="n">progress</span><span class="o">,</span> <span class="n">speed</span>
++   <span class="n">consumerStatus</span>       <span class="n">Query</span> <span class="n">consumer</span><span class="err">'</span><span class="n">s</span> <span class="n">internal</span> <span class="n">data</span> <span class="n">structure</span>
++   <span class="n">cloneGroupOffset</span>     <span class="n">clone</span> <span class="n">offset</span> <span class="n">from</span> <span class="n">other</span> <span class="n">group</span>
++   <span class="n">clusterList</span>          <span class="n">List</span> <span class="n">all</span> <span class="n">of</span> <span class="n">clusters</span>
++   <span class="n">topicList</span>            <span class="n">Fetch</span> <span class="n">all</span> <span class="n">topic</span> <span class="n">list</span> <span class="n">from</span> <span class="n">name</span> <span class="n">server</span>
++   <span class="n">updateKvConfig</span>       <span class="n">Create</span> <span class="n">or</span> <span class="n">update</span> <span class="n">KV</span> <span class="n">config</span>
++   <span class="n">deleteKvConfig</span>       <span class="n">Delete</span> <span class="n">KV</span> <span class="n">config</span>
++   <span class="n">wipeWritePerm</span>        <span class="n">Wipe</span> <span class="n">write</span> <span class="n">perm</span> <span class="n">of</span> <span class="n">broker</span> <span class="n">in</span> <span class="n">all</span> <span class="n">name</span> <span class="n">server</span>
++   <span class="n">resetOffsetByTime</span>    <span class="n">Reset</span> <span class="n">consumer</span> <span class="n">offset</span> <span class="n">by</span> <span class="nf">timestamp</span><span class="o">(</span><span class="n">without</span> <span class="n">client</span> <span class="n">restart</span><span class="o">)</span>
++   <span class="n">updateOrderConf</span>      <span class="n">Create</span> <span class="n">or</span> <span class="n">update</span> <span class="n">or</span> <span class="n">delete</span> <span class="n">order</span> <span class="n">conf</span>
++   <span class="n">cleanExpiredCQ</span>       <span class="n">Clean</span> <span class="n">expired</span> <span class="n">ConsumeQueue</span> <span class="n">on</span> <span class="n">broker</span><span class="o">.</span>
++   <span class="n">cleanUnusedTopic</span>     <span class="n">Clean</span> <span class="n">unused</span> <span class="n">topic</span> <span class="n">on</span> <span class="n">broker</span>
++   <span class="n">startMonitoring</span>      <span class="n">Start</span> <span class="n">Monitoring</span>
++   <span class="n">statsAll</span>             <span class="n">Topic</span> <span class="n">and</span> <span class="n">Consumer</span> <span class="n">tps</span> <span class="n">stats</span>
++   <span class="n">syncDocs</span>             <span class="n">Synchronize</span> <span class="n">wiki</span> <span class="n">and</span> <span class="n">issue</span> <span class="n">to</span> <span class="n">github</span><span class="o">.</span><span class="na">com</span>
++   <span class="n">allocateMQ</span>           <span class="n">Allocate</span> <span class="n">MQ</span>
++   <span class="n">checkMsgSendRT</span>       <span class="n">check</span> <span class="n">message</span> <span class="n">send</span> <span class="n">response</span> <span class="n">time</span>
++   <span class="n">clusterRT</span>            <span class="n">List</span> <span class="n">All</span> <span class="n">clusters</span> <span class="n">Message</span> <span class="n">Send</span> <span class="n">RT</span>
++
++</code></pre>
++</div>
++<p>See \u2018mqadmin help <command />\u2019 for more information on a specific command. 
++If you want to get more information about a specific command like \u2018clusterList\u2019, just type bash mqadmin help clusterList and you will see:</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="nl">usage:</span> <span class="n">mqadmin</span> <span class="n">clusterList</span> <span class="o">[-</span><span class="n">h</span><span class="o">]</span> <span class="o">[-</span><span class="n">i</span> <span class="o">&lt;</span><span class="n">arg</span><span class="o">&gt;]</span> <span class="o">[-</span><span class="n">m</span><span class="o">]</span> <span class="o">[-</span><span class="n">n</span> <span class="o">&lt;</span><span class="n">arg</span><span class="o">&gt;]</span>
++ <span class="o">-</span><span class="n">h</span><span class="o">,--</span><span class="n">help</span>                <span class="n">Print</span> <span class="n">help</span>
++ <span class="o">-</span><span class="n">i</span><span class="o">,--</span><span class="n">interval</span> <span class="o">&lt;</span><span class="n">arg</span><span class="o">&gt;</span>      <span class="n">specify</span> <span class="n">intervals</span> <span class="n">numbers</span><span class="o">,</span> <span class="n">it</span> <span class="n">is</span> <span class="n">in</span> <span class="n">seconds</span>
++ <span class="o">-</span><span class="n">m</span><span class="o">,--</span><span class="n">moreStats</span>           <span class="n">Print</span> <span class="n">more</span> <span class="n">stats</span>
++ <span class="o">-</span><span class="n">n</span><span class="o">,--</span><span class="n">namesrvAddr</span> <span class="o">&lt;</span><span class="n">arg</span><span class="o">&gt;</span>   <span class="n">Name</span> <span class="n">server</span> <span class="n">address</span> <span class="n">list</span><span class="o">,</span> <span class="nl">eg:</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.1</span><span class="o">:</span><span class="mi">9876</span><span class="o">;</span><span class="mf">192.168</span><span class="o">.</span><span class="mf">0.2</span><span class="o">:</span><span class="mi">9876</span>
++</code></pre>
++</div>
++
++<h3 id="replication-mode">Replication mode</h3>
++<p>With the purpose to guarantee that any successfully published message will not be lost, RocketMQ provides a Replication mode to gain stronger durability and higher availability with two replication way: Sync &amp; Async.</p>
++
++<p>#####Replication: Sync / Async Broker</p>
++
++<p>Similar to many replication system, sync brokers await until commit log is replicated to the slave before acknowledging. Async brokers, instead, return immediately after messages are processed on master.</p>
++
++<h5 id="how-to-configure">How to configure</h5>
++<p>There are three pre-built configurations shipped with the distribution of RocketMQ under conf folder for your reference:</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="mi">2</span><span class="n">m</span><span class="o">-</span><span class="mi">2</span><span class="n">s</span><span class="o">-</span><span class="n">sync</span>
++<span class="mi">2</span><span class="n">m</span><span class="o">-</span><span class="mi">2</span><span class="n">s</span><span class="o">-</span><span class="n">async</span>
++<span class="mi">2</span><span class="n">m</span><span class="o">-</span><span class="n">noslave</span>
++</code></pre>
++</div>
++<p>Note: all configurations uses ASYNC_FLUSH.</p>
++
++<h4 id="deployment">Deployment</h4>
++<p>Take the deployment of 2m-2s-sync as example. First, start up two name servers as is shown in the Quick Start section. Assume their IPs are 192.168.0.2 and 192.168.0.3.</p>
++
++<p>Then start the brokers(Assume binary RocketMQ is at /home/rocketmq/dist)</p>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="o">&gt;</span><span class="n">cd</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rocketmq</span><span class="o">/</span><span class="n">dist</span><span class="o">/</span><span class="n">bin</span>
++<span class="o">&gt;</span><span class="n">bash</span> <span class="n">mqbroker</span> <span class="o">-</span><span class="n">c</span> <span class="o">../</span><span class="n">conf</span><span class="o">/</span><span class="mi">2</span><span class="n">m</span><span class="o">-</span><span class="mi">2</span><span class="n">s</span><span class="o">-</span><span class="n">sync</span><span class="o">/</span><span class="n">broker</span><span class="o">-</span><span class="n">a</span><span class="o">.</span><span class="na">properties</span> <span class="o">-</span><span class="n">n</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.2</span><span class="o">:</span><span class="mi">9876</span><span class="o">,</span><span class="mf">192.168</span><span class="o">.</span><span class="mf">0.3</span><span class="o">:</span><span class="mi">9876</span>
++<span class="o">&gt;</span><span class="n">bash</span> <span class="n">mqbroker</span> <span class="o">-</span><span class="n">c</span> <span class="o">../</span><span class="n">conf</span><span class="o">/</span><span class="mi">2</span><span class="n">m</span><span class="o">-</span><span class="mi">2</span><span class="n">s</span><span class="o">-</span><span class="n">sync</span><span class="o">/</span><span class="n">broker</span><span class="o">-</span><span class="n">a</span><span class="o">-</span><span class="n">s</span><span class="o">.</span><span class="na">properties</span> <span class="o">-</span><span class="n">n</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.2</span><span class="o">:</span><span class="mi">9876</span><span class="o">,</span><span class="mf">192.168</span><span class="o">.</span><span class="mf">0.3</span><span class="o">:</span><span class="mi">9876</span>
++<span class="o">&gt;</span><span class="n">bash</span> <span class="n">mqbroker</span> <span class="o">-</span><span class="n">c</span> <span class="o">../</span><span class="n">conf</span><span class="o">/</span><span class="mi">2</span><span class="n">m</span><span class="o">-</span><span class="mi">2</span><span class="n">s</span><span class="o">-</span><span class="n">sync</span><span class="o">/</span><span class="n">broker</span><span class="o">-</span><span class="n">b</span><span class="o">.</span><span class="na">properties</span> <span class="o">-</span><span class="n">n</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.2</span><span class="o">:</span><span class="mi">9876</span><span class="o">,</span><span class="mf">192.168</span><span class="o">.</span><span class="mf">0.3</span><span class="o">:</span><span class="mi">9876</span>
++<span class="o">&gt;</span><span class="n">bash</span> <span class="n">mqbroker</span> <span class="o">-</span><span class="n">c</span> <span class="o">../</span><span class="n">conf</span><span class="o">/</span><span class="mi">2</span><span class="n">m</span><span class="o">-</span><span class="mi">2</span><span class="n">s</span><span class="o">-</span><span class="n">sync</span><span class="o">/</span><span class="n">broker</span><span class="o">-</span><span class="n">b</span><span class="o">-</span><span class="n">s</span><span class="o">.</span><span class="na">properties</span> <span class="o">-</span><span class="n">n</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">0.2</span><span class="o">:</span><span class="mi">9876</span><span class="o">,</span><span class="mf">192.168</span><span class="o">.</span><span class="mf">0.3</span><span class="o">:</span><span class="mi">9876</span>
++<span class="n">How</span> <span class="n">to</span> <span class="n">verify</span>
++<span class="n">Execute</span> <span class="n">the</span> <span class="n">following</span> <span class="n">command</span> <span class="n">to</span> <span class="n">verify</span> <span class="n">according</span> <span class="n">to</span> <span class="n">the</span> <span class="n">CLI</span> <span class="nl">section:</span>
++<span class="o">&gt;</span> <span class="n">bash</span> <span class="n">mqadmin</span> <span class="n">clusterlist</span>
++</code></pre>
++</div>
++
++
++        
++      </section>
++
++      <footer class="page__meta">
++        
++        
++
++
++        
++          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-04-25">April 25, 2017</time></p>
++        
++      </footer>
++
++      <section class="page__share">
++  
++    <h4 class="page__share-title">Share on</h4>
++  
++
++  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Deployment /docs/rmq-deployment/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
++
++  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/rmq-deployment/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
++
++  <a href="https://plus.google.com/share?url=/docs/rmq-deployment/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
++
++  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/rmq-deployment/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
++</section>
++
++
++      
++  <nav class="pagination">
++    
++      <a href="/docs/broadcast-example/" class="pagination--pager" title="Broadcasting
++">Previous</a>
++    
++    
++      <a href="/docs/order-example/" class="pagination--pager" title="Order Message
++">Next</a>
++    
++  </nav>
++
++    </div>
++
++    
++      <div class="page__comments">
++  
++  
++    <h4 class="page__comments-title">Leave a Comment</h4>
++    <section id="disqus_thread"></section>
++  
++</div>
++    
++  </article>
++
++  
++  
++</div>
++
++    <div class="page__footer">
++      <footer>
++        <!-- start custom footer snippets -->
++
++<!-- end custom footer snippets -->
++        <style type="text/css">
++  div.columns   { float: left; margin-left: 10px;}
++  div.clear     { clear: both; } 
++</style>
++<div>
++  <div class="columns">
++    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
++  </div>
++  <div class="columns" style="width: 80%">
++    <div class="page__footer-follow">
++      <ul class="social-icons">
++        
++          <li><strong>Follow:</strong></li>
++        
++        
++          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
++        
++        
++        
++          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
++        
++        
++        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
++      </ul>
++    </div>
++
++    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
++  </div>
++</div>
++<div class="clear"></div>
++      </footer>
++    </div>
++
++    <script src="/assets/js/main.min.js"></script>
++
++
++
++
++  <script>
++  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
++  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
++  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
++  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
++
++  ga('create', 'UA-89603173-1', 'auto');
++  ga('send', 'pageview');
++</script>
++
++<script>
++var _hmt = _hmt || [];
++(function() {
++  var hm = document.createElement("script");
++  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
++  var s = document.getElementsByTagName("script")[0]; 
++  s.parentNode.insertBefore(hm, s);
++})();
++</script>
++
++
++
++
++  
++  <script type="text/javascript">
++  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
++  	var disqus_shortname = 'rocketmq';
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function() {
++  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
++  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
++  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
++  	})();
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function () {
++  		var s = document.createElement('script'); s.async = true;
++  		s.type = 'text/javascript';
++  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
++  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
++  	}());
++  </script>
++  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
++
++
++
++
++
++
++  </body>
++</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/roadmap/index.html
----------------------------------------------------------------------
diff --cc content/docs/roadmap/index.html
index bb81e95,0000000..fcaf332
mode 100644,000000..100644
--- a/content/docs/roadmap/index.html
+++ b/content/docs/roadmap/index.html
@@@ -1,629 -1,0 +1,689 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>The RoadMap of Apache RocketMQ - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="4.1.0~4.3.0-incubating RoadMap:">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="The RoadMap of Apache RocketMQ">
 +
 +
 +
 +
 +  <meta property="og:description" content="4.1.0~4.3.0-incubating RoadMap:">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="The RoadMap of Apache RocketMQ">
 +  <meta name="twitter:description" content="4.1.0~4.3.0-incubating RoadMap:">
 +  <meta name="twitter:url" content="">
 +
 +  
 +    <meta name="twitter:card" content="summary">
 +    
 +  
 +
 +  
 +
 +
 +
 +  
 +
 +  
 +
 +
 +
 +
 +
 +  <meta property="og:type" content="article">
-   <meta property="article:published_time" content="2017-04-07T09:16:21+08:00">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
 +
 +
 +
 +
 +
 +
 +
 +
 +  <script type="application/ld+json">
 +    {
 +      "@context" : "http://schema.org",
 +      "@type" : "Person",
 +      "name" : "Apache RocketMQ",
 +      "url" : null,
 +      "sameAs" : null
 +    }
 +  </script>
 +
 +
 +
 +  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
 +
 +
 +  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
 +
 +
 +
 +
 +<!-- end SEO -->
 +
 +
 +<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
 +
 +<!-- http://t.co/dKP3o1e -->
 +<meta name="HandheldFriendly" content="True">
 +<meta name="MobileOptimized" content="320">
 +<meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
 +<script>
 +  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
 +</script>
 +
 +<!-- For all browsers -->
 +<link rel="stylesheet" href="/assets/css/main.css">
 +
 +<meta http-equiv="cleartype" content="on">
 +    <!-- start custom head snippets -->
 +
 +<!-- insert favicons. use http://realfavicongenerator.net/ -->
 +
 +<!-- end custom head snippets -->
 +  </head>
 +
 +  <body class="layout--single">
 +
 +    <!--[if lt IE 9]>
 +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
 +<![endif]-->
 +    <div class="masthead">
 +  <div class="masthead__inner-wrap">
 +    <div class="masthead__menu">
 +      <nav id="site-nav" class="greedy-nav">
 +        <button><div class="navicon"></div></button>
 +        <ul class="visible-links">
 +          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
 +          
 +            
 +            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
 +          
 +        </ul>
 +        <ul class="hidden-links hidden"></ul>
 +      </nav>
 +    </div>
 +  </div>
 +</div>
 +
 +    
 +
 +
 +
 +<div id="main" role="main">
 +  
 +  <div class="sidebar sticky">
 +  
 +  
 +    
 +      
 +      
 +      
 +    
 +    
 +      
 +
 +<nav class="nav__list">
 +  
 +  <input id="ac-toc" name="accordion-toc" type="checkbox" />
 +  <label for="ac-toc">Toggle Menu</label>
 +  <ul class="nav__items">
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">User Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/motivation/" class="">Motivation</a></li>
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
-           <span class="nav__sub-title">Developer Guide</span>
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
-             <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Best Practice</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
 +            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          <span class="nav__sub-title">Release Notes</span>
 +        
 +
 +        
 +        <ul>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/dowloading/releases/" class="">Download</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
 +          
 +        </ul>
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +      <li>
 +        
 +          
 +          
 +
 +          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
 +        
 +
 +        
 +      </li>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="The RoadMap of Apache RocketMQ">
 +    <meta itemprop="description" content="4.1.0~4.3.0-incubating RoadMap:">
-     <meta itemprop="datePublished" content="April 07, 2017">
++    <meta itemprop="datePublished" content="April 25, 2017">
 +    <meta itemprop="dateModified" content="March 08, 2017">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">The RoadMap of Apache RocketMQ
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <h2 id="410430-incubating-roadmap">4.1.0~4.3.0-incubating RoadMap:</h2>
 +
 +<h3 id="openmessaging">OpenMessaging</h3>
 +<p>OpenMessaging is a redefinition of the application of the access message service programming API standard. It is only API, non wire-level protocol. OpenMessaging covers large data message processing, stream computing message processing, the traditional transaction model of message processing. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-17">JIRA</a></p>
 +
 +<aside class="sidebar__right">
 +<nav class="toc">
 +    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
 +<ul class="toc__menu" id="markdown-toc">
 +  <li><a href="#410430-incubating-roadmap" id="markdown-toc-410430-incubating-roadmap">4.1.0~4.3.0-incubating RoadMap:</a>    <ul>
 +      <li><a href="#openmessaging" id="markdown-toc-openmessaging">OpenMessaging</a></li>
 +      <li><a href="#message-filtering" id="markdown-toc-message-filtering">Message Filtering</a></li>
 +      <li><a href="#batch-messaging" id="markdown-toc-batch-messaging">Batch Messaging</a></li>
 +      <li><a href="#consistent-hash-allocate-strategychas" id="markdown-toc-consistent-hash-allocate-strategychas">Consistent Hash Allocate Strategy(CHAS)</a></li>
 +      <li><a href="#global-order-messaging" id="markdown-toc-global-order-messaging">Global Order Messaging</a></li>
 +      <li><a href="#distributed-transaction-messaging" id="markdown-toc-distributed-transaction-messaging">Distributed Transaction Messaging</a></li>
 +      <li><a href="#non-redundant-message-delivery-mechanism" id="markdown-toc-non-redundant-message-delivery-mechanism">Non-Redundant Message Delivery Mechanism</a></li>
 +      <li><a href="#intellective-ha-architecture" id="markdown-toc-intellective-ha-architecture">Intellective HA Architecture</a></li>
 +      <li><a href="#docker-image" id="markdown-toc-docker-image">Docker Image</a></li>
 +      <li><a href="#mqtt" id="markdown-toc-mqtt">MQTT</a></li>
 +    </ul>
 +  </li>
 +  <li><a href="#440-incubating-roadmap" id="markdown-toc-440-incubating-roadmap">4.4.0-incubating+ RoadMap:</a></li>
 +  <li><a href="#rocketmq-externals" id="markdown-toc-rocketmq-externals">RocketMQ Externals</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h3 id="message-filtering">Message Filtering</h3>
 +<p>So far, RocketMQ only support message filtering feature by <code class="highlighter-rouge">TAG</code>, but one message only can own one tag, this is too limited to meet complex business requirements.</p>
 +
 +<p>So, we want to define and implement a reasonable filter language based on a subset of the SQL 92 expression syntax to support customized message filtering. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-121">JIRA</a></p>
 +
 +<h3 id="batch-messaging">Batch Messaging</h3>
 +
 +<p>In order to use RocketMQ in big data related scenarios, batch messaging is necessary, which will bring million-level TPS for RocketMQ. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-80">JIRA</a>, <a href="https://github.com/apache/incubator-rocketmq/pull/53">PR</a></p>
 +
 +<h3 id="consistent-hash-allocate-strategychas">Consistent Hash Allocate Strategy(CHAS)</h3>
 +
 +<p>Consumer clients use the average allocate strategy by far, which is very sensitive when clients register or unregister continually.</p>
 +
 +<p>A Consistent Hash allocate strategy is valuable for the developer who cares more about stabilization than averaging.</p>
 +
 +<p>So it\u2019s better for us to support CHAS as a extra choice in consumer load balancing. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-67">JIRA</a>, <a href="https://github.com/apache/incubator-rocketmq/pull/67">PR</a></p>
 +
 +<h3 id="global-order-messaging">Global Order Messaging</h3>
 +
 +<p>As we know, messages in the same queue can be consumed sequentially. So we always send the congeneric messages to the same queue to guarantee ordering, which will cause hot-point issue.</p>
 +
 +<p>So It\u2019s cool if we support a new global order messaging mechanism, without hot-points problem. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-122">JIRA</a></p>
 +
 +<h3 id="distributed-transaction-messaging">Distributed Transaction Messaging</h3>
 +<p>Undoubtedly, transaction messaging is very frequently-used in most business.</p>
 +
 +<p>But it is unfortunate that users must implement transaction mechanism by themselves until now, may be they need DataBase to implement it.</p>
 +
 +<p>It\u2019s time to support distributed transaction messaging to make it convenient for the user, help them handle complex business with skill and ease. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-123">JIRA</a></p>
 +
 +<h3 id="non-redundant-message-delivery-mechanism">Non-Redundant Message Delivery Mechanism</h3>
 +
 +<p>The duplicated messages are worrisome. It will cost much if user need non-repeating messages.</p>
 +
 +<p>In most cases, user need store the consume records to judge a message is replicated or not, and the store stage should guarantee strong consistency. As you see, it\u2019s very complicated, so support a strict and non-redundant message delivery mechanism is impending. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-124">JIRA</a></p>
 +
 +<h3 id="intellective-ha-architecture">Intellective HA Architecture</h3>
 +
 +<p>RocketMQ uses master-slave as HA architecture, which has low latency and high throughput features, but this program need human intervention to recover from abnormal situations.</p>
 +
 +<p>So, we want to support a multi-replication high availability\uff0freliability mechanism, without human intervention. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-125">JIRA</a></p>
 +
 +<h3 id="docker-image">Docker Image</h3>
 +<p>Provide a docker image for easy deployment and management, optimize for the latest version. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-126">JIRA</a></p>
 +
 +<h3 id="mqtt">MQTT</h3>
 +<p>MQTT is a machine-to-machine (M2M)/\u201dInternet of Things\u201d connectivity protocol, which has been widely used in IoT. Support MQTT, give RocketMQ the power to connect everything. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-127">JIRA</a></p>
 +
 +<h2 id="440-incubating-roadmap">4.4.0-incubating+ RoadMap:</h2>
 +
 +<ol>
 +  <li>Support more application layer protocol: WebSocket, HTTP2, etc.</li>
 +  <li>Support more native language SDK: PHP, Python, .Net, Node, Go, etc. The chosen programming languages are the result of surveying many cloud platforms.</li>
 +  <li>Support advanced message queuing protocol(AMQP).</li>
 +</ol>
 +
 +<h2 id="rocketmq-externals">RocketMQ Externals</h2>
 +
 +<p>RocketMQ, as a message-oriented middleware, plays a connector role in distributed environment, so in order to embrace the ecological preferably, RocketMQ community needs a series of external projects to integrate with other excellent projects.</p>
 +
 +<ol>
 +  <li>rocketmq-console, provide a ops dashboard for RocketMQ. <a href="https://github.com/apache/incubator-rocketmq-externals/tree/master/rocketmq-console">REPO</a></li>
 +  <li>rocketmq-jms, provide a new client to support JMS 2.0. <a href="https://github.com/apache/incubator-rocketmq-externals/tree/master/rocketmq-jms">REPO</a></li>
 +  <li>rocketmq-flume-ng, integrate RocketMQ with Apache Flume.<a href="https://github.com/apache/incubator-rocketmq-externals/tree/master/rocketmq-flume">REPO</a>, <a href="https://issues.apache.org/jira/browse/FLUME-3058">FLUME-JIRA</a></li>
 +  <li>rocketmq-storm, integrate RocketMQ with storm. <a href="https://github.com/rocketmq/rocketmq-storm">REPO</a></li>
 +  <li>rocketmq-ignite, integrate RocketMQ with ignite. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-41">JIRA</a>, <a href="https://issues.apache.org/jira/browse/IGNITE-4539">IGNITE-JIRA</a></li>
 +  <li>rocketmq-spark, integrate RocketMQ with spark. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-81">JIRA</a></li>
 +  <li>rocketmq-flink, integrate RocketMQ with flink. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-82">JIRA</a></li>
 +  <li>rocketmq-distributedlog integrate RocketMQ with distributedlog. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-21">JIRA</a></li>
 +  <li>rocketmq-spring, provide a adapter for spring and spring-boot. <a href="https://issues.apache.org/jira/browse/ROCKETMQ-120">JIRA</a></li>
 +</ol>
 +
 +        
 +      </section>
 +
 +      <footer class="page__meta">
 +        
 +        
 +
 +
 +        
 +          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-03-08">March 08, 2017</time></p>
 +        
 +      </footer>
 +
 +      <section class="page__share">
 +  
 +    <h4 class="page__share-title">Share on</h4>
 +  
 +
 +  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=The RoadMap of Apache RocketMQ /docs/roadmap/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
 +
 +  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/roadmap/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
 +
 +  <a href="https://plus.google.com/share?url=/docs/roadmap/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
 +
 +  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/roadmap/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
 +</section>
 +
 +
 +      
 +  <nav class="pagination">
 +    
 +      <a href="/dowloading/releases/" class="pagination--pager" title="Downloading the Apache RocketMQ Releases
 +">Previous</a>
 +    
 +    
-       <a href="/docs/best-practice-broker/" class="pagination--pager" title="Best Practice For Broker
++      <a href="/docs/batch-example/" class="pagination--pager" title="Batch Example
 +">Next</a>
 +    
 +  </nav>
 +
 +    </div>
 +
 +    
 +      <div class="page__comments">
 +  
 +  
 +    <h4 class="page__comments-title">Leave a Comment</h4>
 +    <section id="disqus_thread"></section>
 +  
 +</div>
 +    
 +  </article>
 +
 +  
 +  
 +</div>
 +
 +    <div class="page__footer">
 +      <footer>
 +        <!-- start custom footer snippets -->
 +
 +<!-- end custom footer snippets -->
 +        <style type="text/css">
 +  div.columns   { float: left; margin-left: 10px;}
 +  div.clear     { clear: both; } 
 +</style>
 +<div>
 +  <div class="columns">
 +    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
 +  </div>
 +  <div class="columns" style="width: 80%">
 +    <div class="page__footer-follow">
 +      <ul class="social-icons">
 +        
 +          <li><strong>Follow:</strong></li>
 +        
 +        
 +          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
 +        
 +        
 +        
 +          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
 +        
 +        
 +        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
 +      </ul>
 +    </div>
 +
 +    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
 +  </div>
 +</div>
 +<div class="clear"></div>
 +      </footer>
 +    </div>
 +
 +    <script src="/assets/js/main.min.js"></script>
 +
 +
 +
 +
 +  <script>
 +  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 +  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 +  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 +  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 +
 +  ga('create', 'UA-89603173-1', 'auto');
 +  ga('send', 'pageview');
 +</script>
 +
 +<script>
 +var _hmt = _hmt || [];
 +(function() {
 +  var hm = document.createElement("script");
 +  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
 +  var s = document.getElementsByTagName("script")[0]; 
 +  s.parentNode.insertBefore(hm, s);
 +})();
 +</script>
 +
 +
 +
 +
 +  
 +  <script type="text/javascript">
 +  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
 +  	var disqus_shortname = 'rocketmq';
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function() {
 +  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +  	})();
 +
 +  	/* * * DON'T EDIT BELOW THIS LINE * * */
 +  	(function () {
 +  		var s = document.createElement('script'); s.async = true;
 +  		s.type = 'text/javascript';
 +  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
 +  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
 +  	}());
 +  </script>
 +  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +
 +
 +
 +
 +
 +
 +  </body>
 +</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/ac7796b8/content/docs/schedule-example/index.html
----------------------------------------------------------------------
diff --cc content/docs/schedule-example/index.html
index 0000000,0000000..29f8adb
new file mode 100644
--- /dev/null
+++ b/content/docs/schedule-example/index.html
@@@ -1,0 -1,0 +1,666 @@@
++<!doctype html>
++<html lang="en" class="no-js">
++  <head>
++    <meta charset="utf-8">
++
++<!-- begin SEO -->
++
++
++
++
++
++
++
++
++
++<title>Schedule example - Apache RocketMQ</title>
++
++
++
++
++<meta name="description" content="How to use schedule component to reduce pull in RocketMQ.">
++
++
++
++
++<meta property="og:locale" content="en">
++<meta property="og:site_name" content="Apache RocketMQ">
++<meta property="og:title" content="Schedule example">
++
++
++
++
++  <meta property="og:description" content="How to use schedule component to reduce pull in RocketMQ.">
++
++
++
++  <meta name="twitter:site" content="@ApacheRocketMQ">
++  <meta name="twitter:title" content="Schedule example">
++  <meta name="twitter:description" content="How to use schedule component to reduce pull in RocketMQ.">
++  <meta name="twitter:url" content="">
++
++  
++    <meta name="twitter:card" content="summary">
++    
++  
++
++  
++
++
++
++  
++
++  
++
++
++
++
++
++  <meta property="og:type" content="article">
++  <meta property="article:published_time" content="2017-04-25T01:02:11+08:00">
++
++
++
++
++
++
++
++
++  <script type="application/ld+json">
++    {
++      "@context" : "http://schema.org",
++      "@type" : "Person",
++      "name" : "Apache RocketMQ",
++      "url" : null,
++      "sameAs" : null
++    }
++  </script>
++
++
++
++  <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
++
++
++  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
++
++
++
++
++<!-- end SEO -->
++
++
++<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
++
++<!-- http://t.co/dKP3o1e -->
++<meta name="HandheldFriendly" content="True">
++<meta name="MobileOptimized" content="320">
++<meta name="viewport" content="width=device-width, initial-scale=1.0">
++
++<script>
++  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
++</script>
++
++<!-- For all browsers -->
++<link rel="stylesheet" href="/assets/css/main.css">
++
++<meta http-equiv="cleartype" content="on">
++    <!-- start custom head snippets -->
++
++<!-- insert favicons. use http://realfavicongenerator.net/ -->
++
++<!-- end custom head snippets -->
++  </head>
++
++  <body class="layout--single">
++
++    <!--[if lt IE 9]>
++<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
++<![endif]-->
++    <div class="masthead">
++  <div class="masthead__inner-wrap">
++    <div class="masthead__menu">
++      <nav id="site-nav" class="greedy-nav">
++        <button><div class="navicon"></div></button>
++        <ul class="visible-links">
++          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/customer/">Customer</a></li>
++          
++            
++            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
++          
++        </ul>
++        <ul class="hidden-links hidden"></ul>
++      </nav>
++    </div>
++  </div>
++</div>
++
++    
++
++
++
++<div id="main" role="main">
++  
++  <div class="sidebar sticky">
++  
++  
++    
++      
++      
++      
++    
++    
++      
++
++<nav class="nav__list">
++  
++  <input id="ac-toc" name="accordion-toc" type="checkbox" />
++  <label for="ac-toc">Toggle Menu</label>
++  <ul class="nav__items">
++    
++      <li>
++        
++          <span class="nav__sub-title">User Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/simple-example/" class="">Simple Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/order-example/" class="">Order Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/broadcast-example/" class="">Broadcasting Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/schedule-example/" class="active">Schedule Example</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Deployment & Operations</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-arc/" class="">Architecture</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/rmq-deployment/" class="">Deployment</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Contributor Guide</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/pull-request/" class="">Pull Request</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/release-manual" class="">Release Manual</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Best Practice</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          <span class="nav__sub-title">Release Notes</span>
++        
++
++        
++        <ul>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/dowloading/releases/" class="">Download</a></li>
++          
++            
++            
++
++            
++            
++
++            <li><a href="/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li>
++          
++        </ul>
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a>
++        
++
++        
++      </li>
++    
++      <li>
++        
++          
++          
++
++          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
++        
++
++        
++      </li>
++    
++  </ul>
++</nav>
++    
++  
++  </div>
++
++
++  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
++    <meta itemprop="headline" content="Schedule example">
++    <meta itemprop="description" content="How to use schedule component to reduce pull in RocketMQ.">
++    <meta itemprop="datePublished" content="April 25, 2017">
++    <meta itemprop="dateModified" content="April 25, 2017">
++
++    <div class="page__inner-wrap">
++      
++        <header>
++          <h1 class="page__title" itemprop="headline">Schedule example
++</h1>
++          
++        </header>
++      
++
++      <section class="page__content" itemprop="text">
++        <aside class="sidebar__right">
++<nav class="toc">
++    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
++<ul class="toc__menu" id="markdown-toc">
++  <li><a href="#what-is-mq-schedule" id="markdown-toc-what-is-mq-schedule">What is mq schedule?</a>    <ul>
++      <li><a href="#defaultmqpullconsumer-use-case" id="markdown-toc-defaultmqpullconsumer-use-case">DefaultMQPullConsumer use case</a></li>
++      <li><a href="#use-mqpullconsumerscheduleservice-consume-message" id="markdown-toc-use-mqpullconsumerscheduleservice-consume-message">Use MQPullConsumerScheduleService consume message</a></li>
++      <li><a href="#have-fun-with-mqpullconsumerscheduleservice" id="markdown-toc-have-fun-with-mqpullconsumerscheduleservice">Have fun with <code class="highlighter-rouge">MQPullConsumerScheduleService</code>.</a></li>
++    </ul>
++  </li>
++</ul>
++
++  </nav>
++</aside>
++
++<h3 id="what-is-mq-schedule">What is mq schedule?</h3>
++<p>If you use <code class="highlighter-rouge">DefaultMQPullConsumer</code> to consume message,you have to fetch message manualy.There are some steps here to achieve this point.But with <code class="highlighter-rouge">MQPullConsumerScheduleService</code>,you will consume messages easily.</p>
++
++<h4 id="defaultmqpullconsumer-use-case">DefaultMQPullConsumer use case</h4>
++
++<blockquote>
++  <p>First fetch subscribed queues of a topic</p>
++</blockquote>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">Set</span><span class="o">&lt;</span><span class="n">MessageQueue</span><span class="o">&gt;</span> <span class="n">testTopic</span> <span class="o">=</span> <span class="n">consumer</span><span class="o">.</span><span class="na">fetchSubscribeMessageQueues</span><span class="o">(</span><span class="s">"testTopic"</span><span class="o">);</span>
++</code></pre>
++</div>
++
++<blockquote>
++  <p>Second chose a queue to fetch message,and save queue offset manually.</p>
++</blockquote>
++
++<h4 id="use-mqpullconsumerscheduleservice-consume-message">Use MQPullConsumerScheduleService consume message</h4>
++
++<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">final</span> <span class="n">MQPullConsumerScheduleService</span> <span class="n">scheduleService</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MQPullConsumerScheduleService</span><span class="o">(</span><span class="s">"GroupName1"</span><span class="o">);</span>
++
++<span class="n">scheduleService</span><span class="o">.</span><span class="na">setMessageModel</span><span class="o">(</span><span class="n">MessageModel</span><span class="o">.</span><span class="na">CLUSTERING</span><span class="o">);</span>
++<span class="n">scheduleService</span><span class="o">.</span><span class="na">registerPullTaskCallback</span><span class="o">(</span><span class="s">"TopicTest1"</span><span class="o">,</span> <span class="k">new</span> <span class="n">PullTaskCallback</span><span class="o">()</span> <span class="o">{</span>
++
++    <span class="nd">@Override</span>
++    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">doPullTask</span><span class="o">(</span><span class="n">MessageQueue</span> <span class="n">mq</span><span class="o">,</span> <span class="n">PullTaskContext</span> <span class="n">context</span><span class="o">)</span> <span class="o">{</span>
++        <span class="n">MQPullConsumer</span> <span class="n">consumer</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getPullConsumer</span><span class="o">();</span>
++        <span class="k">try</span> <span class="o">{</span>
++
++            <span class="kt">long</span> <span class="n">offset</span> <span class="o">=</span> <span class="n">consumer</span><span class="o">.</span><span class="na">fetchConsumeOffset</span><span class="o">(</span><span class="n">mq</span><span class="o">,</span> <span class="kc">false</span><span class="o">);</span>
++            <span class="k">if</span> <span class="o">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="o">)</span>
++                <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
++
++            <span class="n">PullResult</span> <span class="n">pullResult</span> <span class="o">=</span> <span class="n">consumer</span><span class="o">.</span><span class="na">pull</span><span class="o">(</span><span class="n">mq</span><span class="o">,</span> <span class="s">"*"</span><span class="o">,</span> <span class="n">offset</span><span class="o">,</span> <span class="mi">32</span><span class="o">);</span>
++            <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"%s%n"</span><span class="o">,</span> <span class="n">offset</span> <span class="o">+</span> <span class="s">"\t"</span> <span class="o">+</span> <span class="n">mq</span> <span class="o">+</span> <span class="s">"\t"</span> <span class="o">+</span> <span class="n">pullResult</span><span class="o">);</span>
++            <span class="k">switch</span> <span class="o">(</span><span class="n">pullResult</span><span class="o">.</span><span class="na">getPullStatus</span><span class="o">())</span> <span class="o">{</span>
++                <span class="k">case</span> <span class="nl">FOUND:</span>
++                    <span class="k">break</span><span class="o">;</span>
++                <span class="k">case</span> <span class="nl">NO_MATCHED_MSG:</span>
++                    <span class="k">break</span><span class="o">;</span>
++                <span class="k">case</span> <span class="nl">NO_NEW_MSG:</span>
++                <span class="k">case</span> <span class="nl">OFFSET_ILLEGAL:</span>
++                    <span class="k">break</span><span class="o">;</span>
++                <span class="k">default</span><span class="o">:</span>
++                    <span class="k">break</span><span class="o">;</span>
++            <span class="o">}</span>
++            <span class="n">consumer</span><span class="o">.</span><span class="na">updateConsumeOffset</span><span class="o">(</span><span class="n">mq</span><span class="o">,</span> <span class="n">pullResult</span><span class="o">.</span><span class="na">getNextBeginOffset</span><span class="o">());</span>
++
++			<span class="c1">//consume message auto</span>
++            <span class="n">context</span><span class="o">.</span><span class="na">setPullNextDelayTimeMillis</span><span class="o">(</span><span class="mi">100</span><span class="o">);</span>
++        <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
++            <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>
++        <span class="o">}</span>
++    <span class="o">}</span>
++<span class="o">});</span>
++
++<span class="n">scheduleService</span><span class="o">.</span><span class="na">start</span><span class="o">();</span>
++</code></pre>
++</div>
++
++<h4 id="have-fun-with-mqpullconsumerscheduleservice">Have fun with <code class="highlighter-rouge">MQPullConsumerScheduleService</code>.</h4>
++
++
++        
++      </section>
++
++      <footer class="page__meta">
++        
++        
++
++
++        
++          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-04-25">April 25, 2017</time></p>
++        
++      </footer>
++
++      <section class="page__share">
++  
++    <h4 class="page__share-title">Share on</h4>
++  
++
++  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Schedule example /docs/schedule-example/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
++
++  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/schedule-example/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
++
++  <a href="https://plus.google.com/share?url=/docs/schedule-example/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
++
++  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/schedule-example/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
++</section>
++
++
++      
++  <nav class="pagination">
++    
++      <a href="/docs/rmq-arc/" class="pagination--pager" title="RocketMQ Architecture
++">Previous</a>
++    
++    
++      <a href="/docs/simple-example/" class="pagination--pager" title="Simple Message Example
++">Next</a>
++    
++  </nav>
++
++    </div>
++
++    
++      <div class="page__comments">
++  
++  
++    <h4 class="page__comments-title">Leave a Comment</h4>
++    <section id="disqus_thread"></section>
++  
++</div>
++    
++  </article>
++
++  
++  
++</div>
++
++    <div class="page__footer">
++      <footer>
++        <!-- start custom footer snippets -->
++
++<!-- end custom footer snippets -->
++        <style type="text/css">
++  div.columns   { float: left; margin-left: 10px;}
++  div.clear     { clear: both; } 
++</style>
++<div>
++  <div class="columns">
++    <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a>
++  </div>
++  <div class="columns" style="width: 80%">
++    <div class="page__footer-follow">
++      <ul class="social-icons">
++        
++          <li><strong>Follow:</strong></li>
++        
++        
++          <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
++        
++        
++        
++          <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
++        
++        
++        <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
++      </ul>
++    </div>
++
++    <div class="page__footer-copyright">Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
++  </div>
++</div>
++<div class="clear"></div>
++      </footer>
++    </div>
++
++    <script src="/assets/js/main.min.js"></script>
++
++
++
++
++  <script>
++  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
++  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
++  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
++  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
++
++  ga('create', 'UA-89603173-1', 'auto');
++  ga('send', 'pageview');
++</script>
++
++<script>
++var _hmt = _hmt || [];
++(function() {
++  var hm = document.createElement("script");
++  hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2";
++  var s = document.getElementsByTagName("script")[0]; 
++  s.parentNode.insertBefore(hm, s);
++})();
++</script>
++
++
++
++
++  
++  <script type="text/javascript">
++  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
++  	var disqus_shortname = 'rocketmq';
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function() {
++  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
++  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
++  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
++  	})();
++
++  	/* * * DON'T EDIT BELOW THIS LINE * * */
++  	(function () {
++  		var s = document.createElement('script'); s.async = true;
++  		s.type = 'text/javascript';
++  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
++  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
++  	}());
++  </script>
++  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
++
++
++
++
++
++
++  </body>
++</html>