rocketmq-commits mailing list archives

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

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



Mime
View raw message