http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/docs/rmq-deployment/index.html
----------------------------------------------------------------------
diff --cc content/docs/rmq-deployment/index.html
index e240cd1,0000000..985edb3
mode 100644,000000..100644
--- a/content/docs/rmq-deployment/index.html
+++ b/content/docs/rmq-deployment/index.html
@@@ -1,823 -1,0 +1,823 @@@
 +<!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-06-08T17:34:10+08:00">
++  <meta property="article:published_time" content="2017-06-08T18:09:33+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/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</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>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/filter-by-sql92-example/" class="">Filter 
Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/faq/" class="">FAQ</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="">Manage 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>
 +    
 +  </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="June 08, 2017">
 +    <meta itemprop="dateModified" content="April 24, 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>   
     <ul>
 +          <li><a href="#name-server" id="markdown-toc-name-server">Name 
Server</a></li>
 +        </ul>
 +      </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="#replication-sync--async-broker" 
id="markdown-toc-replication-sync--async-broker">Replication: Sync / Async 
Broker</a></li>
 +      <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 introduces production-ready deployment solution. 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, 
and are farmiliar with the core concepts and components of RocketMQ.</p>
 +
 +<h4 id="production-ready-deployment">Production-ready Deployment</h4>
 +<h5 id="name-server">Name Server</h5>
 +<p>To ensure the cluster can still function when one instance crashes, two or 
more name server instances are recommended. As long as there is one name server 
instance alive, the whole cluster remains in service.</p>
 +
 +<p>Name server follows the share-nothing design paradigm. Brokers send 
heartbeat data to all name servers. Producers and consumers can query meta data 
from any 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 with no single point of 
failure, a series of broker sets should be deployed. A 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, recommended configuration is listed 
below:</p>
 +
 +<h5 id="broker-configuration">Broker configuration</h5>
 +
 +<table>
 +  <thead>
 +    <tr>
 +      <th>Property Name</th>
 +      <th style="text-align: center">Default value</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 need the 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:</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 ‘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:</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>To make sure that no successfully published message will be lost, RocketMQ 
provides a Replication mode to gain stronger durability and higher availability 
with two replication ways: Sync &amp; Async.</p>
 +
 +<h5 id="replication-sync--async-broker">Replication: Sync / Async Broker</h5>
 +
 +<p>Like many replication system, sync brokers wait 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-24">April 24, 
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/af2718af/content/docs/roadmap/index.html
----------------------------------------------------------------------
diff --cc content/docs/roadmap/index.html
index c22eb6f,0000000..8972f33
mode 100644,000000..100644
--- a/content/docs/roadmap/index.html
+++ b/content/docs/roadmap/index.html
@@@ -1,694 -1,0 +1,694 @@@
 +<!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-06-08T17:34:10+08:00">
++  <meta property="article:published_time" content="2017-06-08T18:09:33+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/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</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>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/filter-by-sql92-example/" class="">Filter 
Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/faq/" class="">FAQ</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="">Manage 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>
 +    
 +  </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="June 08, 2017">
 +    <meta itemprop="dateModified" content="March 07, 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, which includes the establishment of industry guidelines and 
messaging, streaming specifications to provide a common framework for finance, 
e-commerce, IoT and big-data area. The design principles are the 
cloud-orientedness, simplicity, flexibility, and language independency in 
distributed heterogeneous environments. Conformance to these specifications 
allows the development of a heterogeneous messaging applications across all 
major platforms and operating systems. <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 supports message filtering feature by <code 
class="highlighter-rouge">TAG</code>, but one message can only own one tag, 
which 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 and 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 continuously.</p>
 +
 +<p>A Consistent Hash allocate strategy is valuable for developers who care 
more about stabilization than averaging.</p>
 +
 +<p>So we decided to support CHAS as an 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’d be cool if we can support a new global order messaging mechanism 
without the hot-point 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 frequently used in most business.</p>
 +
 +<p>But users have to implement transaction mechanism by themselves for now, 
so there is a potential need of a database implementation to solve the 
problem.</p>
 +
 +<p>Now we can support distributed transaction messaging to make it convenient 
for the users and help them handle complex business. <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 will impose extra cost if user needs non-repeating 
messages.</p>
 +
 +<p>In most cases, user needs to store the consume records to determine if a 
message is duplicated, and the store stage should guarantee consistency. So we 
need to support a strict and non-redundant message delivery mechanism. <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, but this program needs human intervention to recover from 
abnormal situations.</p>
 +
 +<p>So, we want to support a multi-replication high availability/reliability 
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)/”Internet of Things” 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 based on the investigation of 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-07">March 07, 
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/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/af2718af/content/docs/schedule-example/index.html
----------------------------------------------------------------------
diff --cc content/docs/schedule-example/index.html
index 16aab80,0000000..f619d92
mode 100644,000000..100644
--- a/content/docs/schedule-example/index.html
+++ b/content/docs/schedule-example/index.html
@@@ -1,684 -1,0 +1,684 @@@
 +<!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-06-08T17:34:10+08:00">
++  <meta property="article:published_time" content="2017-06-08T18:09:33+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/motivation/" class="">Why RocketMQ</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/quick-start/" class="">Quick Start</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>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/filter-by-sql92-example/" class="">Filter 
Example</a></li>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <li><a href="/docs/faq/" class="">FAQ</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="">Manage 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>
 +    
 +  </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="June 08, 2017">
 +    <meta itemprop="dateModified" content="April 24, 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-scheduled-message" 
id="markdown-toc-what-is-scheduled-message">What is scheduled message?</a></li>
 +  <li><a href="#application" 
id="markdown-toc-application">Application</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h3 id="what-is-scheduled-message">What is scheduled message?</h3>
 +
 +<p>Scheduled messages differ from normal messages in that they won’t be 
delivered until a provided time later.</p>
 +
 +<h3 id="application">Application</h3>
 +
 +<ol>
 +  <li>
 +    <p>Start consumer to wait for incoming subscribed messages</p>
 +
 +    <div class="language-java highlighter-rouge"><pre 
class="highlight"><code> <span class="kn">import</span> <span 
class="nn">org.apache.rocketmq.client.consumer.DefaultMQPushConsumer</span><span
 class="o">;</span>
 + <span class="kn">import</span> <span 
class="nn">org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext</span><span
 class="o">;</span>
 + <span class="kn">import</span> <span 
class="nn">org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus</span><span
 class="o">;</span>
 + <span class="kn">import</span> <span 
class="nn">org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently</span><span
 class="o">;</span>
 + <span class="kn">import</span> <span 
class="nn">org.apache.rocketmq.common.message.MessageExt</span><span 
class="o">;</span>
 + <span class="kn">import</span> <span class="nn">java.util.List</span><span 
class="o">;</span>
 +    
 + <span class="kd">public</span> <span class="kd">class</span> <span 
class="nc">ScheduledMessageConsumer</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">Exception</span> <span class="o">{</span>
 +         <span class="c1">// Instantiate message consumer</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">"ExampleConsumer"</span><span class="o">);</span>
 +         <span class="c1">// Subscribe topics</span>
 +         <span class="n">consumer</span><span class="o">.</span><span 
class="na">subscribe</span><span class="o">(</span><span 
class="s">"TestTopic"</span><span class="o">,</span> <span 
class="s">"*"</span><span class="o">);</span>
 +         <span class="c1">// Register message listener</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">messages</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="k">for</span> <span class="o">(</span><span 
class="n">MessageExt</span> <span class="n">message</span> <span 
class="o">:</span> <span class="n">messages</span><span class="o">)</span> 
<span class="o">{</span>
 +                     <span class="c1">// Print approximate delay time 
period</span>
 +                     <span class="n">System</span><span 
class="o">.</span><span class="na">out</span><span class="o">.</span><span 
class="na">println</span><span class="o">(</span><span class="s">"Receive 
message[msgId="</span> <span class="o">+</span> <span 
class="n">message</span><span class="o">.</span><span 
class="na">getMsgId</span><span class="o">()</span> <span class="o">+</span> 
<span class="s">"] "</span>
 +                             <span class="o">+</span> <span 
class="o">(</span><span class="n">System</span><span class="o">.</span><span 
class="na">currentTimeMillis</span><span class="o">()</span> <span 
class="o">-</span> <span class="n">message</span><span class="o">.</span><span 
class="na">getStoreTimestamp</span><span class="o">())</span> <span 
class="o">+</span> <span class="s">"ms later"</span><span class="o">);</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="c1">// Launch consumer</span>
 +         <span class="n">consumer</span><span class="o">.</span><span 
class="na">start</span><span class="o">();</span>
 +     <span class="o">}</span>
 + <span class="o">}</span>
 +</code></pre>
 +    </div>
 +  </li>
 +  <li>
 +    <p>Send scheduled messages</p>
 +
 +    <div class="language-java highlighter-rouge"><pre 
class="highlight"><code> <span class="kn">import</span> <span 
class="nn">org.apache.rocketmq.client.producer.DefaultMQProducer</span><span 
class="o">;</span>
 + <span class="kn">import</span> <span 
class="nn">org.apache.rocketmq.common.message.Message</span><span 
class="o">;</span>
 +    
 + <span class="kd">public</span> <span class="kd">class</span> <span 
class="nc">ScheduledMessageProducer</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">Exception</span> <span class="o">{</span>
 +         <span class="c1">// Instantiate a producer to send scheduled 
messages</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">"ExampleProducerGroup"</span><span class="o">);</span>
 +         <span class="c1">// Launch producer</span>
 +         <span class="n">producer</span><span class="o">.</span><span 
class="na">start</span><span class="o">();</span>
 +         <span class="kt">int</span> <span 
class="n">totalMessagesToSend</span> <span class="o">=</span> <span 
class="mi">100</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="n">totalMessagesToSend</span><span 
class="o">;</span> <span class="n">i</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="k">new</span> <span 
class="n">Message</span><span class="o">(</span><span 
class="s">"TestTopic"</span><span class="o">,</span> <span 
class="o">(</span><span class="s">"Hello scheduled message "</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="c1">// This message will be delivered to consumer 
10 seconds later.</span>
 +             <span class="n">message</span><span class="o">.</span><span 
class="na">setDelayTimeLevel</span><span class="o">(</span><span 
class="mi">3</span><span class="o">);</span>
 +             <span class="c1">// Send the message</span>
 +             <span class="n">producer</span><span class="o">.</span><span 
class="na">send</span><span class="o">(</span><span 
class="n">message</span><span class="o">);</span>
 +         <span class="o">}</span>
 +    
 +         <span class="c1">// Shutdown producer after 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>
 +  </li>
 +  <li>
 +    <p>Verification</p>
 +
 +    <p>You should see messages are consumed about 10 seconds later than their 
storing time.</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="2017-04-24">April 24, 
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>

Reply via email to