Add SQL92 Filter Feature

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

Branch: refs/heads/asf-site
Commit: 3ee8692bedd91a6cc77b8f6b057d7843fdbc5710
Parents: 25f5879
Author: dongeforever <[email protected]>
Authored: Wed Apr 26 17:11:46 2017 +0800
Committer: dongeforever <[email protected]>
Committed: Wed Apr 26 17:11:46 2017 +0800

----------------------------------------------------------------------
 content/about/contact/index.html                |   4 +-
 content/about/rewards/index.html                |   4 +-
 content/about/team/index.html                   |   4 +-
 .../launch-rocketmq-code-marathon/index.html    |   3 +-
 content/archive-layout-with-content/index.html  |  14 +
 .../images/blog/filter_build_cq_apache.png      | Bin 0 -> 16104 bytes
 .../images/blog/filter_structure_apach.png      | Bin 0 -> 21027 bytes
 content/categories/index.html                   |  32 +
 content/collection-archive/index.html           |  23 +
 content/docs/batch-example/index.html           |  12 +-
 content/docs/best-practice-broker/index.html    |  14 +-
 content/docs/best-practice-consumer/index.html  |  12 +-
 content/docs/best-practice-namesvr/index.html   |  12 +-
 content/docs/best-practice-producer/index.html  |  12 +-
 content/docs/broadcast-example/index.html       |  12 +-
 content/docs/cli-admin-tool/index.html          |  12 +-
 content/docs/cluster-deployment/index.html      |  12 +-
 content/docs/code-guidelines/index.html         |  12 +-
 content/docs/core-concept/index.html            |  12 +-
 content/docs/documentation/index.html           |  12 +-
 content/docs/faq/index.html                     |  12 +-
 content/docs/filter-by-sql92-example/index.html | 713 +++++++++++++++++++
 content/docs/motivation/index.html              |  12 +-
 content/docs/order-example/index.html           |  12 +-
 content/docs/pull-request/index.html            |  12 +-
 content/docs/quick-start/index.html             |  12 +-
 content/docs/release-manual.html                |  12 +-
 content/docs/rmq-arc/index.html                 |  12 +-
 content/docs/rmq-deployment/index.html          |  12 +-
 content/docs/roadmap/index.html                 |  12 +-
 content/docs/schedule-example/index.html        |  12 +-
 content/docs/simple-example/index.html          |  14 +-
 content/dowloading/releases/index.html          |  12 +-
 content/feed.xml                                | 118 ++-
 .../index.html                                  | 622 ++++++++++++++++
 content/sitemap.xml                             |  14 +-
 content/tags/index.html                         |  80 +++
 content/year-archive/index.html                 |  28 +
 38 files changed, 1881 insertions(+), 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/about/contact/index.html
----------------------------------------------------------------------
diff --git a/content/about/contact/index.html b/content/about/contact/index.html
index 23fab7b..e0f39dc 100644
--- a/content/about/contact/index.html
+++ b/content/about/contact/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -212,7 +212,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="CONTACT">
     <meta itemprop="description" content="Contact.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 29, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/about/rewards/index.html
----------------------------------------------------------------------
diff --git a/content/about/rewards/index.html b/content/about/rewards/index.html
index 7030e5e..6203aad 100644
--- a/content/about/rewards/index.html
+++ b/content/about/rewards/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -212,7 +212,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="REWARDS">
     <meta itemprop="description" content="Rewards.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="January 25, 2017">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/about/team/index.html
----------------------------------------------------------------------
diff --git a/content/about/team/index.html b/content/about/team/index.html
index 6d6148e..fead92e 100644
--- a/content/about/team/index.html
+++ b/content/about/team/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -212,7 +212,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="TEAM">
     <meta itemprop="description" content="Project team.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 29, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/activity/launch-rocketmq-code-marathon/index.html
----------------------------------------------------------------------
diff --git a/content/activity/launch-rocketmq-code-marathon/index.html 
b/content/activity/launch-rocketmq-code-marathon/index.html
index 7604b3e..46f5689 100644
--- a/content/activity/launch-rocketmq-code-marathon/index.html
+++ b/content/activity/launch-rocketmq-code-marathon/index.html
@@ -445,7 +445,8 @@
 ">Previous</a>
     
     
-      <a href="#" class="pagination--pager disabled">Next</a>
+      <a href="/rocketmq/filter-messages-by-sql92-in-rocketmq/" 
class="pagination--pager" title="Filter Messages By SQL92 In RocketMQ
+">Next</a>
     
   </nav>
 

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/archive-layout-with-content/index.html
----------------------------------------------------------------------
diff --git a/content/archive-layout-with-content/index.html 
b/content/archive-layout-with-content/index.html
index 5ce7bde..397751c 100644
--- a/content/archive-layout-with-content/index.html
+++ b/content/archive-layout-with-content/index.html
@@ -869,6 +869,20 @@
     
     <h2 class="archive__item-title" itemprop="headline">
       
+        <a href="/docs/filter-by-sql92-example/" rel="permalink">Filter By 
SQL92 Example </a>
+      
+    </h2>
+    
+    <p class="archive__item-excerpt" itemprop="description">How to filter 
messages by SQL92 in Apache RocketMQ.
+</p>
+  </article>
+</div>
+
+<div class="list__item">
+  <article class="archive__item" itemscope="" 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
         <a href="/404.html" rel="permalink">Page Not Found</a>
       
     </h2>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/assets/images/blog/filter_build_cq_apache.png
----------------------------------------------------------------------
diff --git a/content/assets/images/blog/filter_build_cq_apache.png 
b/content/assets/images/blog/filter_build_cq_apache.png
new file mode 100644
index 0000000..1a0a29a
Binary files /dev/null and 
b/content/assets/images/blog/filter_build_cq_apache.png differ

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/assets/images/blog/filter_structure_apach.png
----------------------------------------------------------------------
diff --git a/content/assets/images/blog/filter_structure_apach.png 
b/content/assets/images/blog/filter_structure_apach.png
new file mode 100644
index 0000000..aae5172
Binary files /dev/null and 
b/content/assets/images/blog/filter_structure_apach.png differ

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/categories/index.html
----------------------------------------------------------------------
diff --git a/content/categories/index.html b/content/categories/index.html
index 93d4751..860a0c0 100644
--- a/content/categories/index.html
+++ b/content/categories/index.html
@@ -358,6 +358,12 @@
 
 
 
+<!-- If not equal to previous then it must be unique as sorted -->
+
+
+
+
+
 
 <!-- group_items -->
 
@@ -531,6 +537,32 @@ January 5th 2017
     
     <h2 class="archive__item-title" itemprop="headline">
       
+        <a href="/rocketmq/filter-messages-by-sql92-in-rocketmq/" 
rel="permalink">Filter Messages By SQL92 In RocketMQ
+</a>
+      
+    </h2>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  3 minute read
+</p>
+    
+    <p class="archive__item-excerpt" itemprop="description">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 requiremen...</p>
+  </article>
+</div>
+  
+    
+
+
+
+<div class="list__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
         <a href="/rocketmq/four-methods-to-feed-name-server-address-list/" 
rel="permalink">Four Methods to Feed Name Server Address List
 </a>
       

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/collection-archive/index.html
----------------------------------------------------------------------
diff --git a/content/collection-archive/index.html 
b/content/collection-archive/index.html
index 7b0a59f..3121eaf 100644
--- a/content/collection-archive/index.html
+++ b/content/collection-archive/index.html
@@ -780,6 +780,27 @@
     
     <h2 class="archive__item-title" itemprop="headline">
       
+        <a href="/docs/filter-by-sql92-example/" rel="permalink">Filter By 
SQL92 Example
+</a>
+      
+    </h2>
+    
+    <p class="archive__item-excerpt" itemprop="description">How to filter 
messages by SQL92 in Apache RocketMQ.
+</p>
+  </article>
+</div>
+    
+  
+    
+      
+
+
+
+<div class="list__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
         <a href="/docs/best-practice-broker/" rel="permalink">Best Practice 
For Broker
 </a>
       
@@ -892,6 +913,8 @@ and fulfill much of this responsibility through 
managing...</p>
   
     
   
+    
+  
 
   
     

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/batch-example/index.html
----------------------------------------------------------------------
diff --git a/content/docs/batch-example/index.html 
b/content/docs/batch-example/index.html
index 9fc68db..f6ac1a4 100644
--- a/content/docs/batch-example/index.html
+++ b/content/docs/batch-example/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="active">Batch 
Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Batch Example">
     <meta itemprop="description" content="How to use batch in Rocketmq">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/best-practice-broker/index.html
----------------------------------------------------------------------
diff --git a/content/docs/best-practice-broker/index.html 
b/content/docs/best-practice-broker/index.html
index 3d42454..06f98a0 100644
--- a/content/docs/best-practice-broker/index.html
+++ b/content/docs/best-practice-broker/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Best Practice For Broker">
     <meta itemprop="description" content="Some useful tips for users.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 25, 2016">
 
     <div class="page__inner-wrap">
@@ -493,7 +501,7 @@ If you just want to make it easy, you may only need a 
ASYNC_MASTER without SLAVE
       
   <nav class="pagination">
     
-      <a href="/docs/simple-example/" class="pagination--pager" title="Simple 
Message Example
+      <a href="/docs/filter-by-sql92-example/" class="pagination--pager" 
title="Filter By SQL92 Example
 ">Previous</a>
     
     

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/best-practice-consumer/index.html
----------------------------------------------------------------------
diff --git a/content/docs/best-practice-consumer/index.html 
b/content/docs/best-practice-consumer/index.html
index a27eaa7..06d6235 100644
--- a/content/docs/best-practice-consumer/index.html
+++ b/content/docs/best-practice-consumer/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Best Practice For Consumer">
     <meta itemprop="description" content="Some useful tips for users.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 25, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/best-practice-namesvr/index.html
----------------------------------------------------------------------
diff --git a/content/docs/best-practice-namesvr/index.html 
b/content/docs/best-practice-namesvr/index.html
index 0f663aa..bbe2709 100644
--- a/content/docs/best-practice-namesvr/index.html
+++ b/content/docs/best-practice-namesvr/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <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 fulfill much 
of this responsibility through managing topic route information.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 25, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/best-practice-producer/index.html
----------------------------------------------------------------------
diff --git a/content/docs/best-practice-producer/index.html 
b/content/docs/best-practice-producer/index.html
index d6ba729..5a87879 100644
--- a/content/docs/best-practice-producer/index.html
+++ b/content/docs/best-practice-producer/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Best Practice For Producer">
     <meta itemprop="description" content="Some useful tips for users.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 25, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/broadcast-example/index.html
----------------------------------------------------------------------
diff --git a/content/docs/broadcast-example/index.html 
b/content/docs/broadcast-example/index.html
index 9f2f977..7c173c3 100644
--- a/content/docs/broadcast-example/index.html
+++ b/content/docs/broadcast-example/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Broadcasting">
     <meta itemprop="description" content="How to send broadcast messages in 
Apache RocketMQ.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/cli-admin-tool/index.html
----------------------------------------------------------------------
diff --git a/content/docs/cli-admin-tool/index.html 
b/content/docs/cli-admin-tool/index.html
index 124f34b..4500b7f 100644
--- a/content/docs/cli-admin-tool/index.html
+++ b/content/docs/cli-admin-tool/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="CLI Admin Tool">
     <meta itemprop="description" content="RocketMQ provides a CLI admin tool 
belt to query, manage and diagnose various issues.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 17, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/cluster-deployment/index.html
----------------------------------------------------------------------
diff --git a/content/docs/cluster-deployment/index.html 
b/content/docs/cluster-deployment/index.html
index f76c47c..d19e541 100644
--- a/content/docs/cluster-deployment/index.html
+++ b/content/docs/cluster-deployment/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Cluster Configuration and Deployment">
     <meta itemprop="description" content="Prerequisite">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 17, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/code-guidelines/index.html
----------------------------------------------------------------------
diff --git a/content/docs/code-guidelines/index.html 
b/content/docs/code-guidelines/index.html
index 14c1dc5..4f6da6a 100644
--- a/content/docs/code-guidelines/index.html
+++ b/content/docs/code-guidelines/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Coding Guidelines">
     <meta itemprop="description" content="Apache RocketMQ Coding Guidelines">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 30, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/core-concept/index.html
----------------------------------------------------------------------
diff --git a/content/docs/core-concept/index.html 
b/content/docs/core-concept/index.html
index 91dc88f..58ff608 100644
--- a/content/docs/core-concept/index.html
+++ b/content/docs/core-concept/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Core Concept">
     <meta itemprop="description" content="">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 17, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/documentation/index.html
----------------------------------------------------------------------
diff --git a/content/docs/documentation/index.html 
b/content/docs/documentation/index.html
index f22a3dd..76564b5 100644
--- a/content/docs/documentation/index.html
+++ b/content/docs/documentation/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Documentation">
     <meta itemprop="description" content="Apache RocketMQ Documentation">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="March 02, 2017">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/faq/index.html
----------------------------------------------------------------------
diff --git a/content/docs/faq/index.html b/content/docs/faq/index.html
index 23553ac..7d86fc5 100644
--- a/content/docs/faq/index.html
+++ b/content/docs/faq/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Frequently Asked Questions">
     <meta itemprop="description" content="The following questions are 
frequently asked with regard to the RocketMQ project in general. If you have 
further questions, make sure to consult the documentation or ask the 
community.General1. Why create rocketmq project instead of selecting other 
products?In some cases, slower consumers can slow down the producers. We tried 
our best efforts to handle this problems through throttling, circuit breaker or 
degradation, but it cannot scale out gracefully. So we begin to focus on the 
popular messaging solution Kafka at that time. Unfortunately, Kafka can not 
meet our requirements such as low latency and high reliability. So we decided 
to innovate a new messaging middleware to handle a broad set of use cases, 
ranging from traditional publish/subscribe scenario to demandingly high volume 
realtime transaction system that tolerates no message loss.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 28, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/filter-by-sql92-example/index.html
----------------------------------------------------------------------
diff --git a/content/docs/filter-by-sql92-example/index.html 
b/content/docs/filter-by-sql92-example/index.html
new file mode 100644
index 0000000..bff2682
--- /dev/null
+++ b/content/docs/filter-by-sql92-example/index.html
@@ -0,0 +1,713 @@
+<!doctype html>
+<html lang="en" class="no-js">
+  <head>
+    <meta charset="utf-8">
+
+<!-- begin SEO -->
+
+
+
+
+
+
+
+
+
+<title>Filter By SQL92 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 By SQL92 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 By SQL92 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-04-26T17:11:09+08:00">
+
+
+
+
+
+
+
+
+  <script type="application/ld+json">
+    {
+      "@context" : "http://schema.org";,
+      "@type" : "Person",
+      "name" : "Apache RocketMQ",
+      "url" : null,
+      "sameAs" : null
+    }
+  </script>
+
+
+
+  <meta name="google-site-verification" 
content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" />
+
+
+  <meta name="baidu-site-verification" content="wD06EbDRkQ" />
+
+
+
+
+<!-- end SEO -->
+
+
+<link href="/feed.xml" type="application/atom+xml" rel="alternate" 
title="Apache RocketMQ Feed">
+
+<!-- http://t.co/dKP3o1e -->
+<meta name="HandheldFriendly" content="True">
+<meta name="MobileOptimized" content="320">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<script>
+  document.documentElement.className = 
document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
+</script>
+
+<!-- For all browsers -->
+<link rel="stylesheet" href="/assets/css/main.css">
+
+<meta http-equiv="cleartype" content="on">
+    <!-- start custom head snippets -->
+
+<!-- insert favicons. use http://realfavicongenerator.net/ -->
+
+<!-- end custom head snippets -->
+  </head>
+
+  <body class="layout--single">
+
+    <!--[if lt IE 9]>
+<div class="notice--danger align-center" style="margin: 0;">You are using an 
<strong>outdated</strong> browser. Please <a 
href="http://browsehappy.com/";>upgrade your browser</a> to improve your 
experience.</div>
+<![endif]-->
+    <div class="masthead">
+  <div class="masthead__inner-wrap">
+    <div class="masthead__menu">
+      <nav id="site-nav" class="greedy-nav">
+        <button><div class="navicon"></div></button>
+        <ul class="visible-links">
+          <li class="masthead__menu-item masthead__menu-item--lg"><a 
href="/">Apache RocketMQ</a></li>
+          
+            
+            <li class="masthead__menu-item"><a 
href="/docs/quick-start/">Documentation</a></li>
+          
+            
+            <li class="masthead__menu-item"><a 
href="/year-archive/">Blog</a></li>
+          
+            
+            <li class="masthead__menu-item"><a 
href="/community/">Community</a></li>
+          
+            
+            <li class="masthead__menu-item"><a 
href="/customer/">Customer</a></li>
+          
+            
+            <li class="masthead__menu-item"><a 
href="/about/team/">About</a></li>
+          
+        </ul>
+        <ul class="hidden-links hidden"></ul>
+      </nav>
+    </div>
+  </div>
+</div>
+
+    
+
+
+
+<div id="main" role="main">
+  
+  <div class="sidebar sticky">
+  
+  
+    
+      
+      
+      
+    
+    
+      
+
+<nav class="nav__list">
+  
+  <input id="ac-toc" name="accordion-toc" type="checkbox" />
+  <label for="ac-toc">Toggle Menu</label>
+  <ul class="nav__items">
+    
+      <li>
+        
+          <span class="nav__sub-title">User Guide</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/motivation/" class="">Why RocketMQ</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/simple-example/" class="">Simple 
Example</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/order-example/" class="">Order Example</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/broadcast-example/" class="">Broadcasting 
Example</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/schedule-example/" class="">Schedule 
Example</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="active">Filter 
By SQL92 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="Filter By SQL92 Example">
+    <meta itemprop="description" content="How to filter messages by SQL92 in 
Apache RocketMQ.">
+    <meta itemprop="datePublished" content="April 26, 2017">
+    <meta itemprop="dateModified" content="April 27, 2017">
+
+    <div class="page__inner-wrap">
+      
+        <header>
+          <h1 class="page__title" itemprop="headline">Filter By SQL92 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="#principle" id="markdown-toc-principle">Principle</a></li>
+  <li><a href="#grammars" id="markdown-toc-grammars">Grammars</a></li>
+  <li><a href="#interface" id="markdown-toc-interface">Interface</a></li>
+  <li><a href="#examples" id="markdown-toc-examples">Examples</a></li>
+</ul>
+
+  </nav>
+</aside>
+
+<p>In most cases, tag is simple and useful to select message as 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>
+
+<p>Consumer will recieve messages that contains TAGA or TAGB or TAGC. But the 
limitation is that one message only could has one tag, this may be not suitable 
for more sophisticated scenarios.At this time, you could use sql expression to 
select messages.</p>
+
+<h3 id="principle">Principle</h3>
+
+<p>SQL feature could do some calculation through the properties you put in 
messages when sending. Under the grammars defined by RocketMQ, you can 
implement some interesting logic as you want. 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. Not 
enough ? 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>, logical <code 
class="highlighter-rouge">OR</code>, logical <code 
class="highlighter-rouge">NOT</code>;</li>
+</ol>
+
+<p>Constant type are:</p>
+
+<ol>
+  <li>Numeric, like 123, 3.1415;</li>
+  <li>Character, like ‘abc’, must be maked 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="interface">Interface</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="examples">Examples</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="k">try</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="o">}</span> <span class="k">catch</span> <span 
class="o">(</span><span class="n">MQClientException</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="k">return</span><span class="o">;</span>
+<span class="o">}</span>
+
+<span class="n">Message</span> <span class="n">msg</span> <span 
class="o">=</span> <span class="k">new</span> <span 
class="n">Message</span><span class="o">(</span><span 
class="s">"TopicTest"</span><span class="o">,</span>
+    <span class="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>
+
+<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="k">try</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="o">}</span> <span class="k">catch</span> <span 
class="o">(</span><span class="n">MQClientException</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="k">return</span><span class="o">;</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-27">April 27, 
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 By 
SQL92 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/3ee8692b/content/docs/motivation/index.html
----------------------------------------------------------------------
diff --git a/content/docs/motivation/index.html 
b/content/docs/motivation/index.html
index a4d761a..6352b95 100644
--- a/content/docs/motivation/index.html
+++ b/content/docs/motivation/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Motivation">
     <meta itemprop="description" content="In the early stages, we constructed 
our distributed messaging middleware on the basis of ActiveMQ 5.x(less than 
5.3). Our international business uses it for async communication, search, 
social network activity stream, data pipeline, even in our trade order process. 
As our trade business throughput rises more and more inconceivably, pressure 
originating from our messaging cluster also become more and more obvious.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 17, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/order-example/index.html
----------------------------------------------------------------------
diff --git a/content/docs/order-example/index.html 
b/content/docs/order-example/index.html
index daff296..75d4985 100644
--- a/content/docs/order-example/index.html
+++ b/content/docs/order-example/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Order Message">
     <meta itemprop="description" content="How to send and receive ordered 
messages in Apache RocketMQ.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/pull-request/index.html
----------------------------------------------------------------------
diff --git a/content/docs/pull-request/index.html 
b/content/docs/pull-request/index.html
index 98d7870..9e06910 100644
--- a/content/docs/pull-request/index.html
+++ b/content/docs/pull-request/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Best Practice in Pull Request">
     <meta itemprop="description" content="This page guides you through Git 
setup and contribution process.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 25, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/quick-start/index.html
----------------------------------------------------------------------
diff --git a/content/docs/quick-start/index.html 
b/content/docs/quick-start/index.html
index 4048506..bdb5dbf 100644
--- a/content/docs/quick-start/index.html
+++ b/content/docs/quick-start/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Quick Start">
     <meta itemprop="description" content="How to quickly install and setup 
Apache RocketMQ.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="December 30, 2016">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/release-manual.html
----------------------------------------------------------------------
diff --git a/content/docs/release-manual.html b/content/docs/release-manual.html
index 3f2477f..71edeb7 100644
--- a/content/docs/release-manual.html
+++ b/content/docs/release-manual.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Release Manual">
     <meta itemprop="description" content="Apache RocketMQ Release Manual">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="February 08, 2017">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/rmq-arc/index.html
----------------------------------------------------------------------
diff --git a/content/docs/rmq-arc/index.html b/content/docs/rmq-arc/index.html
index c2f9940..a6d0871 100644
--- a/content/docs/rmq-arc/index.html
+++ b/content/docs/rmq-arc/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="RocketMQ Architecture">
     <meta itemprop="description" content="The main Architecture of Apache 
RocketMQ.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/rmq-deployment/index.html
----------------------------------------------------------------------
diff --git a/content/docs/rmq-deployment/index.html 
b/content/docs/rmq-deployment/index.html
index fc979a3..446ea26 100644
--- a/content/docs/rmq-deployment/index.html
+++ b/content/docs/rmq-deployment/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Deployment">
     <meta itemprop="description" content="How to deploy the Apache RocketMQ.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/roadmap/index.html
----------------------------------------------------------------------
diff --git a/content/docs/roadmap/index.html b/content/docs/roadmap/index.html
index 0dbe02c..549fef6 100644
--- a/content/docs/roadmap/index.html
+++ b/content/docs/roadmap/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="The RoadMap of Apache RocketMQ">
     <meta itemprop="description" content="4.1.0~4.3.0-incubating RoadMap:">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="March 08, 2017">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/schedule-example/index.html
----------------------------------------------------------------------
diff --git a/content/docs/schedule-example/index.html 
b/content/docs/schedule-example/index.html
index 36cd535..e2df48f 100644
--- a/content/docs/schedule-example/index.html
+++ b/content/docs/schedule-example/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Schedule example">
     <meta itemprop="description" content="How to use schedule component to 
reduce pull in RocketMQ.">
-    <meta itemprop="datePublished" content="April 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/docs/simple-example/index.html
----------------------------------------------------------------------
diff --git a/content/docs/simple-example/index.html 
b/content/docs/simple-example/index.html
index a55abfe..9550a0e 100644
--- a/content/docs/simple-example/index.html
+++ b/content/docs/simple-example/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <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="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">
@@ -655,7 +663,7 @@ such as log collection.</p>
 ">Previous</a>
     
     
-      <a href="/docs/best-practice-broker/" class="pagination--pager" 
title="Best Practice For Broker
+      <a href="/docs/filter-by-sql92-example/" class="pagination--pager" 
title="Filter By SQL92 Example
 ">Next</a>
     
   </nav>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/dowloading/releases/index.html
----------------------------------------------------------------------
diff --git a/content/dowloading/releases/index.html 
b/content/dowloading/releases/index.html
index 42c59a8..6f190bb 100644
--- a/content/dowloading/releases/index.html
+++ b/content/dowloading/releases/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-04-25T01:06:24+08:00">
+  <meta property="article:published_time" content="2017-04-26T17:11:09+08:00">
 
 
 
@@ -233,6 +233,14 @@
 
             <li><a href="/docs/batch-example/" class="">Batch Example</a></li>
           
+            
+            
+
+            
+            
+
+            <li><a href="/docs/filter-by-sql92-example/" class="">Filter By 
SQL92 Example</a></li>
+          
         </ul>
         
       </li>
@@ -421,7 +429,7 @@
   <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 25, 2017">
+    <meta itemprop="datePublished" content="April 26, 2017">
     <meta itemprop="dateModified" content="February 21, 2017">
 
     <div class="page__inner-wrap">

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/3ee8692b/content/feed.xml
----------------------------------------------------------------------
diff --git a/content/feed.xml b/content/feed.xml
index 9ef2f14..41553ca 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -1,4 +1,120 @@
-<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xml" 
href="/feed.xslt.xml"?><feed xmlns="http://www.w3.org/2005/Atom";><generator 
uri="http://jekyllrb.com"; version="3.3.1">Jekyll</generator><link 
href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" 
rel="alternate" type="text/html" 
/><updated>2017-04-25T01:06:24+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;[email protected]&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, &quo
 t;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>[email protected]</email><uri>http://incubator.staging.apache.org/projects/rocketmq.html</uri></author><entry><title
 type="html">Launch The Second RocketMQ Code Marathon</title><link 
href="/activity/launch-rocketmq-code-marathon/" rel="alternate" 
type="text/html" title="Launch The Second RocketMQ Co
 de Marathon" 
/><published>2017-03-31T00:00:00+08:00</published><updated>2017-03-31T00:00:00+08:00</updated><id>/activity/launch-rocketmq-code-marathon</id><content
 type="html" 
xml:base="/activity/launch-rocketmq-code-marathon/">&lt;p&gt;&lt;img 
src=&quot;/assets/images/blog/banner.jpg&quot; alt=&quot;Banner&quot; 
/&gt;&lt;/p&gt;
+<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xml" 
href="/feed.xslt.xml"?><feed xmlns="http://www.w3.org/2005/Atom";><generator 
uri="http://jekyllrb.com"; version="3.3.1">Jekyll</generator><link 
href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" 
rel="alternate" type="text/html" 
/><updated>2017-04-26T17:11:09+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;[email protected]&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, &quo
 t;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>[email protected]</email><uri>http://incubator.staging.apache.org/projects/rocketmq.html</uri></author><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 I
 n 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-rouge&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;[email protected]&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&qu
 ot;=&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>[email protected]</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</upda
 ted><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;
 

Reply via email to