You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by li...@apache.org on 2017/06/08 10:09:56 UTC

[01/15] incubator-rocketmq-site git commit: Add issues to release notes

Repository: incubator-rocketmq-site
Updated Branches:
  refs/heads/asf-site 5e336bc58 -> af2718af8


Add issues to release notes


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/06249136
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/tree/06249136
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/diff/06249136

Branch: refs/heads/asf-site
Commit: 06249136291d6aef54ddea94e01a3f76ece68af4
Parents: fbef463
Author: dongeforever <do...@apache.org>
Authored: Thu Jun 8 16:55:21 2017 +0800
Committer: dongeforever <do...@apache.org>
Committed: Thu Jun 8 16:55:21 2017 +0800

----------------------------------------------------------------------
 _posts/2017-06-02-release-notes-4.1.0-incubating.md | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/06249136/_posts/2017-06-02-release-notes-4.1.0-incubating.md
----------------------------------------------------------------------
diff --git a/_posts/2017-06-02-release-notes-4.1.0-incubating.md b/_posts/2017-06-02-release-notes-4.1.0-incubating.md
index 5cdc2db..73a3e77 100644
--- a/_posts/2017-06-02-release-notes-4.1.0-incubating.md
+++ b/_posts/2017-06-02-release-notes-4.1.0-incubating.md
@@ -33,6 +33,10 @@ Release Notes - Apache RocketMQ - Version 4.1.0-incubating
 *   [[ROCKETMQ-176](https://issues.apache.org/jira/browse/ROCKETMQ-176)] - Improvement the Maven Central Badge in readme
 *   [[ROCKETMQ-187](https://issues.apache.org/jira/browse/ROCKETMQ-187)] - Measure the code coverage for Integration Tests
 *   [[ROCKETMQ-148](https://issues.apache.org/jira/browse/ROCKETMQ-148)] - Migrate all relevant docs from the old Github project's wiki to the ASF site
+*   [[ROCKETMQ-218](https://issues.apache.org/jira/browse/ROCKETMQ-218)] - Add IT test for Filter By SQL 92
+*   [[ROCKETMQ-219](https://issues.apache.org/jira/browse/ROCKETMQ-219)] - Add Batch Example
+*   [[ROCKETMQ-220](https://issues.apache.org/jira/browse/ROCKETMQ-220)] - README.md update, remove some github links
+
 
 ## Bug
 
@@ -57,6 +61,8 @@ Release Notes - Apache RocketMQ - Version 4.1.0-incubating
 *   [[ROCKETMQ-199](https://issues.apache.org/jira/browse/ROCKETMQ-199)] - consumers can not receive stock information.
 *   [[ROCKETMQ-200](https://issues.apache.org/jira/browse/ROCKETMQ-200)] - Cluster name is always missing when fetch ClusterInfo from name server
 *   [[ROCKETMQ-206](https://issues.apache.org/jira/browse/ROCKETMQ-206)] - Load JSON config file error if non-1byte character exists
+*   [[ROCKETMQ-208](https://issues.apache.org/jira/browse/ROCKETMQ-208)] - incompatibility problem found in enviroment of JDK 1.7 when running client
+
 
 
 


[03/15] incubator-rocketmq-site git commit: Revert changes to CSS

Posted by li...@apache.org.
Revert changes to CSS


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/8be38596
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/tree/8be38596
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/diff/8be38596

Branch: refs/heads/asf-site
Commit: 8be38596bf6945a3aaad21838a8bffc68bf559f1
Parents: 4d0b814
Author: Li Zhanhui <li...@gmail.com>
Authored: Thu Jun 8 18:04:13 2017 +0800
Committer: Li Zhanhui <li...@gmail.com>
Committed: Thu Jun 8 18:04:13 2017 +0800

----------------------------------------------------------------------
 _sass/_archive.scss | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/8be38596/_sass/_archive.scss
----------------------------------------------------------------------
diff --git a/_sass/_archive.scss b/_sass/_archive.scss
index b741bc5..aeec132 100644
--- a/_sass/_archive.scss
+++ b/_sass/_archive.scss
@@ -63,7 +63,7 @@
   border-radius: $border-radius;
   overflow: hidden;
   img {
-    max-width: 60%;
+    max-width: 100%;
   }
 }
 
@@ -158,8 +158,6 @@
 .feature__item {
   margin-bottom: 2em;
   font-size: 1.25rem;
-  height: 80px;
-  line-height: 80px;
 
   @include breakpoint($small) {
     margin-bottom: 0;


[04/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/sitemap.xml
----------------------------------------------------------------------
diff --cc content/sitemap.xml
index c55cdef,0000000..9e3f176
mode 100644,000000..100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@@ -1,270 -1,0 +1,270 @@@
 +<?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>/about/team/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/about/contact/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/about/rewards/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/quick-start/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/motivation/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/core-concept/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/cli-admin-tool/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/cluster-deployment/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/pull-request/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/code-guidelines/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/documentation/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/faq/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/release-manual</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/dowloading/releases/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/roadmap/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/batch-example/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/broadcast-example/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/rmq-deployment/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/order-example/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/rmq-arc/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/schedule-example/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/simple-example/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/filter-by-sql92-example/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/best-practice-broker/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/best-practice-consumer/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/create-pull-request/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/best-practice-namesvr/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/docs/best-practice-producer/</loc>
- <lastmod>2017-06-08T17:34:10+08:00</lastmod>
++<lastmod>2017-06-08T18:09:33+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>/maven/mastering-component-compatible-dependency/</loc>
 +<lastmod>2016-12-23T00: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>/release_notes/release-notes-4.0.0-incubating/</loc>
 +<lastmod>2017-01-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>/the-correct-posture-of-submitting-pull-request/</loc>
 +<lastmod>2017-03-24T00:00:00+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/activity/launch-rocketmq-code-marathon/</loc>
 +<lastmod>2017-03-31T00:00:00+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/rocketmq/filter-messages-by-sql92-in-rocketmq/</loc>
 +<lastmod>2017-04-26T00:00:00+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/release-notes-4.1.0-incubating/</loc>
 +<lastmod>2017-06-02T00: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>/docs/filter-by-sql92-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/create-pull-request/</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>/assets/attachment/launch-rocketmq-code-marathon.pdf</loc>
 +<lastmod>2017-06-07T11:10:53+08:00</lastmod>
 +</url>
 +<url>
 +<loc>/assets/attachment/launch-second-rocketmq-code-marathon.pdf</loc>
 +<lastmod>2017-06-07T11:10:53+08:00</lastmod>
 +</url>
 +</urlset>


[13/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/docs/batch-example/index.html
----------------------------------------------------------------------
diff --cc content/docs/batch-example/index.html
index 3f4408d,0000000..ae99855
mode 100644,000000..100644
--- a/content/docs/batch-example/index.html
+++ b/content/docs/batch-example/index.html
@@@ -1,692 -1,0 +1,692 @@@
 +<!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-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="active">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="Batch Example">
 +    <meta itemprop="description" content="How to use batch 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">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="#why-batch" id="markdown-toc-why-batch">Why 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="why-batch">Why batch?</h4>
 +<p>Sending messages in batch improves performance of delivering small messages.</p>
 +
 +<h4 id="usage-constraints">Usage constraints</h4>
 +<p>Messages of the same batch should have: same topic, same waitStoreMsgOK and no schedule support.</p>
 +
 +<p>Besides, the total size of the messages in one batch should be no more than 1MiB.</p>
 +
 +<h4 id="how-to-use-batch">How to use batch</h4>
 +<p>If you just send messages of no more than 1MiB at a time, 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 (1MiB).</p>
 +
 +<p>At this time, you’d 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-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=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>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/docs/best-practice-broker/index.html
----------------------------------------------------------------------
diff --cc content/docs/best-practice-broker/index.html
index 4a7380c,0000000..2ae7faa
mode 100644,000000..100644
--- a/content/docs/best-practice-broker/index.html
+++ b/content/docs/best-practice-broker/index.html
@@@ -1,621 -1,0 +1,621 @@@
 +<!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-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="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>
 +    
 +  </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="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 24, 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-24">December 24, 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/filter-by-sql92-example/" class="pagination--pager" title="Filter 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/af2718af/content/docs/best-practice-consumer/index.html
----------------------------------------------------------------------
diff --cc content/docs/best-practice-consumer/index.html
index 00645d2,0000000..2ad1fe5
mode 100644,000000..100644
--- a/content/docs/best-practice-consumer/index.html
+++ b/content/docs/best-practice-consumer/index.html
@@@ -1,646 -1,0 +1,646 @@@
 +<!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-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="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>
 +    
 +  </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="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 24, 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, and each of them will have their own consuming offsets.
 +Please 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 in order. This will cause a performance loss, but it is useful when you care about the order of the messages.
 +It is not recommended to throw exceptions, 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 good performance.
 +It is not recommended to throw exceptions, 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, because you care about the order, you can not jump over the message, but you can return SUSPEND_CURRENT_QUEUE_A_MOMENT to tell the consumer to wait for a moment.</p>
 +<h3 id="blocking">Blocking</h3>
 +<p>It is not recommend to block the Listener, because it will block the thread pool, and eventually may stop the consuming process.</p>
 +<h2 id="thread-number">Thread Number</h2>
 +<p>The consumer use a ThreadPoolExecutor to process consuming internally, so you can change it by setting setConsumeThreadMin or setConsumeThreadMax.</p>
 +<h2 id="consumefromwhere">ConsumeFromWhere</h2>
 +<p>When a new Consumer Group is established, it will need to decide whether it needs to consume the historical messages which had already existed in the Broker.
 +CONSUME_FROM_LAST_OFFSET will ignore the historical messages, and consume anything produced after that.
 +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 duplication. 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-24">December 24, 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/create-pull-request/" class="pagination--pager" title="How to create 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/af2718af/content/docs/best-practice-namesvr/index.html
----------------------------------------------------------------------
diff --cc content/docs/best-practice-namesvr/index.html
index 9643b48,0000000..e178c42
mode 100644,000000..100644
--- a/content/docs/best-practice-namesvr/index.html
+++ b/content/docs/best-practice-namesvr/index.html
@@@ -1,682 -1,0 +1,682 @@@
 +<!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="In Apache RocketMQ, name servers are designed to coordinate each component of the distributed systemand the coordination is mainly achieved through managing topic routing 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="In Apache RocketMQ, name servers are designed to coordinate each component of the distributed systemand the coordination is mainly achieved through managing topic routing information.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Best Practice For NameServer">
 +  <meta name="twitter:description" content="In Apache RocketMQ, name servers are designed to coordinate each component of the distributed systemand the coordination is mainly achieved through managing topic routing 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-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="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>
 +    
 +  </ul>
 +</nav>
 +    
 +  
 +  </div>
 +
 +
 +  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
 +    <meta itemprop="headline" content="Best Practice For NameServer">
 +    <meta itemprop="description" content="In Apache RocketMQ, name servers are designed to coordinate each component of the distributed systemand the coordination is mainly achieved through managing topic routing information.">
 +    <meta itemprop="datePublished" content="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 24, 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>In Apache RocketMQ, name servers are designed to coordinate each component of the distributed system
 +and the coordination is mainly achieved through managing topic routing 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="#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>
 +
 +<p>Management consists of two parts:</p>
 +<ul>
 +  <li>Brokers periodically renew meta data kept in every name server.</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 brokers, we can 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 can 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 can also specify this way:</p>
 +
 +<div class="language-bash highlighter-rouge"><pre class="highlight"><code>sh mqadmin <span class="nb">command</span>-name -n name-server-ip1:port;name-server-ip2:port -X OTHER-OPTION
 +</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 you have integrated admin tool into your own dashboard, you can:</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>By 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> using this Java option: <code class="highlighter-rouge">rocketmq.namesrv.domain</code>,
 +You may also override <code class="highlighter-rouge">nsaddr</code> part using 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
 + – you can dynamically add or remove name server nodes without necessity of rebooting your brokers and clients 
 + according to your name servers’ system load.</p>
 +
 +<h2 id="priority">Priority</h2>
 +
 +<p>Methods introduced first take precedence over the latter ones: <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-24">December 24, 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/create-pull-request/" class="pagination--pager" title="How to create Pull Request
 +">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>


[10/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/docs/faq/index.html
----------------------------------------------------------------------
diff --cc content/docs/faq/index.html
index c9de84f,0000000..9d56887
mode 100644,000000..100644
--- a/content/docs/faq/index.html
+++ b/content/docs/faq/index.html
@@@ -1,703 -1,0 +1,703 @@@
 +<!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.General1. Why did we create rocketmq project instead of selecting other products?Please refer to Why RocketMQ">
 +
 +
 +
 +
 +<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.General1. Why did we create rocketmq project instead of selecting other products?Please refer to Why RocketMQ">
 +
 +
 +
 +  <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.General1. Why did we create rocketmq project instead of selecting other products?Please refer to Why 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="active">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="Frequently Asked Questions">
 +    <meta itemprop="description" content="The following questions are frequently asked with regard to the RocketMQ project in general.General1. Why did we create rocketmq project instead of selecting other products?Please refer to Why RocketMQ">
 +    <meta itemprop="datePublished" content="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 27, 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.</p>
 +
 +<h2 id="general">General</h2>
 +<h3 id="1-why-did-we-create-rocketmq-project-instead-of-selecting-other-products">1. Why did we create rocketmq project instead of selecting other products?</h3>
 +<p>Please refer to <a href="/docs/motivation/">Why RocketMQ</a></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 independently.</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 consuming messages from the first message saved in the server.</li>
 +  <li>If the topic sends a message three days ago, the consumer starts to consume messages from the latest message in the server, in other words, starting from the tail of message queue.</li>
 +  <li>If such consumer is rebooted, then it starts to consume messages 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>
 +
 +<ol>
 +  <li>
 +    <p>Cluster consumption pattern
 +The consumer business logic code returns Action.ReconsumerLater, NULL, or throws an exception, if a message failed to be consumed, it will retry for up to 16 times, after that, the message would be descarded.</p>
 +  </li>
 +  <li>
 +    <p>Broadcast consumption pattern
 +The broadcaset consumption still ensures that a message is consumered at least once, but no resend option is provided.</p>
 +  </li>
 +</ol>
 +
 +<h3 id="3-how-to-query-the-failed-message-if-there-is-a-consumption-failure">3. How to query the failed message if there is a consumption failure?</h3>
 +
 +<ol>
 +  <li>Using topic query by time, you can query messages within a period of time.</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-are-messages-delivered-exactly-once">4. Are messages delivered exactly once?</h3>
 +
 +<p>RocketMQ ensures that all messages are delivered at least once. In most cases, the messages are not repeated.</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 register it to the same list of name servers.</li>
 +  <li>By default, only internal system topics and consumer groups are created automatically. If you would like to have your business topic and consumer groups on the new node, please replicate them from the existing broker. Admin tool and command lines are provided to handle this.</li>
 +</ol>
 +
 +<h2 id="configuration-related">Configuration related</h2>
 +<p>The following answers are all default values and can be modified by configuration.</p>
 +<h3 id="1-how-long-are-the-messages-saved-on-the-server">1. How long are the messages saved on the server?</h3>
 +
 +<p>Stored messages are will be 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-size-limit-for-message-body">2. What is the size limit for message Body?</h3>
 +<p>Generally 256KB.</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 is as follows:</p>
 +
 +<div class="highlighter-rouge"><pre class="highlight"><code>consumer.setConsumeThreadMin(20);
 +consumer.setConsumeThreadMax(20);
 +</code></pre>
 +</div>
 +
 +<h2 id="errors">Errors</h2>
 +<h3 id="1-if-you-start-a-producer-or-consumer-failed-and-the-error-message-is-producer-group-or-consumer-repeat">1. If you start a producer or consumer failed and the error message is producer group or consumer repeat?</h3>
 +<p>Reason:Using the same Producer /Consumer Group to launch multiple instances of Producer/Consumer in the same JVM may cause the client fail to start.</p>
 +
 +<p>Solution: Make sure that a JVM corresponding to one Producer /Consumer Group starts only with one Producer/Consumer instance.</p>
 +
 +<h3 id="2-if-consumer-failed-to-start-loading-json-file-in-broadcast-mode">2. If consumer failed to start loading json file in broadcast mode?</h3>
 +<p>Reason: Fastjson version is too low to allow the broadcast consumer to load local offsets.json, causing the consumer boot failure. Damaged fastjson file can also cause the same problem.</p>
 +
 +<p>Solution: Fastjson version has to be upgraded to rocketmq client dependent version to ensure that the local offsets.json can be loaded. By default offsets.json file is in /home/{user}/.rocketmq_offsets. Or check the integrity of fastjson.</p>
 +
 +<h3 id="3-what-is-the-impact-of-a-broker-crash">3. What is the impact of a broker crash?</h3>
 +
 +<ol>
 +  <li>Master crashes</li>
 +</ol>
 +
 +<p>Messages can no longer be sent to this broker set, but if you have another broker set available, messages can still be sent given the topic is present. Messages can still be consumed from slaves.</p>
 +
 +<ol>
 +  <li>Some slave crash</li>
 +</ol>
 +
 +<p>As long as there is another working slave, there will be no impact on sending messages. There will also be no impact on consuming messages except when the consumer group is set to consume from this slave preferably. By default, comsumer group consumes from master.</p>
 +
 +<ol>
 +  <li>All slaves crash</li>
 +</ol>
 +
 +<p>There will be no impact on sending messages to master, but, if the master is SYNC_MASTER, producer will get a SLAVE_NOT_AVAILABLE indicating that the message is not sent to any slaves. There will also be no impact on consuming messages except that if the consumer group is set to consume from slave preferably. By default, comsumer group consumes from master.</p>
 +
 +<h3 id="4-producer-complains-no-topic-route-info-how-to-diagnose">4. Producer complains “No Topic Route Info”, how to diagnose?</h3>
 +<p>This happens when you are trying to send messages to a topic whose routing info is not available to the producer.</p>
 +
 +<ol>
 +  <li>Make sure that the producer can connect to a name server and is capable of fetching routing meta info from it.</li>
 +  <li>Make sure that name servers do contain routing meta info of the topic. You may query the routing meta info from name server through topicRoute using admin tools or web console.</li>
 +  <li>Make sure that your brokers are sending heartbeats to the same list of name servers your producer is connecting to.</li>
 +  <li>Make sure that the topic’s permssion is 6(rw-), or at least 2(-w-).</li>
 +</ol>
 +
 +<p>If you can’t find this topic, create it on a broker via admin tools command updateTopic or web console.</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-27">December 27, 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/af2718af/content/docs/filter-by-sql92-example/index.html
----------------------------------------------------------------------
diff --cc content/docs/filter-by-sql92-example/index.html
index e607c7e,0000000..49e5260
mode 100644,000000..100644
--- a/content/docs/filter-by-sql92-example/index.html
+++ b/content/docs/filter-by-sql92-example/index.html
@@@ -1,703 -1,0 +1,703 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Filter Example  - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="How to filter messages by SQL92 in Apache RocketMQ.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="Filter Example">
 +
 +
 +
 +
 +  <meta property="og:description" content="How to filter messages by SQL92 in Apache RocketMQ.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Filter Example">
 +  <meta name="twitter:description" content="How to filter messages by SQL92 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-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="active">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="Filter Example">
 +    <meta itemprop="description" content="How to filter messages by SQL92 in Apache RocketMQ.">
 +    <meta itemprop="datePublished" content="June 08, 2017">
 +    <meta itemprop="dateModified" content="April 26, 2017">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Filter Example
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>In most cases, tag is a simple and useful design to select message you want. For example:</p>
 +
 +<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">"CID_EXAMPLE"</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">"TOPIC"</span><span class="o">,</span> <span class="s">"TAGA || TAGB || TAGC"</span><span class="o">);</span>
 +</code></pre>
 +</div>
 +
 +<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="#principle" id="markdown-toc-principle">Principle</a></li>
 +  <li><a href="#grammars" id="markdown-toc-grammars">Grammars</a></li>
 +  <li><a href="#usage-constraints" id="markdown-toc-usage-constraints">Usage constraints</a></li>
 +  <li><a href="#producer-example" id="markdown-toc-producer-example">Producer example</a></li>
 +  <li><a href="#consumer-example" id="markdown-toc-consumer-example">Consumer example</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<p>The consumer will recieve messages that contains TAGA or TAGB or TAGC. But the limitation is that one message only can have one tag, and this may not work for sophisticated scenarios. In this case, you can use SQL expression to filter out messages.</p>
 +
 +<h3 id="principle">Principle</h3>
 +
 +<p>SQL feature could do some calculation through the properties you put in when sending messages. Under the grammars defined by RocketMQ, you can implement some interesting logic. Here is an example:</p>
 +
 +<pre>
 +------------
 +| message  |
 +|----------|  a &gt; 5 AND b = 'abc'
 +| a = 10   |  --------------------&gt; Gotten
 +| b = 'abc'|
 +| c = true |
 +------------
 +------------
 +| message  |
 +|----------|   a &gt; 5 AND b = 'abc'
 +| a = 1    |  --------------------&gt; Missed
 +| b = 'abc'|
 +| c = true |
 +------------
 +</pre>
 +
 +<h3 id="grammars">Grammars</h3>
 +
 +<p>RocketMQ only defines some basic grammars to support this feature. You could also extend it easily.</p>
 +
 +<ol>
 +  <li>Numeric comparison, like <code class="highlighter-rouge">&gt;</code>, <code class="highlighter-rouge">&gt;=</code>, <code class="highlighter-rouge">&lt;</code>, <code class="highlighter-rouge">&lt;=</code>, <code class="highlighter-rouge">BETWEEN</code>, <code class="highlighter-rouge">=</code>;</li>
 +  <li>Character comparison, like <code class="highlighter-rouge">=</code>, <code class="highlighter-rouge">&lt;&gt;</code>, <code class="highlighter-rouge">IN</code>;</li>
 +  <li><code class="highlighter-rouge">IS NULL</code> or <code class="highlighter-rouge">IS NOT NULL</code>;</li>
 +  <li>Logical <code class="highlighter-rouge">AND</code>, <code class="highlighter-rouge">OR</code>, <code class="highlighter-rouge">NOT</code>;</li>
 +</ol>
 +
 +<p>Constant types are:</p>
 +
 +<ol>
 +  <li>Numeric, like 123, 3.1415;</li>
 +  <li>Character, like ‘abc’, must be made with single quotes;</li>
 +  <li><code class="highlighter-rouge">NULL</code>, special constant;</li>
 +  <li>Boolean, <code class="highlighter-rouge">TRUE</code> or <code class="highlighter-rouge">FALSE</code>;</li>
 +</ol>
 +
 +<h3 id="usage-constraints">Usage constraints</h3>
 +
 +<p>Only push consumer could select messages by SQL92. The interface is:</p>
 +
 +<p><code class="highlighter-rouge">public void subscribe(final String topic, final MessageSelector messageSelector)</code></p>
 +
 +<h3 id="producer-example">Producer example</h3>
 +
 +<p>You can put properties in message through method <code class="highlighter-rouge">putUserProperty</code> when sending.</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">start</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="n">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="o">);</span>
 +<span class="c1">// Set some properties.</span>
 +<span class="n">msg</span><span class="o">.</span><span class="na">putUserProperty</span><span class="o">(</span><span class="s">"a"</span><span class="o">,</span> <span class="n">String</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="n">i</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">producer</span><span class="o">.</span><span class="na">shutdown</span><span class="o">();</span>
 +</code></pre>
 +</div>
 +
 +<h3 id="consumer-example">Consumer example</h3>
 +
 +<p>Use <code class="highlighter-rouge">MessageSelector.bySql</code> to select messages through SQL92 when consuming.</p>
 +
 +<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_4"</span><span class="o">);</span>
 +
 +<span class="c1">// only subsribe messages have property a, also a &gt;=0 and a &lt;= 3</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="n">MessageSelector</span><span class="o">.</span><span class="na">bySql</span><span class="o">(</span><span class="s">"a between 0 and 3"</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="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>
 +</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-26">April 26, 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=Filter Example  /docs/filter-by-sql92-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/filter-by-sql92-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/filter-by-sql92-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/filter-by-sql92-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/simple-example/" class="pagination--pager" title="Simple Message 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/af2718af/content/docs/motivation/index.html
----------------------------------------------------------------------
diff --cc content/docs/motivation/index.html
index daec8ae,0000000..afd58ee
mode 100644,000000..100644
--- a/content/docs/motivation/index.html
+++ b/content/docs/motivation/index.html
@@@ -1,693 -1,0 +1,693 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>Motivation - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="At early stages, we constructed our distributed messaging middleware based on ActiveMQ 5.x(prior to 5.3). Our multinational business uses it for asynchronous communication, search, social network activity stream, data pipeline,even in its trade processes. As our trade business throughput rises, pressure originating from our messaging clusteralso becomes urgent.">
 +
 +
 +
 +
 +<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="At early stages, we constructed our distributed messaging middleware based on ActiveMQ 5.x(prior to 5.3). Our multinational business uses it for asynchronous communication, search, social network activity stream, data pipeline,even in its trade processes. As our trade business throughput rises, pressure originating from our messaging clusteralso becomes urgent.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="Motivation">
 +  <meta name="twitter:description" content="At early stages, we constructed our distributed messaging middleware based on ActiveMQ 5.x(prior to 5.3). Our multinational business uses it for asynchronous communication, search, social network activity stream, data pipeline,even in its trade processes. As our trade business throughput rises, pressure originating from our messaging clusteralso becomes urgent.">
 +  <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="active">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="Motivation">
 +    <meta itemprop="description" content="At early stages, we constructed our distributed messaging middleware based on ActiveMQ 5.x(prior to 5.3). Our multinational business uses it for asynchronous communication, search, social network activity stream, data pipeline,even in its trade processes. As our trade business throughput rises, pressure originating from our messaging clusteralso becomes urgent.">
 +    <meta itemprop="datePublished" content="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 16, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">Motivation
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>At early stages, we constructed our distributed messaging middleware based on ActiveMQ 5.x(prior to 5.3). Our 
 +multinational business uses it for asynchronous communication, search, social network activity stream, data pipeline,
 +even in its trade processes. As our trade business throughput rises, pressure originating from our messaging cluster
 +also becomes urgent.</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 research, with increased queues and virtual topics in use, ActiveMQ IO module reaches a bottleneck. We 
 +tried our best to solve this problem through throttling, circuit breaker or degradation, but it did not work well. So 
 +we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our 
 +requirements especially in terms of 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 invent a new messaging engine to handle a broader set of use cases, ranging from 
 +traditional pub/sub scenarios to high volume real-time zero-loss tolerance transaction system. We believe this solution
 +can be beneficial, so we would like to open source it to the community. Today, more than 100 companies are using the 
 +open source version of RocketMQ in their business. We also published a commercial distribution based on RocketMQ, a PaaS
 + product called the <a href="https://intl.aliyun.com/">Alibaba Cloud Platform</a>.</p>
 +
 +<p>The following table demonstrates the comparison between RocketMQ, ActiveMQ and Kafka (Apache’s 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,such 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-16">December 16, 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>


[05/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/feed.xml
----------------------------------------------------------------------
diff --cc content/feed.xml
index e0d0732,0000000..da361bc
mode 100644,000000..100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@@ -1,935 -1,0 +1,935 @@@
- <?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.4.3">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2017-06-08T17:34:10+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, &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><entry><title type="html">Release Notes - Apache RocketMQ - Version 4.1.0-incubating</title><link href="/release-notes-4.1.0-incubating/" rel="alternate" type="text/html" title="Release Notes - Apache RocketMQ - Version 4.1.0-incubating" /><published
 >2017-06-02T00:00:00+08:00</published><updated>2017-06-02T00:00:00+08:00</updated><id>/release-notes-4.1.0-incubating</id><content type="html" xml:base="/release-notes-4.1.0-incubating/">&lt;p&gt;Release Notes - Apache RocketMQ - Version 4.1.0-incubating&lt;/p&gt;
++<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.4.3">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2017-06-08T18:09:33+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, &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><entry><title type="html">Release Notes - Apache RocketMQ - Version 4.1.0-incubating</title><link href="/release-notes-4.1.0-incubating/" rel="alternate" type="text/html" title="Release Notes - Apache RocketMQ - Version 4.1.0-incubating" /><published
 >2017-06-02T00:00:00+08:00</published><updated>2017-06-02T00:00:00+08:00</updated><id>/release-notes-4.1.0-incubating</id><content type="html" xml:base="/release-notes-4.1.0-incubating/">&lt;p&gt;Release Notes - Apache RocketMQ - Version 4.1.0-incubating&lt;/p&gt;
 +
 +&lt;h2 id=&quot;new-feature&quot;&gt;New Feature&lt;/h2&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-80&quot;&gt;ROCKETMQ-80&lt;/a&gt;] - Add batch feature&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-121&quot;&gt;ROCKETMQ-121&lt;/a&gt;] - Support message filtering based on SQL92&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-194&quot;&gt;ROCKETMQ-194&lt;/a&gt;] - log appender using rocketmq&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-186&quot;&gt;ROCKETMQ-186&lt;/a&gt;] - Implement the OpenMessaging specification 0.1.0-alpha version&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;h2 id=&quot;improvement&quot;&gt;Improvement&lt;/h2&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-67&quot;&gt;ROCKETMQ-67&lt;/a&gt;] - Consistent Hash allocate strategy support&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-99&quot;&gt;ROCKETMQ-99&lt;/a&gt;] - Add scripts for Windows platform&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-36&quot;&gt;ROCKETMQ-36&lt;/a&gt;] - Improve broker’s GC logs storing&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-39&quot;&gt;ROCKETMQ-39&lt;/a&gt;] - Duplicated codes in both filtersrv and namesrv modules&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-86&quot;&gt;ROCKETMQ-86&lt;/a&gt;] - Polish the release file format&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-88&quot;&gt;ROCKETMQ-88&lt;/a&gt;] - Polish the developer list in pom.xml&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-90&quot;&gt;ROCKETMQ-90&lt;/a&gt;] - Include client IP per message queue of consumer progress command output&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-114&quot;&gt;ROCKETMQ-114&lt;/a&gt;] - Add javadoc to codebase&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-138&quot;&gt;ROCKETMQ-138&lt;/a&gt;] - Add AuthenticationException class to remove hard coded Aliyun authentication class&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-139&quot;&gt;ROCKETMQ-139&lt;/a&gt;] - Degrade the client related modules’ JDK version to 1.6&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-144&quot;&gt;ROCKETMQ-144&lt;/a&gt;] - Aggregate distribution specific files to a new module&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-154&quot;&gt;ROCKETMQ-154&lt;/a&gt;] - Add a newline after help info&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-160&quot;&gt;ROCKETMQ-160&lt;/a&gt;] - SendHeartBeart log may not be triggered in the same expected period&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-161&quot;&gt;ROCKETMQ-161&lt;/a&gt;] - Update runbroker.sh and runserver.sh to support user defined jvm memory flag&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-168&quot;&gt;ROCKETMQ-168&lt;/a&gt;] - Duplicated calls of life cycle in Maven.&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-172&quot;&gt;ROCKETMQ-172&lt;/a&gt;] - log improvement for rocketmq client&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-176&quot;&gt;ROCKETMQ-176&lt;/a&gt;] - Improvement the Maven Central Badge in readme&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-187&quot;&gt;ROCKETMQ-187&lt;/a&gt;] - Measure the code coverage for Integration Tests&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-148&quot;&gt;ROCKETMQ-148&lt;/a&gt;] - Migrate all relevant docs from the old Github project’s wiki to the ASF site&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-218&quot;&gt;ROCKETMQ-218&lt;/a&gt;] - Add IT test for Filter By SQL 92&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-219&quot;&gt;ROCKETMQ-219&lt;/a&gt;] - Add Batch Example&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-220&quot;&gt;ROCKETMQ-220&lt;/a&gt;] - README.md update, remove some github links&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;h2 id=&quot;bug&quot;&gt;Bug&lt;/h2&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-77&quot;&gt;ROCKETMQ-77&lt;/a&gt;] - [TEST] org.apache.rocketmq.tools.* have NPEs&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-89&quot;&gt;ROCKETMQ-89&lt;/a&gt;] - WS_DOMAIN_NAME, SUBGROUP default values overrides custom values passed by java options&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-95&quot;&gt;ROCKETMQ-95&lt;/a&gt;] - The config files of client log have been damaged&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-98&quot;&gt;ROCKETMQ-98&lt;/a&gt;] - Risk of unable to release putMessage Lock forever&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-101&quot;&gt;ROCKETMQ-101&lt;/a&gt;] - Possible NullPointerException when retry in send Async way&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-107&quot;&gt;ROCKETMQ-107&lt;/a&gt;] - Access ServiceState is not thread safe when start() or shutdown()&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-119&quot;&gt;ROCKETMQ-119&lt;/a&gt;] - Shutdown PullMessageService properly&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-140&quot;&gt;ROCKETMQ-140&lt;/a&gt;] - Register higher version broker against old name servers&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-143&quot;&gt;ROCKETMQ-143&lt;/a&gt;] - Update fastjson from 1.2.12 to 1.2.29&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-153&quot;&gt;ROCKETMQ-153&lt;/a&gt;] - Fetch name server address dynamically&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-155&quot;&gt;ROCKETMQ-155&lt;/a&gt;] - Fix typo in ClientConfig&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-165&quot;&gt;ROCKETMQ-165&lt;/a&gt;] - Maximum pull batch size hard-coded restricted&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-175&quot;&gt;ROCKETMQ-175&lt;/a&gt;] - Consumer may miss messages because of inconsistent subscription&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-178&quot;&gt;ROCKETMQ-178&lt;/a&gt;] - Broker -m -p options are broken&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-179&quot;&gt;ROCKETMQ-179&lt;/a&gt;] - Fix errors of test cases&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-188&quot;&gt;ROCKETMQ-188&lt;/a&gt;] - RemotingExecption is not consistent between invoke async and invoke oneway&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-189&quot;&gt;ROCKETMQ-189&lt;/a&gt;] - Misleading tip on consumeTimestamp and wrong consumeTimestamp exception message&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-191&quot;&gt;ROCKETMQ-191&lt;/a&gt;] - Fix incorret socket option&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-199&quot;&gt;ROCKETMQ-199&lt;/a&gt;] - consumers can not receive stock information.&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-200&quot;&gt;ROCKETMQ-200&lt;/a&gt;] - Cluster name is always missing when fetch ClusterInfo from name server&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-206&quot;&gt;ROCKETMQ-206&lt;/a&gt;] - Load JSON config file error if non-1byte character exists&lt;/li&gt;
 +  &lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-208&quot;&gt;ROCKETMQ-208&lt;/a&gt;] - incompatibility problem found in enviroment of JDK 1.7 when running client&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><summary type="html">Release Notes - Apache RocketMQ - Version 4.1.0-incubating</summary></entry><entry><title type="html">Filter Messages By SQL92 In RocketMQ</title><link href="/rocketmq/filter-messages-by-sql92-in-rocketmq/" rel="alternate" type="text/html" title="Filter Messages By SQL92 In RocketMQ" /><published>2017-04-26T00:00:00+08:00</published><updated>2017-04-26T00:00:00+08:00</updated><id>/rocketmq/filter-messages-by-sql92-in-rocketmq</id><content type="html" xml:base="/rocketmq/filter-messages-by-sql92-in-rocketmq/">&lt;p&gt;So far, RocketMQ only support message filtering feature by &lt;code class=&quot;highlighter-rou
 ge&quot;&gt;TAG&lt;/code&gt;, but one message only can own one tag, this is too limited to meet complex business requirements.&lt;/p&gt;
 +
 +&lt;p&gt;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.&lt;/p&gt;
 +
 +&lt;h3 id=&quot;why-subset-of-sql92&quot;&gt;Why Subset Of SQL92&lt;/h3&gt;
 +
 +&lt;p&gt;Let RocketMQ has the ability of message filtering is the purpose of this issue, and as we know, SQL92 is used widely and most persons are familiar with it.It’s resonable to select it as RocketMQ’s grammar.&lt;/p&gt;
 +
 +&lt;p&gt;As I know, ActiveMQ already impllement this functionality based on JavaCC, it’s simple and exntensible.So I just extract it and integrate into RocketMQ, only some grammars:&lt;/p&gt;
 +
 +&lt;ol&gt;
 +  &lt;li&gt;Numeric comparison, like &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;gt;&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;gt;=&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;=&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;BETWEEN&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;=&lt;/code&gt;;&lt;/li&gt;
 +  &lt;li&gt;Character comparison, like &lt;code class=&quot;highlighter-rouge&quot;&gt;=&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;&amp;gt;&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;IN&lt;/code&gt;;&lt;/li&gt;
 +  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;IS NULL&lt;/code&gt; or &lt;code class=&quot;highlighter-rouge&quot;&gt;IS NOT NULL&lt;/code&gt;;&lt;/li&gt;
 +  &lt;li&gt;Logical &lt;code class=&quot;highlighter-rouge&quot;&gt;AND&lt;/code&gt;, logical &lt;code class=&quot;highlighter-rouge&quot;&gt;OR&lt;/code&gt;, logical &lt;code class=&quot;highlighter-rouge&quot;&gt;NOT&lt;/code&gt;;&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;p&gt;Constant type are:&lt;/p&gt;
 +
 +&lt;ol&gt;
 +  &lt;li&gt;Numeric, like 123, 3.1415;&lt;/li&gt;
 +  &lt;li&gt;Character, like ‘abc’, must be maked with single quotes;&lt;/li&gt;
 +  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;NULL&lt;/code&gt;, special constant;&lt;/li&gt;
 +  &lt;li&gt;Boolean, &lt;code class=&quot;highlighter-rouge&quot;&gt;TRUE&lt;/code&gt; or &lt;code class=&quot;highlighter-rouge&quot;&gt;FALSE&lt;/code&gt;;&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;h3 id=&quot;design&quot;&gt;Design&lt;/h3&gt;
 +&lt;ul&gt;
 +  &lt;li&gt;Structure&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;p&gt;&lt;img src=&quot;/assets/images/blog/filter_structure_apach.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
 +
 +&lt;ol&gt;
 +  &lt;li&gt;Broker collects the expression of consumer through heartbeat request, and saved in &lt;code class=&quot;highlighter-rouge&quot;&gt;ConsumerFilterManager&lt;/code&gt;.&lt;/li&gt;
 +  &lt;li&gt;When consumer pulls messages, broker will construct a &lt;code class=&quot;highlighter-rouge&quot;&gt;MessageFilter&lt;/code&gt;(an interface) with compiled expression and subscription data to select matched messages in &lt;code class=&quot;highlighter-rouge&quot;&gt;CommitLog&lt;/code&gt;.&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;p&gt;The main logic is simple.&lt;/p&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;New Module, rocketmq-filter&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;p&gt;The implementation of SQL92 language is placed in this module which have dependency on common module.&lt;/p&gt;
 +
 +&lt;p&gt;Broker compile or evaluate expression through the interface of &lt;code class=&quot;highlighter-rouge&quot;&gt;FilterSpi&lt;/code&gt; contained in &lt;code class=&quot;highlighter-rouge&quot;&gt;FilterFactory&lt;/code&gt; that manage all &lt;code class=&quot;highlighter-rouge&quot;&gt;FilterSpi&lt;/code&gt; and also support new one to register.&lt;/p&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;How to manage consumer’s expression data&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;p&gt;Different from tag filtering, expression of SQL92 should be compiled first to check whether is leagal and then use the complied expression to compute. This procedure is designed to take place at broker.&lt;/p&gt;
 +
 +&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;ConsumerManager&lt;/code&gt; manage the suscriptions of push consumer, and &lt;code class=&quot;highlighter-rouge&quot;&gt;ConsumerFilterManager&lt;/code&gt; manage the expression info of push consumer who wish to filter message by special language, the info includes data version, expression, compiled expression, alive time and etc.&lt;/p&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;How to filter message by expression&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;p&gt;I redesign the interface &lt;code class=&quot;highlighter-rouge&quot;&gt;getMessage&lt;/code&gt; of &lt;code class=&quot;highlighter-rouge&quot;&gt;MessageStore&lt;/code&gt; by replace the last parameter &lt;code class=&quot;highlighter-rouge&quot;&gt;SubscriptionData&lt;/code&gt; to &lt;code class=&quot;highlighter-rouge&quot;&gt;MessageFilter&lt;/code&gt; that is also refactored. The purpose is to make module &lt;code class=&quot;highlighter-rouge&quot;&gt;rocketmq-store&lt;/code&gt; has no relation with protocol.&lt;/p&gt;
 +
 +&lt;p&gt;When get message, the implementation &lt;code class=&quot;highlighter-rouge&quot;&gt;ExpressionMessageFilter&lt;/code&gt; would check whether the message is matched by &lt;code class=&quot;highlighter-rouge&quot;&gt;BitsArray&lt;/code&gt; which will be refered later or evaluation, just as the mechanism of tag filtering.&lt;/p&gt;
 +
 +&lt;ul&gt;
 +  &lt;li&gt;Optimization, pre-calculate the filtering result when build consume queue&lt;/li&gt;
 +&lt;/ul&gt;
 +
 +&lt;p&gt;It’s poor performance to do filter when pull message:&lt;/p&gt;
 +
 +&lt;ol&gt;
 +  &lt;li&gt;off-heap to heap, once every consumer subscribed same topic pull message.&lt;/li&gt;
 +  &lt;li&gt;decode message properties, once every consumer subscribed same topic pull message.&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;BloomFilter&lt;/code&gt; and pre-calculation are adopted to optimize the situation:&lt;/p&gt;
 +
 +&lt;p&gt;&lt;img src=&quot;/assets/images/blog/filter_build_cq_apache.png&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
 +
 +&lt;ol&gt;
 +  &lt;li&gt;Every consumer has been asigned some bit position of &lt;code class=&quot;highlighter-rouge&quot;&gt;BloomFilter&lt;/code&gt; when register to broker.&lt;/li&gt;
 +  &lt;li&gt;When broker build queue after message into &lt;code class=&quot;highlighter-rouge&quot;&gt;CommitLog&lt;/code&gt;, the consumer’s filtering result would be calculated, and all resuls are assembled as a &lt;code class=&quot;highlighter-rouge&quot;&gt;BitsArray&lt;/code&gt; saved in &lt;code class=&quot;highlighter-rouge&quot;&gt;ConsumeQueueExt&lt;/code&gt;.&lt;/li&gt;
 +  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;ConsumeQueueExt&lt;/code&gt; is a store file linked to &lt;code class=&quot;highlighter-rouge&quot;&gt;ConsumeQueue&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;ConsumeQueue&lt;/code&gt; could find the data by the &lt;code class=&quot;highlighter-rouge&quot;&gt;tagsCode&lt;/code&gt; whitch is already replaced by the address(for compitable, the range is Long.MIN_VALUE to Integer.MIN_VALUE) generated by &lt;code class=&quot;highlighter-rouge&quot;&gt;ConsumeQueueExt&lt;/code&gt;.&lt;/li&gt;
 +  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;ExpressionMessageFilter&lt;/code&gt; could use the &lt;code class=&quot;highlighter-rouge&quot;&gt;BitsArray&lt;/code&gt; to check whether the message is matched. Because of BloomFilter’s collision, it also need to decode properties to do calculation for matched message(may could be reduced by check the collision, not include in this edition).&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;p&gt;This optimization is suitable for:&lt;/p&gt;
 +
 +&lt;ol&gt;
 +  &lt;li&gt;High subscription ratio.&lt;/li&gt;
 +  &lt;li&gt;Large properties.&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;p&gt;This optimization is off default, it need set some configs when broker starting to switch on:&lt;/p&gt;
 +
 +&lt;ol&gt;
 +  &lt;li&gt;enableCalcFilterBitMap = true, means to caculate bitmap when build consume queue.&lt;/li&gt;
 +  &lt;li&gt;expectConsumerNumUseFilter = XX(Integer, default is 32), means estimated consumer num subscribe same topic.&lt;/li&gt;
 +  &lt;li&gt;maxErrorRateOfBloomFilter = XX(1~100, default is 20), means error rate of bloom filter.&lt;/li&gt;
 +  &lt;li&gt;enableConsumeQueueExt = true, means construct consume queue extend file.&lt;/li&gt;
 +&lt;/ol&gt;
 +
 +&lt;h3 id=&quot;interface&quot;&gt;Interface&lt;/h3&gt;
 +
 +&lt;p&gt;Only push consumer could filter message by SQL92 expression in this edition, the interface is:&lt;/p&gt;
 +
 +&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;public void subscribe(final String topic, final MessageSelector messageSelector)&lt;/code&gt;&lt;/p&gt;
 +
 +&lt;h3 id=&quot;performance-comparison&quot;&gt;Performance Comparison&lt;/h3&gt;
 +
 +&lt;p&gt;Configuration of broker machine: 32 core, 128G memory, 1000Mb/s full duplex dual network&lt;/p&gt;
 +
 +&lt;p&gt;Producer send message with 1k body and 1k properties.&lt;/p&gt;
 +
 +&lt;p&gt;Five consumers consume message through push model, every consumer would get 1/5 messages of total.&lt;/p&gt;
 +
 +&lt;p&gt;Cpu and gc frequency is about 30% lower when do pre-calculate filtering result.&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&q
 uot;=&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="Filter" /><summary type="html">So far, RocketMQ only support message filtering feature by TAG, but one message only can own one tag, this is too limited to meet complex business requirements.</summary></entry><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 Code Marathon" /><published>2017-03-31T00:00:00+08:00</published><updated>2017-03-31T00:00:00+08:00</upd
 ated><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 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;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-c
 orrect-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 “fork” button, a forked repo will be added to your repo list.&lt;/li&gt;
 +  &lt;li&gt;clone the forked repo, here take “foo” 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’d 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 –all&lt;br /&gt;
 +git commit -m “attach the issue or jira”&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 ‘Add batch feature’&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 “[XXX] add something”, such as “[ROCKETMQ-80] Add batch feature”, the “XXX” 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
 +  – you can dynamically add or remove name server nodes without necessity of rebooting your brokers and clients 
 +  according to your name servers’ 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’t 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 mainl
 y 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 prospect,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?it 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 ‘95), 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’s 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’t 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’s 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’s return,ask yourself,have 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’s 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,I can also depend commons logging api but not concret implementation?it’s 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’s 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;
 +&l

<TRUNCATED>


[02/15] incubator-rocketmq-site git commit: Resize ant logo

Posted by li...@apache.org.
Resize ant logo


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/4d0b814a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/tree/4d0b814a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/diff/4d0b814a

Branch: refs/heads/asf-site
Commit: 4d0b814a86a16c6e33762b809d4995557229d8ff
Parents: 0624913
Author: Li Zhanhui <li...@gmail.com>
Authored: Thu Jun 8 17:26:23 2017 +0800
Committer: Li Zhanhui <li...@gmail.com>
Committed: Thu Jun 8 17:27:06 2017 +0800

----------------------------------------------------------------------
 _sass/_archive.scss                  |   2 +-
 assets/images/community/ant-logo.png | Bin 16801 -> 22784 bytes
 2 files changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/4d0b814a/_sass/_archive.scss
----------------------------------------------------------------------
diff --git a/_sass/_archive.scss b/_sass/_archive.scss
index e8aede2..b741bc5 100644
--- a/_sass/_archive.scss
+++ b/_sass/_archive.scss
@@ -63,7 +63,7 @@
   border-radius: $border-radius;
   overflow: hidden;
   img {
-    max-width:60%;
+    max-width: 60%;
   }
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/4d0b814a/assets/images/community/ant-logo.png
----------------------------------------------------------------------
diff --git a/assets/images/community/ant-logo.png b/assets/images/community/ant-logo.png
index d753a6a..5a3b5fa 100644
Binary files a/assets/images/community/ant-logo.png and b/assets/images/community/ant-logo.png differ


[12/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/docs/best-practice-producer/index.html
----------------------------------------------------------------------
diff --cc content/docs/best-practice-producer/index.html
index ce4e178,0000000..5edf788
mode 100644,000000..100644
--- a/content/docs/best-practice-producer/index.html
+++ b/content/docs/best-practice-producer/index.html
@@@ -1,654 -1,0 +1,654 @@@
 +<!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-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="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>
 +    
 +  </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="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 24, 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 which contains SendStatus. Firstly, we assume that Message’s isWaitStoreMsgOK=true(default is true). If not, we will always get SEND_OK if no exception is thrown.
 +Below is a list of descriptions about each status:</p>
 +<h3 id="flush_disk_timeout">FLUSH_DISK_TIMEOUT</h3>
 +<p>If the Broker set MessageStoreConfig’s FlushDiskType=SYNC_FLUSH(default is ASYNC_FLUSH), and the Broker doesn’t finish flushing the disk within MessageStoreConfig’s syncFlushTimeout(default is 5 secs), you will get this status.</p>
 +<h3 id="flush_slave_timeout">FLUSH_SLAVE_TIMEOUT</h3>
 +<p>If the Broker’s role is SYNC_MASTER(default is ASYNC_MASTER), and the slave Broker doesn’t finish synchronizing with the master within the MessageStoreConfig’s syncFlushTimeout(default is 5 secs), you will get this status.</p>
 +<h3 id="slave_not_available">SLAVE_NOT_AVAILABLE</h3>
 +<p>If the Broker’s role is SYNC_MASTER(default is ASYNC_MASTER), but no slave Broker is configured, you will get this status.</p>
 +<h3 id="send_ok">SEND_OK</h3>
 +<p>SEND_OK does not mean it is reliable. To make sure no message would be lost, 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 can find your message missing.
 +At this time, you have two choices, one is to let it go, which may cause this message to be lost; another is to resend the message, which may get message duplication.
 +Often we suggest resend and find a way to handle the duplication removal when consuming. Unless you feel it doesn’t matter when some messages are lost.
 +But keep in mind that resending is useless when you get SLAVE_NOT_AVAILABLE. If this happens, you should keep the scene and alert the Cluster Manager.</p>
 +<h2 id="timeout">Timeout</h2>
 +<p>The Client sends requests to Broker, and wait for the responses, but if the max wait time has elapsed and no response is returned, 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 wait time to be too small, as the Broker needs some time to flush the disk or synchronize with slaves. Also the value may have little effect if it exceeds syncFlushTimeout by a lot as 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 size of 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 returned. So if you care about performance, we suggest you use send(msg, callback) which will act in the async way.</p>
 +<h2 id="producer-group">Producer Group</h2>
 +<p>Normally, the producer group has no effects. But if you are involved in a transaction, you should pay attention to it.
 +By default, you can only create only one producer with the same producer group in the same JVM, which is usually enough.</p>
 +<h2 id="thread-safety">Thread Safety</h2>
 +<p>The producer is thread-safe, you can just use it in your business solution.</p>
 +<h2 id="performance">Performance</h2>
 +<p>If you want more than one producer in one JVM for big data processing, we suggest:</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-24">December 24, 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>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/docs/broadcast-example/index.html
----------------------------------------------------------------------
diff --cc content/docs/broadcast-example/index.html
index 28ef929,0000000..51d37a6
mode 100644,000000..100644
--- a/content/docs/broadcast-example/index.html
+++ b/content/docs/broadcast-example/index.html
@@@ -1,660 -1,0 +1,660 @@@
 +<!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-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="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>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <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="Broadcasting">
 +    <meta itemprop="description" content="How to send broadcast messages in 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">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="#producer-example" id="markdown-toc-producer-example">Producer example</a></li>
 +  <li><a href="#consumer-example" id="markdown-toc-consumer-example">Consumer example</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h4 id="what-is-broadcasting">What is broadcasting</h4>
 +<p>Broadcasting is sending a message to all subscribers of a topic. If you want all subscribers receive messages about a topic, broadcasting is a good choice.</p>
 +
 +<h4 id="producer-example">Producer example</h4>
 +
 +<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">BroadcastProducer</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="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">100</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">"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="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="consumer-example">Consumer example</h4>
 +
 +<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">BroadcastConsumer</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="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">"example_group_name"</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>
 +    <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-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=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/af2718af/content/docs/cli-admin-tool/index.html
----------------------------------------------------------------------
diff --cc content/docs/cli-admin-tool/index.html
index a9e7682,0000000..cc95d07
mode 100644,000000..100644
--- a/content/docs/cli-admin-tool/index.html
+++ b/content/docs/cli-admin-tool/index.html
@@@ -1,682 -1,0 +1,682 @@@
 +<!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-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="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="">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="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="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 16, 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. Whether you download a pre-built binary version or build from source by yourself, you have the tool with the package.</p>
 +
 +<p>If you want to look at the source code, please refer to <a href="https://github.com/apache/incubator-rocketmq/tree/master/tools">rocketmq-tools module</a></p>
 +
 +<h1 id="how-to-use">How to use</h1>
 +
 +<p>The Admin Tool is very user friendly. 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.</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-16">December 16, 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/af2718af/content/docs/cluster-deployment/index.html
----------------------------------------------------------------------
diff --cc content/docs/cluster-deployment/index.html
index 6d1b90a,0000000..cb8f8f0
mode 100644,000000..100644
--- a/content/docs/cluster-deployment/index.html
+++ b/content/docs/cluster-deployment/index.html
@@@ -1,686 -1,0 +1,686 @@@
 +<!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-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="Cluster Configuration and Deployment">
 +    <meta itemprop="description" content="Prerequisite">
 +    <meta itemprop="datePublished" content="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 16, 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-16">December 16, 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="How to manage 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>


[08/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/docs/release-manual.html
----------------------------------------------------------------------
diff --cc content/docs/release-manual.html
index a8c7cd3,0000000..b2aaaef
mode 100644,000000..100644
--- a/content/docs/release-manual.html
+++ b/content/docs/release-manual.html
@@@ -1,952 -1,0 +1,952 @@@
 +<!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-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="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>
 +    
 +  </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="June 08, 2017">
 +    <meta itemprop="dateModified" content="February 07, 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 make a released version 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>The release documentations provided by The ASF 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 <a href="https://www.apache.org/dev/release-signing">Apache Release Signing documentation</a> for more details.</p>
 +
 +<ul>
 +  <li>Create new pgp key. Please refer to <a href="http://www.apache.org/dev/openpgp.html">here</a> on how to use gpg key.</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 by <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 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’s 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>Make sure that your are in the candidate release branch.</li>
 +  <li>Make sure that all the unit tests can pass via <code class="highlighter-rouge">mvn clean install</code>.</li>
 +  <li>Make sure 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 correct 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 besides 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 requirements:</p>
 +
 +<ul>
 +  <li>Checksums and PGP signatures are valid.</li>
 +  <li>Build is successful including unit and integration tests.</li>
 +  <li>DISCLAIMER is correct and filenames must include “incubating”.</li>
 +  <li>LICENSE and NOTICE files are correct and dependency licenses are acceptable.</li>
 +  <li>All source files have license headers and pass RAT checks.</li>
 +  <li>Javadocs have been generated correctly.</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 only contains 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 by 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 passes 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 are passed, Nexus will close the repository and produce 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 aren’t passed, fix the issues then go 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 body:</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 congratulate the release candidate. 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 />
 +….</p>
 +
 +  <p><strong>Non-binding votes +1s:</strong><br />
 +User Name (Apache ID)<br />
 +….</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, go 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’t forget to 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 />
 +….</p>
 +
 +  <p><strong>Non-binding votes +1s:</strong><br />
 +User Name (Apache ID) <br />
 +….</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>— 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-07">February 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=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/af2718af/content/docs/rmq-arc/index.html
----------------------------------------------------------------------
diff --cc content/docs/rmq-arc/index.html
index dffbb22,0000000..2c98cef
mode 100644,000000..100644
--- a/content/docs/rmq-arc/index.html
+++ b/content/docs/rmq-arc/index.html
@@@ -1,667 -1,0 +1,667 @@@
 +<!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-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="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="">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="RocketMQ Architecture">
 +    <meta itemprop="description" content="The main Architecture of 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">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>Apache RocketMQ is a distributed messaging and streaming platform with low latency, high performance and reliability, trillion-level capacity and flexible scalability. It consists of four parts: name servers, brokers, producers and consumers. Each of them can be horizontally extended without a single Point of Failure. As shown in screenshot above.</p>
 +
 +<p><strong>NameServer Cluster</strong></p>
 +
 +<p>Name Servers provide lightweight service discovery and routing. Each Name Server records full routing information, provides corresponding 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. They support the Push and Pull model, contains fault tolerance mechanism (2 copies or 3 copies), and provides 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 lacking 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 model as well. It also supports cluster consumption and message broadcasting. It provides real-time message subscription mechanism and can meet most consumer requirements. 
 +RocketMQ’s website provides a simple quick-start guide to interested users.</p>
 +
 +<h1 id="nameserver">NameServer</h1>
 +
 +<p>NameServer is a 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 check 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 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, handles the requests from clients.</li>
 +  <li>Client Manager, manages the clients (Producer/Consumer) and maintains topic subscription of consumer.</li>
 +  <li>Store Service, provides simple APIs to store or query message in physical disk.</li>
 +  <li>HA Service, provides data sync feature between master broker and slave broker.</li>
 +  <li>Index Service, builds index for messages by specified key and provides quick message query.</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-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=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>


[09/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/docs/order-example/index.html
----------------------------------------------------------------------
diff --cc content/docs/order-example/index.html
index 89ee798,0000000..7a018e3
mode 100644,000000..100644
--- a/content/docs/order-example/index.html
+++ b/content/docs/order-example/index.html
@@@ -1,682 -1,0 +1,682 @@@
 +<!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-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="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>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <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="Order Message">
 +    <meta itemprop="description" content="How to send and receive ordered messages in 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">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>RocketMQ provides ordered messages using FIFO order.</p>
 +
 +<p>The following example demonstrates sending/recieving of globally and partitionally ordered message.</p>
 +<h4 id="send-message-sample-code">Send message sample code</h4>
 +
 +<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">OrderedProducer</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 with a producer group name.</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">"example_group_name"</span><span class="o">);</span>
 +        <span class="c1">//Launch the instance.</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="c1">//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">"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="c1">//server shutdown</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="subscription-message-sample-code">Subscription message sample code</h4>
 +
 +<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">OrderedConsumer</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="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">"example_group_name"</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>
 +    <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-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=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/af2718af/content/docs/pull-request/index.html
----------------------------------------------------------------------
diff --cc content/docs/pull-request/index.html
index ab9a5c6,0000000..e13f734
mode 100644,000000..100644
--- a/content/docs/pull-request/index.html
+++ b/content/docs/pull-request/index.html
@@@ -1,784 -1,0 +1,784 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>How to manage 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="How to manage 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="How to manage 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-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="active">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="How to manage Pull Request">
 +    <meta itemprop="description" content="This page guides you through Git setup and contribution process.">
 +    <meta itemprop="datePublished" content="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 24, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">How to manage 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’s <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).
 +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:
 +    git fetch upstream master
 +    git rebase upstream/master</p>
 +
 +<h1 id="git-setup-for-committers">Git setup for Committers</h1>
 +<p>In addition to contributors’ 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 ‘origin’ 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 ensure the 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, otherwise always 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’s apache/incubator-rocketmq. By default all PR will go to apache/master.</p>
 +  </li>
 +  <li>Click the green “Compare, review, and create pull request” button. You can edit the to and from for the PR if it isn’t correct. The “base fork” should be apache/incubator-rocketmq unless you are collaborating with one of the committers on the list. The “base” will be master. Don’t submit a PR to any other branches unless permitted by branch owner. The “head fork” will be your forked repo and the “compare” will be your ROCKETMQ-xxxx branch.</li>
 +  <li>Click the “Create pull request” button and name the request “ROCKETMQ-xxxx” 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’s apache/incubator-rocketmq. You can use the commenting UI there.</li>
 +  <li>If you are looking for a review or wanting to share with someone else please write a note in the comments and don’t worry about automated merging of your PR – 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’s remote repo, you can merge this 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>Make sure you follow <a href="/docs/code-guidelines/">Coding Guidelines</a>.</li>
 +  <li>You have unit tests for everything you are about to commit.</li>
 +</ol>
 +
 +<p>For information about creating pull requests, please check <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 as target of the PR. <br />
 +You pull request will be reviewed and commented by committers, and issues can be discussed. 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’s commits. In order to do that, as well as to close the PR at the same time, it is recommended to use squash commits.
 +Merging pull requests are equivalent to a “pull” of a contributor’s 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. Please refer to 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’s Github handle is “cuser” and the PR branch name is “ROCKETMQ-xxxx”. Next, resolve all conflicts, 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’s) PR you only need to merge (not pull), since you have a local copy that you’ve 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>Please run regular patch checks, build with tests enabled, and change CHANGELOG whenever needed.
 +If all requirements are met, you can commit the squashed request using:</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 capitalized and ZZ is the pull request number on apache/incubator-rocketmq repository. Including “closes apache/incubator-rocketmq#ZZ” will close the PR automatically. More information can be 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 to be merged. 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 at the start. Please watch for dupe PRs (based on same source branches).</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’s 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>
 +All subsequent comments will then automatically be copied to JIRA.</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>It’s dangerous —especially when using IDEs— to accidentally commit changes to the ASF repo, be directed to the trunk, branch-2, 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 setting the directory in which they develop code to read only access to the ASF repository on github. A separate directory should also be set up with write access to the ASF repository as well as read access to your other repositories. Merging operations and push backs to the ASF repo are done from this directory —so it will be immune to all local changes.</p>
 +
 +<p>If you accidentally committed 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 committed a branch to the ASF repo, the infrastructure team can delete it —but they cannot stop it propagating to github and potentially being visible. Please avoid this.</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-24">December 24, 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=How to manage 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/af2718af/content/docs/quick-start/index.html
----------------------------------------------------------------------
diff --cc content/docs/quick-start/index.html
index ad4ff81,0000000..fa1197c
mode 100644,000000..100644
--- a/content/docs/quick-start/index.html
+++ b/content/docs/quick-start/index.html
@@@ -1,670 -1,0 +1,670 @@@
 +<!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-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="active">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="Quick Start">
 +    <meta itemprop="description" content="How to quickly install and setup Apache RocketMQ.">
 +    <meta itemprop="datePublished" content="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 29, 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 a detailed instruction of setting up RocketMQ messaging system on your local machine to send 
 +and receive messages.</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 -b develop https://github.com/apache/incubator-rocketmq.git
 +  &gt; <span class="nb">cd </span>incubator-rocketmq
 +  &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>
 +
 +<h1 id="send--receive-messages">Send &amp; Receive Messages</h1>
 +
 +<p>Before sending/receiving messages, we need to tell clients the location of name servers. 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-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=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>


[11/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/docs/code-guidelines/index.html
----------------------------------------------------------------------
diff --cc content/docs/code-guidelines/index.html
index ec95b04,0000000..87e61c9
mode 100644,000000..100644
--- a/content/docs/code-guidelines/index.html
+++ b/content/docs/code-guidelines/index.html
@@@ -1,631 -1,0 +1,631 @@@
 +<!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-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="active">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="Coding Guidelines">
 +    <meta itemprop="description" content="Apache RocketMQ Coding Guidelines">
 +    <meta itemprop="datePublished" content="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 29, 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 page describes formatting rules and guidelines for software source code.</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-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=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="How to manage 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>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/docs/core-concept/index.html
----------------------------------------------------------------------
diff --cc content/docs/core-concept/index.html
index 7ff314c,0000000..f888301
mode 100644,000000..100644
--- a/content/docs/core-concept/index.html
+++ b/content/docs/core-concept/index.html
@@@ -1,721 -1,0 +1,721 @@@
 +<!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-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="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>
 +    
 +  </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="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 16, 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>According to the above model, we can dig 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 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 to avoid unnecessary initialization 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 and maintaining other 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 the same topic subscription(s).</p>
 +
 +<h1 id="topic">Topic</h1>
 +
 +<p>Topic is a category in which producers deliver messages and consumers pull messages. Topics have very loose relationship with producers and consumers. Specifically, a topic may have zero, one or multiple producers that sends messages to it; conversely, a producer can send messages of different topics. In consumer’s perspective, a topic may be subscribed by zero, one or multiple consumer groups. And a consumer group, similarly, may subscribe to one or more topics as long as instances of this group keep their subscription consistent.</p>
 +
 +<h1 id="message">Message</h1>
 +
 +<p>Message is the information to be delivered. A message must have a topic, which can be interpreted as address of your letter to mail to. A message may also have an optional tag and extra key-value pairs. For example, you may set a business key to your message and look up the message on a broker server to diagnose issues during development.</p>
 +
 +<h2 id="message-queue">Message Queue</h2>
 +
 +<p>Topic is partitioned into one or more sub-topics, “message queues”.</p>
 +
 +<h2 id="tag">Tag</h2>
 +
 +<p>Tag, in other words sub-topic, provides extra flexibility to users. With tag, messages with different purposes from the same business module may have the same topic and different tag. Tags would be helpful to keep your code clean and coherent, and tags also can facilitate the query system RocketMQ provides.</p>
 +
 +<h2 id="broker">Broker</h2>
 +
 +<p>Broker is a major component of the RocketMQ system. It receives messages sent from producers, store them and prepare to handle pull requests from consumers. It also stores message 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 the corresponding broker list.</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 messages 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-16">December 16, 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/af2718af/content/docs/create-pull-request/index.html
----------------------------------------------------------------------
diff --cc content/docs/create-pull-request/index.html
index 82f64b6,0000000..2ab3bdb
mode 100644,000000..100644
--- a/content/docs/create-pull-request/index.html
+++ b/content/docs/create-pull-request/index.html
@@@ -1,705 -1,0 +1,705 @@@
 +<!doctype html>
 +<html lang="en" class="no-js">
 +  <head>
 +    <meta charset="utf-8">
 +
 +<!-- begin SEO -->
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +<title>How to create Pull Request - Apache RocketMQ</title>
 +
 +
 +
 +
 +<meta name="description" content="This page guides you through the pull request creation process.">
 +
 +
 +
 +
 +<meta property="og:locale" content="en">
 +<meta property="og:site_name" content="Apache RocketMQ">
 +<meta property="og:title" content="How to create Pull Request">
 +
 +
 +
 +
 +  <meta property="og:description" content="This page guides you through the pull request creation process.">
 +
 +
 +
 +  <meta name="twitter:site" content="@ApacheRocketMQ">
 +  <meta name="twitter:title" content="How to create Pull Request">
 +  <meta name="twitter:description" content="This page guides you through the pull request creation 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-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="How to create Pull Request">
 +    <meta itemprop="description" content="This page guides you through the pull request creation process.">
 +    <meta itemprop="datePublished" content="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 24, 2016">
 +
 +    <div class="page__inner-wrap">
 +      
 +        <header>
 +          <h1 class="page__title" itemprop="headline">How to create Pull Request
 +</h1>
 +          
 +        </header>
 +      
 +
 +      <section class="page__content" itemprop="text">
 +        <p>This page guides you through the pull request creation 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>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<h1 id="git-setup-for-contributors">Git setup for Contributors</h1>
 +<p>First of all, fork github’s <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:
 +    git fetch upstream master
 +    git rebase upstream/master</p>
 +
 +<h1 id="git-setup-for-committers">Git setup for Committers</h1>
 +<p>In addition to contributors’ 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 ‘origin’ 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 ensure the 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, otherwise always 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’s apache/incubator-rocketmq. By default all PR will go to apache/master.</p>
 +  </li>
 +  <li>Click the green “Compare, review, and create pull request” button. You can edit the to and from for the PR if it isn’t correct. The “base fork” should be apache/incubator-rocketmq unless you are collaborating with one of the committers on the list. The “base” will be master. Don’t submit a PR to any other branches unless permitted by branch owner. The “head fork” will be your forked repo and the “compare” will be your ROCKETMQ-xxxx branch.</li>
 +  <li>Click the “Create pull request” button and name the request “ROCKETMQ-xxxx” 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’s apache/incubator-rocketmq. You can use the commenting UI there.</li>
 +  <li>If you are looking for a review or wanting to share with someone else please write a note in the comments and don’t worry about automated merging of your PR – 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’s remote repo, you can merge this 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>Make sure you follow <a href="/docs/code-guidelines/">Coding Guidelines</a>.</li>
 +  <li>You have unit tests for everything you are about to commit.</li>
 +</ol>
 +
 +<p>For information about creating pull requests, please check <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 as target of the PR. <br />
 +You pull request will be reviewed and commented by committers, and issues can be discussed. When all reviewers are positive on the pull request, it will be merged.</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-24">December 24, 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=How to create Pull Request /docs/create-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/create-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/create-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/create-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/best-practice-consumer/" class="pagination--pager" title="Best Practice For Consumer
 +">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/af2718af/content/docs/documentation/index.html
----------------------------------------------------------------------
diff --cc content/docs/documentation/index.html
index ae21480,0000000..b1b8a85
mode 100644,000000..100644
--- a/content/docs/documentation/index.html
+++ b/content/docs/documentation/index.html
@@@ -1,655 -1,0 +1,655 @@@
 +<!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-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="Documentation">
 +    <meta itemprop="description" content="Apache RocketMQ Documentation">
 +    <meta itemprop="datePublished" content="June 08, 2017">
 +    <meta itemprop="dateModified" content="March 01, 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 – 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-01">March 01, 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>


[06/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/docs/simple-example/index.html
----------------------------------------------------------------------
diff --cc content/docs/simple-example/index.html
index 3624862,0000000..b6f3af8
mode 100644,000000..100644
--- a/content/docs/simple-example/index.html
+++ b/content/docs/simple-example/index.html
@@@ -1,709 -1,0 +1,709 @@@
 +<!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-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="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>
 +          
 +            
 +            
 +
 +            
 +            
 +
 +            <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="Simple Message Example">
 +    <meta itemprop="description" content="How to send simple message 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">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-synchronous-transmission" id="markdown-toc-reliable-synchronous-transmission">Reliable synchronous transmission</a></li>
 +  <li><a href="#reliable-asynchronous-transmission" id="markdown-toc-reliable-asynchronous-transmission">Reliable asynchronous transmission</a></li>
 +  <li><a href="#one-way-transmission" id="markdown-toc-one-way-transmission">One-way transmission</a></li>
 +</ul>
 +
 +  </nav>
 +</aside>
 +
 +<p>Use RocketMQ to send messages in three ways: reliable synchronous, reliable
 +asynchronous, and one-way transmission.</p>
 +
 +<p>This page exemplifies these three message-sending ways. Checkout the notes along with the example to figure out which 
 +way to use for your specific use case.</p>
 +
 +<h4 id="reliable-synchronous-transmission">Reliable synchronous transmission</h4>
 +
 +<p>Application: Reliable synchronous transmission is used in extensive scenes, 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">SyncProducer</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 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="c1">//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">100</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span>
 +            <span class="c1">//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="c1">//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="c1">//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>Application: asynchronous transmission is generally used in response time sensitive business scenarios.</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">Exception</span> <span class="o">{</span>
 +        <span class="c1">//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">"ExampleProducerGroup"</span><span class="o">);</span>
 +        <span class="c1">//Launch the instance.</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">100</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</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="c1">//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="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="c1">//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="one-way-transmission">One-way transmission</h4>
 +
 +<p>Application: One-way transmission is used for cases requiring moderate reliability,
 +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">OnewayProducer</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 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">"ExampleProducerGroup"</span><span class="o">);</span>
 +        <span class="c1">//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">100</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span>
 +            <span class="c1">//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="c1">//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="c1">//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-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=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/filter-by-sql92-example/" class="pagination--pager" title="Filter 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/dowloading/releases/index.html
----------------------------------------------------------------------
diff --cc content/dowloading/releases/index.html
index 50485ec,0000000..6c981fd
mode 100644,000000..100644
--- a/content/dowloading/releases/index.html
+++ b/content/dowloading/releases/index.html
@@@ -1,602 -1,0 +1,602 @@@
 +<!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-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="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>
 +    
 +  </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="June 08, 2017">
 +    <meta itemprop="dateModified" content="February 20, 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-20">February 20, 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>



[14/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/assets/css/main.css
----------------------------------------------------------------------
diff --cc content/assets/css/main.css
index 352c0c2,0000000..54ce215
mode 100644,000000..100644
--- a/content/assets/css/main.css
+++ b/content/assets/css/main.css
@@@ -1,4 -1,0 +1,4 @@@
 +/*!
 + *  Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
 + *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
-  */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.6.3");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.6.3") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.6.3") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.6.3") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;w
 idth:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotat
 e(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{po
 sition:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arro
 w-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content
 :""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-cir
 cle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:bef
 ore{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:befor
 e{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{co
 ntent:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:
 ""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-uplo
 ad:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{conte
 nt:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-in
 fo:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:befor
 e{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alph
 a-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}
 .fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before{content:""
 }.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-beh
 ance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.f
 a-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:bef
 ore{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm
 -square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mar
 s:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:"
 "}.fa-battery-4:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content
 :""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-c
 alendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shoppi
 ng-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.f
 a-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.mfp-counter{font-family:Georgia,Times,serif}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#000;opacity:.8;filter:alpha(opacity=80)}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none !important;-webkit-backface-vis
 ibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none !import
 ant}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-0.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;display:block;outline:none;padding:0;z-index:1046;-webkit-box-shadow:none;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:1;filter:alpha(opacity=100);padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Georgia,Times,serif}.mfp-close:hover,.mfp-close:focus{opacity:1;filter:alpha(opacity=100)}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#fff}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#fff;ri
 ght:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:absolute;opacity:1;filter:alpha(opacity=100);margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1;filter:alpha(opacity=100)}.mfp-arrow:before,.mfp-arrow:after,.mfp-arrow .mfp-b,.mfp-arrow .mfp-a{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after,.mfp-arrow .mfp-a{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before,.mfp-arrow .mfp-b{border-top-width:21px;border-bottom-width:21px;opacity:0.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after,.mfp-arrow-left .mfp-a{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before,.mfp-arrow-left .mfp-b{margin-left:25px;borde
 r-right:27px solid #fff}.mfp-arrow-right{right:0}.mfp-arrow-right:after,.mfp-arrow-right .mfp-a{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before,.mfp-arrow-right .mfp-b{border-left:27px solid #fff}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,0.6);backgroun
 d:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-figure figcaption{margin-top:0;margin-bottom:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,0.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-b
 ar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,0.6);position:fixed;text-align:center;padding:0}}@media all and (max-width: 900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0}a:focus{outline:thin dotted #f89406;outline:5px auto #f89406;outline-offset:-2px}*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}html{box-sizing:border-box;background-color:#fff;font-size:16px;-webkit-t
 ext-size-adjust:100%;-ms-text-size-adjust:100%}@media (min-width: 48em){html{font-size:18px}}@media (min-width: 64em){html{font-size:20px}}@media (min-width: 80em){html{font-size:22px}}body{margin:0}::-moz-selection{color:#fff;background:#000}::selection{color:#fff;background:#000}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}a{color:#52adc8}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type
 ="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}html{position:relative;min-height:100%}body{margin:0;padding:0;color:#494e52;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;line-height:1.5}body.overflow--hidden{overflow:hidden}h1,h2,h3,h4,h5,h6{margin:2em 0 0.5em;line-height:1.2;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}h1{margin-top:0;font-size:1.563em}h2{font-size:1.25em}h3{font
 -size:1em}h4{font-size:.75em}h5{font-size:.75em}h6{font-size:.75em}small,.small{font-size:.75em}p{margin-bottom:1.3em}u,ins{text-decoration:none;border-bottom:1px solid #494e52}u a,ins a{color:inherit}del a{color:inherit}p,pre,blockquote,ul,ol,dl,figure,table,fieldset{orphans:3;widows:3}abbr[title],abbr[data-original-title]{text-decoration:none;cursor:help;border-bottom:1px dotted #494e52}blockquote{margin:2em 1em 2em 0;padding-left:1em;padding-right:1em;font-style:italic;border-left:0.25em solid #7a8288}blockquote cite{font-style:italic}blockquote cite:before{content:"\2014";padding-right:5px}a:hover,a:active{outline:0}tt,code,kbd,samp,pre{font-family:Monaco,Consolas,"Lucida Console",monospace}pre{overflow-x:auto}p>code,a>code,li>code,figcaption>code,td>code{padding-top:0.1rem;padding-bottom:0.1rem;font-size:.75em;background:#fafafa;border:1px solid #f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}p>code:before,p>code:after,a>code:before,a>code:after,li>code:before,
 li>code:after,figcaption>code:before,figcaption>code:after,td>code:before,td>code:after{letter-spacing:-0.2em;content:"\00a0"}hr{display:block;margin:1em 0;border:0;border-top:1px solid #f2f3f3}ul li,ol li{margin-bottom:0.5em}li ul,li ol{margin-top:0.5em}figure{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:start;align-items:flex-start;flex-wrap:wrap;margin:2em 0}figure img,figure iframe,figure .fluid-width-video-wrapper{margin-bottom:1em}figure img{width:100%;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figure>a{display:block}@media (min-width: 37.5em){figure.half>a,figure.half>img{width:calc(50% - 0.5em)}}figure.half figcaption{width:100%}@media (min-width: 37.5em){figure.third>a,figure.third>img{width:calc(33.3333% - 0.5em)}}figure.third figcaption{width:100%}figcaption{margin-bottom:0.5em;color:#777a7d;font-family:Georgia,Times,serif;font-size:.75em}figcaption a{color:inherit;
 text-decoration:none;border-bottom:1px solid #bdc1c4;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figcaption a:hover{color:#000;border-bottom-color:#000}svg:not(:root){overflow:hidden}nav ul{margin:0;padding:0}nav li{list-style:none}nav a{text-decoration:none}nav ul li,nav ol li{margin-bottom:0}nav li ul,nav li ol{margin-top:0}b,i,strong,em,blockquote,p,q,span,figure,img,h1,h2,header,input,a,tr,td,form button,input[type="submit"],.btn,#goog-wm-sb,.highlight,.archive__item-teaser{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.hidden{display:none;visibility:hidden}.load{display:none}.transparent{opacity:0}.visually-hidden,.screen-reader-text,.screen-reader-text span,.screen-reader-shortcut{position:absolute !important;clip:rect(1px, 1px, 1px, 1px);height:1px !important;width:1px !important;border:0 !important;overflow:hidden}body:hover .visually-hidden a,body:hover .visually-hidden input,body:hover .visually-hidden button{display:no
 ne !important}.screen-reader-text:focus,.screen-reader-shortcut:focus{clip:auto !important;height:auto !important;width:auto !important;display:block;font-size:1em;font-weight:bold;padding:15px 23px 14px;background:#fff;z-index:100000;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,0.6)}.skip-link{position:fixed;z-index:20;margin:0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;white-space:nowrap}.skip-link li{height:0;width:0;list-style:none}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.cf{clear:both}.wrapper{max-width:1024px;margin-left:auto;margin-right:auto}.wrapper:after{content:" ";display:block;clear:both}.align-left{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-left{float:left;margin-right:1em}}.align-right{display:block;margin-left:auto;margi
 n-right:auto}@media (min-width: 37.5em){.align-right{float:right;margin-left:1em}}.align-center{display:block;margin-left:auto;margin-right:auto}@media (min-width: 64em){.full{margin-right:-19.49153% !important}}.icon{display:inline-block;fill:currentColor;width:1em;height:1.1em;line-height:1;position:relative;top:-0.1em;vertical-align:middle}.social-icons .fa{color:#000}.social-icons .fa-behance,.social-icons .fa-behance-square{color:#1769FF}.social-icons .fa-dribbble{color:#ea4c89}.social-icons .fa-facebook,.social-icons .fa-facebook-square{color:#3b5998}.social-icons .fa-flickr{color:#ff0084}.social-icons .fa-foursquare{color:#0072b1}.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{color:#171516}.social-icons .fa-google-plus,.social-icons .fa-google-plus-square{color:#dd4b39}.social-icons .fa-instagram{color:#517fa4}.social-icons .fa-lastfm,.social-icons .fa-lastfm-square{color:#d51007}.social-icons .fa-linkedin,.social-icons .fa-linkedin-squa
 re{color:#007bb6}.social-icons .fa-pinterest,.social-icons .fa-pinterest-p,.social-icons .fa-pinterest-square{color:#cb2027}.social-icons .fa-rss,.social-icons .fa-rss-square{color:#fa9b39}.social-icons .fa-soundcloud{color:#f30}.social-icons .fa-stack-exchange,.social-icons .fa-stack-overflow{color:#fe7a15}.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{color:#32506d}.social-icons .fa-twitter,.social-icons .fa-twitter-square{color:#55acee}.social-icons .fa-vimeo,.social-icons .fa-vimeo-square{color:#1ab7ea}.social-icons .fa-vine{color:#00bf8f}.social-icons .fa-youtube,.social-icons .fa-youtube-square,.social-icons .fa-youtube-play{color:#b00}.social-icons .fa-xing,.social-icons .fa-xing-square{color:#006567}.navicon{position:relative;width:28px;height:4px;background:#fff;margin:auto;-webkit-transition:0.3s;transition:0.3s}.navicon:before,.navicon:after{content:"";position:absolute;left:0;width:28px;height:4px;background:#fff;-webkit-transition:0.3s;transition:0.3s}.navicon
 :before{top:-8px}.navicon:after{bottom:-8px}.close .navicon{background:transparent}.close .navicon:before,.close .navicon:after{-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;top:0;width:28px}.close .navicon:before{-webkit-transform:rotate3d(0, 0, 1, 45deg);transform:rotate3d(0, 0, 1, 45deg)}.close .navicon:after{-webkit-transform:rotate3d(0, 0, 1, -45deg);transform:rotate3d(0, 0, 1, -45deg)}@media (min-width: 64em){.sticky{clear:both;position:-webkit-sticky;position:sticky;top:2em}.sticky::after{clear:both;content:"";display:table}.sticky>*{display:block}}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.show-modal{overflow:hidden;position:relative}.show-modal:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;z-index:999;background-color:rgba(255,255,255,0.85)}.show-modal .modal{display:block}.modal{displa
 y:none;position:fixed;width:300px;top:50%;left:50%;margin-left:-150px;margin-top:-150px;min-height:0;z-index:9999;background:#fff;border:1px solid #f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.modal__title{margin:0;padding:0.5em 1em}.modal__supporting-text{padding:0 1em 0.5em 1em}.modal__actions{padding:0.5em 1em;border-top:1px solid #f2f3f3}.footnote{color:#9ba1a6;text-decoration:none}.footnotes{color:#9ba1a6}.footnotes ol,.footnotes li,.footnotes p{margin-bottom:0;font-size:.75em}a.reversefootnote{color:#7a8288;text-decoration:none}a.reversefootnote:hover{text-decoration:underline}.required{color:#ee5f5b;font-weight:bold}@-webkit-keyframes intro{0%{opacity:0}100%{opacity:1}}@keyframes intro{0%{opacity:0}100%{opacity:1}}table{margin-bottom:1em;width:100%;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;border-collapse:collapse;border:1px solid #bdc1c4}table+table{m
 argin-top:1em}thead{background-color:#f2f3f3;border-bottom:1px solid #bdc1c4}th{padding:0.5em;font-weight:bold;text-align:left;border-right:1px solid #bdc1c4}td{padding:0.5em;border-bottom:1px solid #bdc1c4;border-right:1px solid #bdc1c4}tr,td,th{vertical-align:middle}.btn,#goog-wm-sb{display:inline-block;margin-bottom:0.25em;padding:0.5em 1em;color:#fff !important;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-align:center;text-decoration:none;background-color:#7a8288;border:0 !important;border-radius:4px;cursor:pointer}.btn:hover,#goog-wm-sb:hover{background-color:#333}.btn .icon,#goog-wm-sb .icon{margin-right:0.5em}.btn .icon+.hidden,#goog-wm-sb .icon+.hidden{margin-left:-0.5em}.btn--block{display:block;width:100%}.btn--block+.btn--block{margin-top:0.25em}.btn--inverse{color:#7a8288 !important;border:1px solid #bdc1c4 !important;background-color:#fff}.btn--in
 verse:hover{color:#fff !important;border-color:#7a8288}.btn--light-outline{border:1px solid #fff !important;background-color:transparent}.btn--info{background-color:#52adc8}.btn--info:hover{background-color:#428aa0}.btn--warning{background-color:#f89406}.btn--warning:hover{background-color:#c67605}.btn--success{background-color:#62c462}.btn--success:hover{background-color:#4e9d4e}.btn--danger{background-color:#ee5f5b}.btn--danger:hover{background-color:#be4c49}.btn--disabled{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.btn--facebook{background-color:#3b5998}.btn--facebook:hover{background-color:#2f477a}.btn--twitter{background-color:#55acee}.btn--twitter:hover{background-color:#448abe}.btn--google-plus{background-color:#dd4b39}.btn--google-plus:hover{background-color:#b13c2e}.btn--linkedin{background-color:#007bb6}.btn--linkedin:hover{background-color:#006292}.btn--x-large{font-size:1.25em}.btn--large{font-size:1em}.btn--small{font-si
 ze:.6875em}.notice{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f8f9f9;border-radius:4px;box-shadow:0 1px 1px rgba(189,193,196,0.25)}.notice h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice h4{margin-bottom:0;font-size:1em}.notice p:last-child{margin-bottom:0 !important}.notice h4+p{margin-top:0;padding-top:0}.notice a{color:#bdc1c4}.notice a:hover{color:#717476}.notice code{background-color:#fcfcfc}.notice ul:last-child{margin-bottom:0}.notice--primary{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(122,130,136,0.25)}.notice--primary h4{margin-
 top:0 !important;margin-bottom:0.75em}.page__content .notice--primary h4{margin-bottom:0;font-size:1em}.notice--primary p:last-child{margin-bottom:0 !important}.notice--primary h4+p{margin-top:0;padding-top:0}.notice--primary a{color:#7a8288}.notice--primary a:hover{color:#494e52}.notice--primary code{background-color:#f8f9f9}.notice--primary ul:last-child{margin-bottom:0}.notice--info{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#eef7fa;border-radius:4px;box-shadow:0 1px 1px rgba(82,173,200,0.25)}.notice--info h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--info h4{margin-bottom:0;font-size:1em}.notice--info p:last-child{margin-bottom:0 !important}.notice--info h4+p{margin-top:0;padding-top:0}.notice--info a{color:#52adc8}.notice--info a:hover{color:#316878}.notice--info cod
 e{background-color:#f6fbfc}.notice--info ul:last-child{margin-bottom:0}.notice--warning{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fef4e6;border-radius:4px;box-shadow:0 1px 1px rgba(248,148,6,0.25)}.notice--warning h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--warning h4{margin-bottom:0;font-size:1em}.notice--warning p:last-child{margin-bottom:0 !important}.notice--warning h4+p{margin-top:0;padding-top:0}.notice--warning a{color:#f89406}.notice--warning a:hover{color:#955904}.notice--warning code{background-color:#fffaf3}.notice--warning ul:last-child{margin-bottom:0}.notice--success{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !impor
 tant;text-indent:initial;background-color:#eff9ef;border-radius:4px;box-shadow:0 1px 1px rgba(98,196,98,0.25)}.notice--success h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--success h4{margin-bottom:0;font-size:1em}.notice--success p:last-child{margin-bottom:0 !important}.notice--success h4+p{margin-top:0;padding-top:0}.notice--success a{color:#62c462}.notice--success a:hover{color:#3b763b}.notice--success code{background-color:#f7fcf7}.notice--success ul:last-child{margin-bottom:0}.notice--danger{margin:2em 0 !important;padding:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fdefef;border-radius:4px;box-shadow:0 1px 1px rgba(238,95,91,0.25)}.notice--danger h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice--danger h4{margin-bottom:0;font-size:1em}.notice--danger p:last-child{margin-botto
 m:0 !important}.notice--danger h4+p{margin-top:0;padding-top:0}.notice--danger a{color:#ee5f5b}.notice--danger a:hover{color:#8f3937}.notice--danger code{background-color:#fef7f7}.notice--danger ul:last-child{margin-bottom:0}.masthead{position:relative;border-bottom:1px solid #f2f3f3;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.15s;animation-delay:0.15s;z-index:20}.masthead__inner-wrap{max-width:1024px;margin-left:auto;margin-right:auto;clear:both;padding:1em 1em 1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.masthead__inner-wrap:after{content:" ";display:block;clear:both}.masthead__inner-wrap::after{clear:both;content:"";display:table}@media (min-width: 80em){.masthead__inner-wrap{max-width:1280px}}.masthead__inner-wrap nav{z-index:10}.masthead__inner-wrap a{text-decoration:none}.masthead__menu ul{margin:0;padding:0;clear:both;list-style-type:none}.mast
 head__menu-item{display:block;list-style-type:none;white-space:nowrap}.masthead__menu-item--lg{padding-right:2em;font-weight:700}.breadcrumbs{max-width:1024px;margin-left:auto;margin-right:auto;clear:both;margin-top:0;margin-bottom:0;padding-left:2em;padding-right:2em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.30s;animation-delay:0.30s}.breadcrumbs:after{content:" ";display:block;clear:both}.breadcrumbs::after{clear:both;content:"";display:table}@media (min-width: 64em){.breadcrumbs{padding-left:1em;padding-right:1em}}@media (min-width: 80em){.breadcrumbs{max-width:1280px}}.breadcrumbs ol{padding:0;list-style:none;font-size:.75em}@media (min-width: 64em){.breadcrumbs ol{width:83.05085%;float:right;margin-right:0}}@media (min-width: 80em){.breadcrumbs ol{padding-left:4.23729%}}.breadcrumbs li{display:inline}.bre
 adcrumbs .current{font-weight:bold}.pagination{clear:both;width:100%;float:left;margin-left:0;margin-right:0;clear:both;margin-top:1em;padding-top:1em}.pagination::after{clear:both;content:"";display:table}.pagination ul{margin:0;padding:0;list-style-type:none;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.pagination li{display:block;float:left;margin-left:-1px}.pagination li a{display:block;margin-bottom:0.25em;padding:0.5em 1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:14px;font-weight:bold;line-height:1.5;text-align:center;text-decoration:none;color:#9ba1a6;border:1px solid #bdc1c4;border-radius:0}.pagination li a:hover{color:#3e8296}.pagination li a.current{color:#fff;background:#7a8288}.pagination li a.disabled{color:#dee0e1;pointer-events:none;cursor:not-allowed}.pagination li:first-child{margi
 n-left:0}.pagination li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination--pager{display:block;padding:1em 2em;float:left;width:50%;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold;text-align:center;text-decoration:none;color:#52adc8;border:1px solid #bdc1c4;border-radius:4px}.pagination--pager:hover{color:#3e8296}.pagination--pager:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.pagination--pager:last-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.pagination--pager.disabled{color:#dee0e1;pointer-events:none;cursor:not-allowed}.page__content+.pagination,.page__meta+.pagination,.comment__date+.pagination,.page__share+.pagination,.page__comments+.pagination{margin-top:2em;padding-top:2em;border-top:1px sol
 id #f2f3f3}.greedy-nav{position:relative;min-width:250px;background:#fff}.greedy-nav a{display:block;margin:0 1rem;padding:0.5rem 0;color:#7a8288;text-decoration:none}.greedy-nav a:hover{color:#5c6266}.greedy-nav button{position:absolute;height:100%;right:0;padding:0 0.5rem;border:0;outline:none;background-color:#7a8288;color:#fff;cursor:pointer}.greedy-nav .visible-links{display:table}.greedy-nav .visible-links li{display:table-cell;vertical-align:middle}.greedy-nav .visible-links li:first-child{font-weight:bold}.greedy-nav .visible-links li:first-child a{margin-left:0}.greedy-nav .visible-links li:last-child a{margin-right:0}.greedy-nav .visible-links a{position:relative}.greedy-nav .visible-links a:before{content:"";position:absolute;left:0;bottom:0;height:4px;background:#bdc1c4;width:100%;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:scaleX(0) translate3d(0, 0, 0);-ms-transform:scaleX(0) translate3d(0, 0, 0);transform:scaleX(0) transla
 te3d(0, 0, 0)}.greedy-nav .visible-links a:hover:before{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1)}.greedy-nav .hidden-links{position:absolute;top:100%;right:0;margin-top:15px;padding:5px;border:1px solid #f2f3f3;border-radius:4px;background:#fff;box-shadow:0 0 10px rgba(0,0,0,0.25)}.greedy-nav .hidden-links a{margin:0;padding:10px 20px;font-size:1em}.greedy-nav .hidden-links a:hover{color:#5c6266;background:#dee0e1}.greedy-nav .hidden-links:before{content:"";position:absolute;top:-11px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#f2f3f3 transparent;display:block;z-index:0}.greedy-nav .hidden-links:after{content:"";position:absolute;top:-10px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;display:block;z-index:1}.greedy-nav .hidden-links li{display:block;border-bottom:1px solid #f2f3f3}.greedy-nav .hidden-links li:last-child{border-bottom:none}.nav__list{margin-bottom:1.5em}.na
 v__list input[type="checkbox"],.nav__list label{display:none}@media (max-width: 63.9375em){.nav__list label{position:relative;display:inline-block;padding:0.5em 2.5em 0.5em 1em;color:#7a8288;font-size:.75em;font-weight:bold;border:1px solid #bdc1c4;border-radius:4px;z-index:20;-webkit-transition:0.2s ease-out;transition:0.2s ease-out;cursor:pointer}.nav__list label:before,.nav__list label:after{content:'';position:absolute;right:1em;top:1.25em;width:0.75em;height:0.125em;line-height:1;background-color:#7a8288;transition:0.2s ease-out}.nav__list label:after{transform:rotate(90deg)}.nav__list label:hover{color:#fff;border-color:#7a8288;background-color:#333}.nav__list label:hover:before,.nav__list label:hover:after{background-color:#fff}.nav__list input:checked+label{color:white;background-color:#333}.nav__list input:checked+label:before,.nav__list input:checked+label:after{background-color:#fff}.nav__list label:hover:after{transform:rotate(90deg)}.nav__list input:checked+label:hover:
 after{transform:rotate(0)}.nav__list ul{margin-bottom:1em}.nav__list a{display:block;padding:0.25em 0}}@media (max-width: 63.9375em) and (min-width: 64em){.nav__list a{padding-top:0.125em;padding-bottom:0.125em}}@media (max-width: 63.9375em){.nav__list a:hover{text-decoration:underline}}.nav__list .nav__items{margin:0;font-size:1.25rem}.nav__list .nav__items a{color:inherit}.nav__list .nav__items .active{margin-left:-0.5em;padding-left:0.5em;padding-right:0.5em;color:#fff;font-weight:bold;background:#7a8288;border-radius:4px}.nav__list .nav__items .active:hover{color:#fff}@media (max-width: 63.9375em){.nav__list .nav__items{position:relative;max-height:0;opacity:0%;overflow:hidden;z-index:10;-webkit-transition:0.3s ease-in-out;transition:0.3s ease-in-out;-webkit-transform:translate(0, 10%);-ms-transform:translate(0, 10%);transform:translate(0, 10%)}}@media (max-width: 63.9375em){.nav__list input:checked ~ .nav__items{-webkit-transition:0.5s ease-in-out;transition:0.5s ease-in-out;ma
 x-height:9999px;overflow:visible;opacity:1;margin-top:1em;-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}}.nav__title{margin:0;padding:0.5rem 1rem;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold}.nav__sub-title{display:block;margin:0.5rem 0;padding:0.5rem 0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-transform:uppercase;border-bottom:1px solid #f2f3f3}.toc{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;color:#7a8288;text-transform:uppercase;letter-spacing:1px;background-color:#fff;border:1px solid #f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.toc .nav__title{color:#fff;font-size:.75em;background:#7a82
 88;border-top-left-radius:4px;border-top-right-radius:4px}.toc__menu{margin:0;padding:0;width:100%;list-style:none;font-size:0.8rem}.toc__menu a{display:block;padding:0.5rem 1rem;color:#7a8288;font-size:.6875em;font-weight:bold;line-height:1.5;border-bottom:1px solid #f2f3f3}.toc__menu a:hover{color:#000;background:#f2f3f3}.toc__menu>li:last-child a{border-bottom:none}.toc__menu li ul>li a{padding-left:2rem;font-weight:normal}.toc__menu li>ul li{display:none}@media (min-width: 48em){.toc__menu li>ul li{display:block}}.page__footer{clear:both;width:100%;float:left;margin-left:0;margin-right:0;clear:both;position:absolute;bottom:0;width:100%;clear:both;height:auto;margin-top:3em;color:#9ba1a6;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.45s;animation-delay:0.45s;background-color:#f2f3f3;border-top:1px solid #bdc1c4}.page__footer::after{clear:both;content:"";display:table}.page__footer footer{max-width:1024px;margin-left:auto;margin-right:auto;c
 lear:both;margin-top:2em;padding:0 1em 2em}.page__footer footer:after{content:" ";display:block;clear:both}.page__footer footer::after{clear:both;content:"";display:table}@media (min-width: 80em){.page__footer footer{max-width:1280px}}.page__footer a{color:inherit;text-decoration:none}.page__footer a:hover{text-decoration:underline}.page__footer .fa{color:#9ba1a6}.page__footer-copyright{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.6875em}.page__footer-follow ul{margin:0;padding:0;list-style-type:none}.page__footer-follow li{display:inline-block;padding-top:5px;padding-bottom:5px;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;text-transform:uppercase}.page__footer-follow li+li:before{content:"";padding-right:5px}.page__footer-follow a{padding-right:10px;font-weight:bold}div.highlighter-ro
 uge,figure.highlight{position:relative;margin-bottom:1em;font-family:Monaco,Consolas,"Lucida Console",monospace;font-size:.6875em;line-height:1.8;border:1px solid #f2f3f3;border-radius:4px;background-color:#fafafa;box-shadow:0 1px 1px rgba(0,0,0,0.125)}div.highlighter-rouge:before,figure.highlight:before{position:absolute;top:0;right:0;padding:0.5em;background-color:#f2f3f3;content:"\f121";font-family:"fontawesome" !important;line-height:1;text-transform:none;speak:none}div.highlighter-rouge .highlight,figure.highlight .highlight{margin:0;padding:1em}figure.highlight{padding-left:1em;padding-right:1em}.highlight table{font-size:1em;border:0}.highlight table td{padding:5px;border:0}.highlight table td.gutter{padding-right:1em;color:#bdc1c4}.highlight table pre{margin:0}.highlight pre{width:100%}.highlight .c{color:#93a1a1}.highlight .err{color:#586e75}.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l{color:#586e75}.highlight .n{color:#586e75}.highlight .o{color:#8
 59900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go{color:#586e75}.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:bold}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#22b3eb}.highlight .kn{color:#859900}.highlight .kp{color:#859900}.highlight .kr{color:#22b3eb}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m{color:#2aa198}.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#B58900}.highlight .nc{color:#22b3eb}.highlight .no{color:#cb4b16}.highlight .nd{color:#22b3eb}.highlight .ni{color:#cb4b16}.highlight .ne{color:#cb4b16}.highlight .nf{color:#22b3eb}.hi
 ghlight .nl{color:#586e75}.highlight .nn{color:#586e75}.highlight .nx{color:#586e75}.highlight .py{color:#586e75}.highlight .nt{color:#22b3eb}.highlight .nv{color:#22b3eb}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf{color:#2aa198}.highlight .mh{color:#2aa198}.highlight .mi{color:#2aa198}.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si{color:#2aa198}.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1{color:#2aa198}.highlight .ss{color:#2aa198}.highlight .bp{color:#22b3eb}.highlight .vc{color:#22b3eb}.highlight .vg{color:#22b3eb}.highlight .vi{color:#22b3eb}.highlight .il{color:#2aa198}form{margin:0 0 5px 0}form fieldset{margin-bottom:5px;padding:0;border-width:0}form legend{display:block;width:100%;margin-bottom:10px;*margin-left:-7px;padding:0;color:#494e52;border:0;bor
 der-bottom:1px solid #ccc;white-space:normal}form p{margin-bottom:5px / 2}form ul{list-style-type:none;margin:0 0 5px 0;padding:0}form br{display:none}label,input,button,select,textarea{vertical-align:baseline;*vertical-align:middle}input,button,select,textarea{box-sizing:border-box;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}label{display:block;margin-bottom:0.25em;color:#494e52;cursor:pointer}label small{font-size:.75em}label input,label textarea,label select{display:block}input,textarea,select{display:inline-block;width:100%;padding:0.25em;margin-bottom:0.5em;color:#494e52;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}input:hover,textarea:hover,select:hover{border-color:#bdc1c4}.input-mini{width:60px}.input-small{width:90px}input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-
 top:0;line-height:normal;cursor:pointer;border-radius:0;border:0 \9}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="image"]{border:0;box-shadow:none}input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:transparent;background-color:initial;box-shadow:none}input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;cursor:pointer;*overflow:visible}select,input[type="file"]{*margin-top:4px}select{width:auto;background-color:#fff}select[multiple],select[size]{height:auto}textarea{resize:vertical;height:auto;overflow:auto;vertical-align:top}input[type="hidden"]{display:none}.form{position:relative}.radio,.checkbox{padding-left:18px;font-weight:normal}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+
 .radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{opacity:0.5;cursor:not-allowed}input:focus,textarea:focus{border-color:#7a8288;outline:0;outline:thin dotted \9}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{box-shadow:none}.help-block,.help-inline{color:#52adc8}.help-block{display:block;margin-bottom:1em;line-height:1em}.help-inline{display:inline-block;vertical-align:middle;padding-left:5px}.form-inline input,.form-inline textarea,.form-inline select{display:inline-block;margin-bottom:0}.form-inline label{display:inline-block}.form-inline .radio,.form-inline .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form-search input,.form-search textarea,.form-search
  select{display:inline-block;margin-bottom:0}.form-search .search-query{padding-left:14px;padding-right:14px;margin-bottom:0;border-radius:14px}.form-search label{display:inline-block}.form-search .radio,.form-search .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form--loading:before{content:''}.form--loading .form__spinner{display:block}.form:before{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,0.7);z-index:10}.form__spinner{display:none;position:absolute;top:50%;left:50%;z-index:11}#goog-fixurl ul{list-style:none;margin-left:0;padding-left:0}#goog-fixurl ul li{list-style-type:none}#goog-wm-qt{width:auto;margin-right:10px;margin-bottom:20px;padding:8px 20px;display:inline-block;font-size:.75em;background-color:#fff;color:#000;border-width:2px !important;border-style:solid !impor
 tant;border-color:gray;border-radius:4px}#main{max-width:1024px;margin-left:auto;margin-right:auto;clear:both;margin-top:2em;padding-left:1em;padding-right:1em;animation:intro 0.3s both;animation-delay:0.35s}#main:after{content:" ";display:block;clear:both}#main::after{clear:both;content:"";display:table}@media (min-width: 80em){#main{max-width:1280px}}@media (min-width: 64em){.page{width:83.05085%;float:right;margin-right:0;padding-left:4.23729%;padding-right:16.94915%}}.page .page__inner-wrap{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page .page__inner-wrap .page__content,.page .page__inner-wrap .page__meta,.page .page__inner-wrap .comment__date,.page .page__inner-wrap .page__share{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__title{margin-top:0;line-height:1}.page__title+.page__meta,.page__title+.comment__date{margin-top:-0.5em}.page__lead{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue",
 "Lucida Grande",Arial,sans-serif;font-size:1.25em}.page__content h2{padding-bottom:0.5em;border-bottom:1px solid #f2f3f3}.page__content p,.page__content li,.page__content dl{font-size:1em}.page__content p{margin:0 0 1.3em}.page__content a{text-decoration:none}.page__content a:hover{text-decoration:underline}.page__content a:hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.page__content dt{margin-top:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}.page__content dd{margin-left:1em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__content .small{font-size:.75em}.page__content blockquote+.small{margin-top:-1.5em;padding-left:1.25rem}.page__hero{position:relative;margin-bottom:2em;clear:both;animation:intro 0.3s both;animation-delay:0.25s}.page__hero::after{clear:both;content:"";di
 splay:table}.page__hero--overlay{position:relative;margin-bottom:2em;padding:3em 0;clear:both;background-size:cover;background-repeat:no-repeat;background-position:center;animation:intro 0.3s both;animation-delay:0.25s}.page__hero--overlay::after{clear:both;content:"";display:table}.page__hero--overlay a{color:#fff}.page__hero--overlay .wrapper{padding-left:1em;padding-right:1em}@media (min-width: 80em){.page__hero--overlay .wrapper{max-width:1280px}}.page__hero--overlay .page__title,.page__hero--overlay .page__meta,.page__hero--overlay .comment__date,.page__hero--overlay .page__lead,.page__hero--overlay .btn,.page__hero--overlay #goog-wm-sb{color:#fff;text-shadow:1px 1px 4px rgba(0,0,0,0.5)}.page__hero--overlay .page__lead{max-width:768px}.page__hero--overlay .page__title{font-size:1.953em}@media (min-width: 37.5em){.page__hero--overlay .page__title{font-size:2.441em}}.page__hero-image{width:100%;height:auto;-ms-interpolation-mode:bicubic}.page__hero-caption{position:absolute;botto
 m:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:.6875em;background:#000;text-align:right;z-index:5;opacity:0.5;border-radius:4px 0 4px 0}@media (min-width: 64em){.page__hero-caption{padding:5px 10px}}.page__hero-caption a{color:#fff;text-decoration:none}.page__share{margin-top:2em;padding-top:1em;border-top:1px solid #f2f3f3}@media (max-width: 37.5em){.page__share .btn span,.page__share #goog-wm-sb span{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}}.page__share-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__meta,.comment__date{margin-top:2em;color:#9ba1a6;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__meta p,.comment__date p{margin:0}.page__meta a,.comment__date a{color:inherit}.page__meta-title{margin-bottom:10px;font-size:.75em;text-transform:u
 ppercase}.page__taxonomy .sep{display:none}.page__taxonomy strong{margin-right:10px}.page__taxonomy-item{display:inline-block;margin-right:5px;margin-bottom:8px;padding:5px 10px;text-decoration:none;border:1px solid #bdc1c4;border-radius:4px}.page__taxonomy-item:hover{text-decoration:none;color:#3e8296}.page__comments{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__comments-title{margin-top:2rem;margin-bottom:10px;padding-top:2rem;font-size:.75em;border-top:1px solid #f2f3f3;text-transform:uppercase}.page__comments-form{padding:1em;background:#f2f3f3;transition:all 0.2s ease-in-out}.page__comments-form.disabled input,.page__comments-form.disabled button,.page__comments-form.disabled textarea,.page__comments-form.disabled label{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.comment{clear:both;margin:1em 0}.comment::after{clear:both;content:"";display:table}.comment:not(:last-child){border-bottom:1px solid #f2f3f3}.co
 mment__avatar-wrapper{float:left;width:60px;height:60px}@media (min-width: 64em){.comment__avatar-wrapper{width:100px;height:100px}}.comment__avatar{width:40px;height:40px;border-radius:50%}@media (min-width: 64em){.comment__avatar{width:80px;height:80px;padding:5px;border:1px solid #f2f3f3}}.comment__content-wrapper{float:right;width:calc(100% - 60px)}@media (min-width: 64em){.comment__content-wrapper{width:calc(100% - 100px)}}.comment__author{margin:0}.comment__author a{text-decoration:none}.comment__date{margin:0}.comment__date a{text-decoration:none}.page__related{margin-top:2em;padding-top:1em;border-top:1px solid #f2f3f3;clear:both;float:left}.page__related::after{clear:both;content:"";display:table}@media (min-width: 64em){.page__related{margin-left:21.18644%}}.page__related a{color:inherit;text-decoration:none}.page__related-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.archive{margin-bottom:2em}@media (min-width: 48em){.archive{width:100%;float:left;mar
 gin-left:0;margin-right:0}}@media (min-width: 64em){.archive{width:83.05085%;float:right;margin-right:0;padding-left:4.23729%}}.archive a{color:inherit;text-decoration:none}.archive__subtitle{margin:1.414em 0 0;padding-bottom:0.5em;font-size:1em;color:#9ba1a6;border-bottom:1px solid #f2f3f3}.archive__subtitle+.list__item .archive__item-title{margin-top:0.5em}.archive__item-title{margin-bottom:0.25em;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.archive__item-title a+a{opacity:0.5}.page__content .archive__item-title{margin-top:1em;border-bottom:none}.archive__item-excerpt{margin-top:0;font-size:.75em}.archive__item-excerpt+p{text-indent:0}.archive__item-teaser{border-radius:4px;overflow:hidden}.archive__item-teaser img{max-width:60%}.archive__item:hover .archive__item-teaser{box-shadow:0 0 10px rgba(0,0,0,0.25)}.archive__item:hover .archive__item-title{text-decoration:underline}@media (min-width: 4
 8em){.list__item{padding-right:200px}}@media (min-width: 64em){.list__item{padding-right:300px}}@media (min-width: 80em){.list__item{padding-right:400px}}.list__item .page__meta,.list__item .comment__date{margin:0 0 4px}.grid__item{margin-bottom:2em}.grid__item .page__meta,.grid__item .comment__date{margin:0 0 4px}.grid__item .archive__item-title{margin-top:0.5em;font-size:1em}.grid__item .archive__item-excerpt{display:none}@media (min-width: 37.5em){.grid__item{width:48.97959%;float:left}.grid__item:nth-child(2n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(2n+2){margin-left:51.02041%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:200px}}@media (min-width: 48em){.grid__item{margin-left:0;margin-right:0;width:23.46939%;float:left}.grid__item:nth-child(4n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(4n+2){margin-left:25.5102%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+3)
 {margin-left:51.02041%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+4){margin-left:76.53061%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:120px}.grid__item .archive__item-excerpt{display:block;font-size:.75em}}.feature__wrapper{clear:both;margin-bottom:2em;border-bottom:1px solid #f2f3f3}.feature__wrapper::after{clear:both;content:"";display:table}.feature__item{margin-bottom:2em;font-size:1.25rem;height:80px;line-height:80px}@media (min-width: 37.5em){.feature__item{margin-bottom:0;width:32.20339%;float:left}.feature__item:nth-child(3n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.feature__item:nth-child(3n+2){margin-left:33.89831%;margin-right:-100%;clear:none}.feature__item:nth-child(3n+3){margin-left:67.79661%;margin-right:-100%;clear:none}.feature__item .feature__item-teaser{max-height:200px;overflow:hidden}}.feature__item--left{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item-
 -left .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--left .archive__item-teaser{width:40.67797%;float:left;margin-right:1.69492%}.feature__item--left .archive__item-body{width:57.62712%;float:right;margin-right:0;padding-left:4.23729%;padding-right:8.47458%}}.feature__item--right{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--right .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--right{text-align:right}.feature__item--right .archive__item-teaser{width:40.67797%;float:right;margin-left:1.69492%}.feature__item--right .archive__item-body{width:57.62712%;float:left;margin-left:0;padding-left:4.23729%;padding-right:8.47458%}}.feature__item--center{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item--center .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item--center{text-align:center}.feature__item--
 center .archive__item-teaser{margin:0 auto;width:40.67797%}.feature__item--center .archive__item-body{margin:0 auto;width:57.62712%}}.sidebar{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);clear:both;margin-bottom:1em}.sidebar::after{clear:both;content:"";display:table}@media (min-width: 64em){.sidebar{width:15.25424%;float:left;margin-right:1.69492%;opacity:0.75;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.sidebar:hover{opacity:1}}@media (min-width: 80em){.sidebar{padding-right:0}}.sidebar h2,.sidebar h3,.sidebar h4,.sidebar h5,.sidebar h6{margin-bottom:0;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.sidebar p,.sidebar li{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;line-height:1.5}.sidebar img{width:100%}.sidebar__right{margin-bottom:1e
 m}@media (min-width: 64em){.sidebar__right{position:relative;float:right;width:200px;margin-left:2.54237%;z-index:10}}@media (min-width: 80em){.sidebar__right{width:300px}}.author__avatar{display:table-cell;vertical-align:top;width:36px;height:36px}@media (min-width: 64em){.author__avatar{display:block;width:auto;height:auto}}.author__avatar img{max-width:110px;border-radius:50%}@media (min-width: 64em){.author__avatar img{padding:5px;border:1px solid #f2f3f3}}.author__content{display:table-cell;vertical-align:top;padding-left:15px;padding-right:25px;line-height:1}@media (min-width: 64em){.author__content{display:block;width:100%;padding-left:0;padding-right:0}}.author__name{margin:0}@media (min-width: 64em){.author__name{margin-top:10px;margin-bottom:10px}}.sidebar .author__name{font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em}.author__bio{margin:0}@media (min-width: 64em){.author__bio{
 margin-top:10px;margin-bottom:20px}}.author__urls-wrapper{position:relative;display:table-cell;vertical-align:middle;font-family:-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;z-index:10;position:relative;cursor:pointer}.author__urls-wrapper li:last-child a{margin-bottom:0}@media (min-width: 64em){.author__urls-wrapper{display:block}}.author__urls-wrapper button{margin-bottom:0}@media (min-width: 64em){.author__urls-wrapper button{display:none}}.author__urls{display:none;position:absolute;right:0;margin-top:15px;padding:10px;list-style-type:none;border:1px solid #f2f3f3;border-radius:4px;background:#fff;z-index:-1;box-shadow:0 0 10px rgba(0,0,0,0.25);cursor:default}@media (min-width: 64em){.author__urls{display:block;position:relative;margin:0;padding:0;border:0;background:transparent;box-shadow:none}}.author__urls:before{display:block;content:"";position:absolute;top:-11px;left:calc(50% - 10px);width:0;border-
 style:solid;border-width:0 10px 10px;border-color:#f2f3f3 transparent;z-index:0}@media (min-width: 64em){.author__urls:before{display:none}}.author__urls:after{display:block;content:"";position:absolute;top:-10px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;z-index:1}@media (min-width: 64em){.author__urls:after{display:none}}.author__urls li{white-space:nowrap}.author__urls a{display:block;margin-bottom:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;color:inherit;font-size:1em;text-decoration:none}.author__urls a:hover{text-decoration:underline}@media print{.masthead,.toc,.page__share,.page__related,.ads,.page__footer{display:none}}
++ */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.6.3");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.6.3") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.6.3") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.6.3") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;w
 idth:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotat
 e(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{po
 sition:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arro
 w-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content
 :""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-cir
 cle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:bef
 ore{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:befor
 e{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{co
 ntent:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-fil

<TRUNCATED>


[07/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
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>


[15/15] incubator-rocketmq-site git commit: Revert CSS

Posted by li...@apache.org.
Revert CSS


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/af2718af
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/tree/af2718af
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/diff/af2718af

Branch: refs/heads/asf-site
Commit: af2718af8b0f6e9cd7b40d9e3eae8cac3e9b7a87
Parents: 5e336bc 8be3859
Author: Li Zhanhui <li...@gmail.com>
Authored: Thu Jun 8 18:09:49 2017 +0800
Committer: Li Zhanhui <li...@gmail.com>
Committed: Thu Jun 8 18:09:49 2017 +0800

----------------------------------------------------------------------
 _sass/_archive.scss                             |  4 +-
 content/about/contact/index.html                |  2 +-
 content/about/rewards/index.html                |  2 +-
 content/about/team/index.html                   |  2 +-
 content/assets/css/main.css                     |  2 +-
 content/docs/batch-example/index.html           |  2 +-
 content/docs/best-practice-broker/index.html    |  2 +-
 content/docs/best-practice-consumer/index.html  |  2 +-
 content/docs/best-practice-namesvr/index.html   |  2 +-
 content/docs/best-practice-producer/index.html  |  2 +-
 content/docs/broadcast-example/index.html       |  2 +-
 content/docs/cli-admin-tool/index.html          |  2 +-
 content/docs/cluster-deployment/index.html      |  2 +-
 content/docs/code-guidelines/index.html         |  2 +-
 content/docs/core-concept/index.html            |  2 +-
 content/docs/create-pull-request/index.html     |  2 +-
 content/docs/documentation/index.html           |  2 +-
 content/docs/faq/index.html                     |  2 +-
 content/docs/filter-by-sql92-example/index.html |  2 +-
 content/docs/motivation/index.html              |  2 +-
 content/docs/order-example/index.html           |  2 +-
 content/docs/pull-request/index.html            |  2 +-
 content/docs/quick-start/index.html             |  2 +-
 content/docs/release-manual.html                |  2 +-
 content/docs/rmq-arc/index.html                 |  2 +-
 content/docs/rmq-deployment/index.html          |  2 +-
 content/docs/roadmap/index.html                 |  2 +-
 content/docs/schedule-example/index.html        |  2 +-
 content/docs/simple-example/index.html          |  2 +-
 content/dowloading/releases/index.html          |  2 +-
 content/feed.xml                                |  2 +-
 content/sitemap.xml                             | 56 ++++++++++----------
 32 files changed, 59 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/af2718af/content/about/contact/index.html
----------------------------------------------------------------------
diff --cc content/about/contact/index.html
index 1ea84e0,0000000..114fd3e
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-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--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="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 28, 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-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=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/af2718af/content/about/rewards/index.html
----------------------------------------------------------------------
diff --cc content/about/rewards/index.html
index d035e2c,0000000..b0e6434
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-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--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="June 08, 2017">
 +    <meta itemprop="dateModified" content="January 24, 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’s 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-24">January 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=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/af2718af/content/about/team/index.html
----------------------------------------------------------------------
diff --cc content/about/team/index.html
index dc84a36,0000000..078ea8b
mode 100644,000000..100644
--- a/content/about/team/index.html
+++ b/content/about/team/index.html
@@@ -1,543 -1,0 +1,543 @@@
 +<!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-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>
 +        
 +          
 +          
 +
 +          <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="June 08, 2017">
 +    <meta itemprop="dateModified" content="December 28, 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="/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>
 +    <tr>
 +      <td style="text-align: left"><img src="/assets/images/about/vsair.png" alt="vsair" /></td>
 +      <td style="text-align: left">vsair</td>
 +      <td style="text-align: left"><a href="https://github.com/vsair">@vsair</a></td>
 +      <td style="text-align: left">vsair@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-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=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>