This is an automated email from the ASF dual-hosted git repository.

vongosling pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/rocketmq-site.git

commit 4f129ce3f703cf95fdb2ce4b3faac36f5f2d6404
Author: vongosling <[email protected]>
AuthorDate: Fri Jul 13 15:57:07 2018 +0800

    Publish the transactional wiki
---
 content/about/contact/index.html                   |   4 +-
 content/about/rewards/index.html                   |   4 +-
 content/about/team/index.html                      |   4 +-
 content/archive-layout-with-content/index.html     |  14 ++
 .../images/blog/checking-transactional-message.png | Bin 0 -> 88792 bytes
 .../images/blog/sending-transactional-message.png  | Bin 0 -> 90913 bytes
 .../images/blog/transaction-execute-flow.png       | Bin 0 -> 50469 bytes
 .../images/blog/transaction-outline-design.png     | Bin 0 -> 53166 bytes
 content/categories/index.html                      |  43 ++++
 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/create-pull-request/index.html        |  12 +-
 content/docs/documentation/index.html              |  12 +-
 content/docs/faq/index.html                        |  12 +-
 content/docs/filter-by-sql92-example/index.html    |  12 +-
 content/docs/how-to-contribute/index.html          |  14 +-
 content/docs/logappender-example/index.html        |  12 +-
 content/docs/motivation/index.html                 |  12 +-
 content/docs/openmessaging-example/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             |  12 +-
 content/docs/system-config/index.html              |  12 +-
 .../index.html                                     | 230 +++++++++++++--------
 content/dowloading/releases/index.html             |  12 +-
 content/feed.xml                                   | 119 ++++++-----
 .../release_notes/release-notes-4.2.0/index.html   |   3 +-
 .../index.html                                     | 186 +++++++----------
 content/sitemap.xml                                |  75 ++++---
 content/tags/index.html                            | 145 +++++++++++++
 content/year-archive/index.html                    |  42 ++++
 46 files changed, 898 insertions(+), 346 deletions(-)

diff --git a/content/about/contact/index.html b/content/about/contact/index.html
index e23c817..4367057 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 29, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/about/rewards/index.html b/content/about/rewards/index.html
index 278a1ad..359e2d7 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="January 25, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/about/team/index.html b/content/about/team/index.html
index 76a3532..58b914d 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 29, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/archive-layout-with-content/index.html 
b/content/archive-layout-with-content/index.html
index 9c367c2..6b983ec 100644
--- a/content/archive-layout-with-content/index.html
+++ b/content/archive-layout-with-content/index.html
@@ -937,6 +937,20 @@
     
     <h2 class="archive__item-title" itemprop="headline">
       
+        <a href="/docs/transaction-example/" rel="permalink">Transaction 
example</a>
+      
+    </h2>
+    
+    <p class="archive__item-excerpt" itemprop="description">How to use 
transactional component to implement eventual consistency in RocketMQ.
+</p>
+  </article>
+</div>
+
+<div class="list__item">
+  <article class="archive__item" itemscope="" 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
         <a href="/404.html" rel="permalink">Page Not Found</a>
       
     </h2>
diff --git a/content/assets/images/blog/checking-transactional-message.png 
b/content/assets/images/blog/checking-transactional-message.png
new file mode 100644
index 0000000..c47424b
Binary files /dev/null and 
b/content/assets/images/blog/checking-transactional-message.png differ
diff --git a/content/assets/images/blog/sending-transactional-message.png 
b/content/assets/images/blog/sending-transactional-message.png
new file mode 100644
index 0000000..38778c7
Binary files /dev/null and 
b/content/assets/images/blog/sending-transactional-message.png differ
diff --git a/content/assets/images/blog/transaction-execute-flow.png 
b/content/assets/images/blog/transaction-execute-flow.png
new file mode 100644
index 0000000..89dd672
Binary files /dev/null and 
b/content/assets/images/blog/transaction-execute-flow.png differ
diff --git a/content/assets/images/blog/transaction-outline-design.png 
b/content/assets/images/blog/transaction-outline-design.png
new file mode 100644
index 0000000..40df271
Binary files /dev/null and 
b/content/assets/images/blog/transaction-outline-design.png differ
diff --git a/content/categories/index.html b/content/categories/index.html
index 673046d..8a2c4dc 100644
--- a/content/categories/index.html
+++ b/content/categories/index.html
@@ -388,6 +388,12 @@
 
 
 
+<!-- If not equal to previous then it must be unique as sorted -->
+
+
+
+
+
 
 <!-- group_items -->
 
@@ -615,6 +621,43 @@ January 5th 2017
     
     <h2 class="archive__item-title" itemprop="headline">
       
+        <a href="/rocketmq/the-design-of-transactional-message/" 
rel="permalink">The Design Of Transactional Message
+</a>
+      
+    </h2>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  1 minute read
+</p>
+    
+    <p class="archive__item-excerpt" itemprop="description">
+
+     On This Page
+
+  Concept Introduction
+
+
+  
+
+Concept Introduction
+
+</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/Field-Report-Meetup-Beijing/" rel="permalink">Field 
Report of Apache RocketMQ Meetup Beijing
 </a>
       
diff --git a/content/collection-archive/index.html 
b/content/collection-archive/index.html
index 3c8c0f7..adc6f72 100644
--- a/content/collection-archive/index.html
+++ b/content/collection-archive/index.html
@@ -888,6 +888,27 @@ The table below shows the supported jre environment for 
components of each relea
     
     <h2 class="archive__item-title" itemprop="headline">
       
+        <a href="/docs/transaction-example/" rel="permalink">Transaction 
example
+</a>
+      
+    </h2>
+    
+    <p class="archive__item-excerpt" itemprop="description">How to use 
transactional component to implement eventual consistency in RocketMQ.
+</p>
+  </article>
+</div>
+    
+  
+    
+      
+
+
+
+<div class="list__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
         <a href="/docs/best-practice-broker/" rel="permalink">Best Practice 
For Broker
 </a>
       
@@ -1032,6 +1053,8 @@ and the coordination is mainly achieved through 
managing...</p>
   
     
   
+    
+  
 
   
     
diff --git a/content/docs/batch-example/index.html 
b/content/docs/batch-example/index.html
index be54c6b..2bc774b 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/best-practice-broker/index.html 
b/content/docs/best-practice-broker/index.html
index c2351ec..2c3efe0 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 25, 2016">
 
     <div class="page__inner-wrap">
@@ -546,7 +554,7 @@ If you just want to make it easy, you may only need a 
ASYNC_MASTER without SLAVE
       
   <nav class="pagination">
     
-      <a href="/docs/how-to-contribute/" class="pagination--pager" title="How 
To Contribute
+      <a href="/docs/transaction-example/" class="pagination--pager" 
title="Transaction example
 ">Previous</a>
     
     
diff --git a/content/docs/best-practice-consumer/index.html 
b/content/docs/best-practice-consumer/index.html
index 094d76e..8ff51c3 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 25, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/best-practice-namesvr/index.html 
b/content/docs/best-practice-namesvr/index.html
index 889565e..af71039 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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 the 
coordination is mainly achieved through managing topic routing information.">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 25, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/best-practice-producer/index.html 
b/content/docs/best-practice-producer/index.html
index 2bab4fd..e34590e 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 25, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/broadcast-example/index.html 
b/content/docs/broadcast-example/index.html
index 28c04f0..86d2e09 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/cli-admin-tool/index.html 
b/content/docs/cli-admin-tool/index.html
index 7b85d22..cc0ee58 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 17, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/cluster-deployment/index.html 
b/content/docs/cluster-deployment/index.html
index 541520a..cb77e30 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 17, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/code-guidelines/index.html 
b/content/docs/code-guidelines/index.html
index c47c229..e9002df 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 30, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/core-concept/index.html 
b/content/docs/core-concept/index.html
index c4dfe50..ad41513 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Core Concept">
     <meta itemprop="description" content="">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 17, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/create-pull-request/index.html 
b/content/docs/create-pull-request/index.html
index 7c11f53..ddc88bc 100644
--- a/content/docs/create-pull-request/index.html
+++ b/content/docs/create-pull-request/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="How to create Pull Request">
     <meta itemprop="description" content="This page guides you through the 
pull request creation process.">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 25, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/documentation/index.html 
b/content/docs/documentation/index.html
index fcb491e..86757fc 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="March 02, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/faq/index.html b/content/docs/faq/index.html
index 1082de2..b2690c9 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="active">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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.General1. Why 
did we create rocketmq project instead of selecting other products?Please refer 
to Why RocketMQ">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 28, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/filter-by-sql92-example/index.html 
b/content/docs/filter-by-sql92-example/index.html
index eee6360..51e3600 100644
--- a/content/docs/filter-by-sql92-example/index.html
+++ b/content/docs/filter-by-sql92-example/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Filter Example">
     <meta itemprop="description" content="How to filter messages by SQL92 in 
Apache RocketMQ.">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="April 27, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/how-to-contribute/index.html 
b/content/docs/how-to-contribute/index.html
index 4a0cd28..66f5d8b 100644
--- a/content/docs/how-to-contribute/index.html
+++ b/content/docs/how-to-contribute/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="How To Contribute">
     <meta itemprop="description" content="Apache RocketMQ is developed by an 
open and friendly community. Everybody is cordially welcome to join the 
community and contribute to Apache RocketMQ. There are several ways to interact 
with the community and to contribute to RocketMQ including asking questions, 
filing bug reports, proposing new features, joining discussions on the mailing 
lists, contributing code or documentation, improving the website, or testing 
release candidates.">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="August 24, 2017">
 
     <div class="page__inner-wrap">
@@ -652,7 +660,7 @@ Please follow the Improve the <a 
href="https://github.com/apache/rocketmq-site";>
 ">Previous</a>
     
     
-      <a href="/docs/best-practice-broker/" class="pagination--pager" 
title="Best Practice For Broker
+      <a href="/docs/transaction-example/" class="pagination--pager" 
title="Transaction example
 ">Next</a>
     
   </nav>
diff --git a/content/docs/logappender-example/index.html 
b/content/docs/logappender-example/index.html
index 4df80c5..9838a79 100644
--- a/content/docs/logappender-example/index.html
+++ b/content/docs/logappender-example/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Logappender Example">
     <meta itemprop="description" content="How to use logappender in RocketMQ.">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="June 09, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/motivation/index.html 
b/content/docs/motivation/index.html
index a05221e..38da9be 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Motivation">
     <meta itemprop="description" content="At early stages, we constructed our 
distributed messaging middleware based on ActiveMQ 5.x(prior to 5.3). Our 
multinational business uses it for asynchronous communication, search, social 
network activity stream, data pipeline,even in its trade processes. As our 
trade business throughput rises, pressure originating from our messaging 
clusteralso becomes urgent.">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 17, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/openmessaging-example/index.html 
b/content/docs/openmessaging-example/index.html
index da5e395..6b0bd35 100644
--- a/content/docs/openmessaging-example/index.html
+++ b/content/docs/openmessaging-example/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="OpenMessaging Example">
     <meta itemprop="description" content="How to use OpenMessaging in 
RocketMQ.">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="June 09, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/order-example/index.html 
b/content/docs/order-example/index.html
index 30c1470..7a99c79 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/pull-request/index.html 
b/content/docs/pull-request/index.html
index 80d61b7..0cc5c58 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="How to manage Pull Request">
     <meta itemprop="description" content="This page guides you through Git 
setup and contribution process.">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 25, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/quick-start/index.html 
b/content/docs/quick-start/index.html
index a236ebd..bc876f3 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="December 30, 2016">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/release-manual.html b/content/docs/release-manual.html
index cde880d..ece4eb5 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="February 08, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/rmq-arc/index.html b/content/docs/rmq-arc/index.html
index adfe6ce..c0613e0 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/rmq-deployment/index.html 
b/content/docs/rmq-deployment/index.html
index 50c781d..3dcf6e7 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/roadmap/index.html b/content/docs/roadmap/index.html
index 9e96b74..97af5fc 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="March 08, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/schedule-example/index.html 
b/content/docs/schedule-example/index.html
index edf41c5..ec948cb 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/simple-example/index.html 
b/content/docs/simple-example/index.html
index 667fbe8..e309f0d 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,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="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="April 25, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/system-config/index.html 
b/content/docs/system-config/index.html
index 60b074a..352dcd6 100644
--- a/content/docs/system-config/index.html
+++ b/content/docs/system-config/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="RocketMQ JVM/Linux Configuration">
     <meta itemprop="description" content="This is an introduction for 
configuring RocketMQ broker JVM/OS parameters. It points out certain specified 
configurations that should be thinking about before deploying RocketMQ 
cluster.">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="July 15, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/docs/logappender-example/index.html 
b/content/docs/transaction-example/index.html
similarity index 60%
copy from content/docs/logappender-example/index.html
copy to content/docs/transaction-example/index.html
index 4df80c5..40ca007 100644
--- a/content/docs/logappender-example/index.html
+++ b/content/docs/transaction-example/index.html
@@ -13,30 +13,30 @@
 
 
 
-<title>Logappender Example - Apache RocketMQ</title>
+<title>Transaction example - Apache RocketMQ</title>
 
 
 
 
-<meta name="description" content="How to use logappender in RocketMQ.">
+<meta name="description" content="How to use transactional component to 
implement eventual consistency in RocketMQ.">
 
 
 
 
 <meta property="og:locale" content="en">
 <meta property="og:site_name" content="Apache RocketMQ">
-<meta property="og:title" content="Logappender Example">
+<meta property="og:title" content="Transaction example">
 
 
 
 
-  <meta property="og:description" content="How to use logappender in 
RocketMQ.">
+  <meta property="og:description" content="How to use transactional component 
to implement eventual consistency in RocketMQ.">
 
 
 
   <meta name="twitter:site" content="@ApacheRocketMQ">
-  <meta name="twitter:title" content="Logappender Example">
-  <meta name="twitter:description" content="How to use logappender in 
RocketMQ.">
+  <meta name="twitter:title" content="Transaction example">
+  <meta name="twitter:description" content="How to use transactional component 
to implement eventual consistency in RocketMQ.">
   <meta name="twitter:url" content="">
 
   
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -247,7 +247,7 @@
             
             
 
-            <li><a href="/docs/logappender-example/" 
class="active">Logappender Example</a></li>
+            <li><a href="/docs/logappender-example/" class="">Logappender 
Example</a></li>
           
             
             
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" 
class="active">Transaction Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -472,15 +480,15 @@
 
 
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
-    <meta itemprop="headline" content="Logappender Example">
-    <meta itemprop="description" content="How to use logappender in RocketMQ.">
-    <meta itemprop="datePublished" content="July 12, 2018">
-    <meta itemprop="dateModified" content="June 09, 2017">
+    <meta itemprop="headline" content="Transaction example">
+    <meta itemprop="description" content="How to use transactional component 
to implement eventual consistency in RocketMQ.">
+    <meta itemprop="datePublished" content="July 13, 2018">
+    <meta itemprop="dateModified" content="July 13, 2018">
 
     <div class="page__inner-wrap">
       
         <header>
-          <h1 class="page__title" itemprop="headline">Logappender Example
+          <h1 class="page__title" itemprop="headline">Transaction example
 </h1>
           
         </header>
@@ -491,86 +499,130 @@
 <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="#log4j" id="markdown-toc-log4j">log4j</a></li>
-  <li><a href="#log4j2" id="markdown-toc-log4j2">log4j2</a></li>
-  <li><a href="#logback" id="markdown-toc-logback">logback</a></li>
+  <li><a href="#what-is-transactional-message" 
id="markdown-toc-what-is-transactional-message">What is transactional 
message?</a></li>
+  <li><a href="#usage-constraint" id="markdown-toc-usage-constraint">Usage 
Constraint</a></li>
+  <li><a href="#application" id="markdown-toc-application">Application</a></li>
 </ul>
 
   </nav>
 </aside>
 
-<p>RocketMQ logappender provides log4j appender, log4j2 appender and logback 
appender for bussiness to use, below are config examples.</p>
-
-<h4 id="log4j">log4j</h4>
-
-<p>When using log4j properties config file,config as below.</p>
-
-<div class="highlighter-rouge"><pre 
class="highlight"><code>log4j.appender.mq=org.apache.rocketmq.logappender.log4j.RocketmqLog4jAppender
-log4j.appender.mq.Tag=yourTag
-log4j.appender.mq.Topic=yourLogTopic
-log4j.appender.mq.ProducerGroup=yourLogGroup
-log4j.appender.mq.NameServerAddress=yourRocketmqNameserverAddress
-log4j.appender.mq.layout=org.apache.log4j.PatternLayout
-log4j.appender.mq.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-4r [%t] 
(%F:%L) %-5p - %m%n
-</code></pre>
-</div>
-
-<p>When using log4j xml config file,config it as this and also add a async 
appender:</p>
-
-<div class="highlighter-rouge"><pre class="highlight"><code>&lt;appender 
name="mqAppender1" 
class="org.apache.rocketmq.logappender.log4j.RocketmqLog4jAppender"&gt;
-    &lt;param name="Tag" value="yourTag" /&gt;
-    &lt;param name="Topic" value="yourLogTopic" /&gt;
-    &lt;param name="ProducerGroup" value="yourLogGroup" /&gt;
-    &lt;param name="NameServerAddress" 
value="yourRocketmqNameserverAddress"/&gt;
-    &lt;layout class="org.apache.log4j.PatternLayout"&gt;
-        &lt;param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss}-%p 
%t %c - %m%n" /&gt;
-    &lt;/layout&gt;
-&lt;/appender&gt;
-
-&lt;appender name="mqAsyncAppender1" class="org.apache.log4j.AsyncAppender"&gt;
-    &lt;param name="BufferSize" value="1024" /&gt;
-    &lt;param name="Blocking" value="false" /&gt;
-    &lt;appender-ref ref="mqAppender1"/&gt;
-&lt;/appender&gt;
-</code></pre>
-</div>
-
-<h4 id="log4j2">log4j2</h4>
-<p>When using log4j2,config as this.If you want noneblock,just config an 
asyncAppender for ref.</p>
-
-<div class="highlighter-rouge"><pre class="highlight"><code>&lt;RocketMQ 
name="rocketmqAppender" producerGroup="yourLogGroup" 
nameServerAddress="yourRocketmqNameserverAddress"
-     topic="yourLogTopic" tag="yourTag"&gt;
-    &lt;PatternLayout pattern="%d [%p] hahahah %c %m%n"/&gt;
-&lt;/RocketMQ&gt;
-
+<h3 id="what-is-transactional-message">What is transactional message?</h3>
+
+<p>It can be thought of as a two-phase commit message implementation to ensure 
eventual consistency in distributed system. 
+Transactional message ensures that the execution of local transaction and the 
sending of message can be performed atomically.</p>
+
+<h3 id="usage-constraint">Usage Constraint</h3>
+
+<p>(1) Messages of the transactional have no schedule and batch support.<br />
+(2) In order to avoid a single message being checked too many times and lead 
to half queue message accumulation, we limited the number of checks for a 
single message to 15 times by default, but users can change this limit by 
change the “transactionCheckMax” parameter in the configuration of the broker, 
if one message has been checked over “transactionCheckMax” times, broker will 
discard this message and print an error log at the same time by default. Users 
can change this behavior by ove [...]
+(3) A transactional message will be checked after a certain period of time 
that determined by parameter “transactionMsgTimeout” in the configuration of 
the broker. And users also can change this limit by set user property 
“CHECK_IMMUNITY_TIME_IN_SECONDS” when sending transactional message, this 
parameter takes precedence over the “transactionMsgTimeout” parameter. <br />
+(4) A transactional message maybe checked or consumed more than once. <br />
+(5) Committed message reput to the user’s target topic may fail. Currently, it 
depends on the log record. High availability is ensured by the high 
availability mechanism of RocketMQ itself. If you want to ensure that the 
transactional message isn’t lost and the transaction integrity is guaranteed, 
it is recommended to use synchronous double write. mechanism. <br />
+(6) Producer IDs of transactional messages cannot be shared with producer IDs 
of other types of messages. Unlike other types of message, transactional 
messages allow backward queries. MQ Server query clients by their Producer 
IDs.</p>
+
+<h3 id="application">Application</h3>
+
+<p>1、  Transactional status</p>
+
+<p>There are three states for transactional message:<br />
+   (1) TransactionStatus.CommitTransaction: commit transaction,it means that 
allow consumers to consume this message.<br />
+   (2) TransactionStatus.RollbackTransaction: rollback transaction,it means 
that the message will be deleted and not allowed to consume.<br />
+   (3) TransactionStatus.Unknown: intermediate state,it means that MQ is 
needed to check back to determine the status.</p>
+
+<p>2、Send transactional message</p>
+
+<p>(1)Create the transactional producer<br />
+   Use TransactionMQProducer class to create producer client, and specify a 
unique producerGroup, and you can set up a custom thread pool to process check 
requests. After executing the local transaction, you need to reply to MQ 
according to the execution result,and the reply status is described in the 
above section.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>import 
org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
+import 
org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
+import org.apache.rocketmq.common.message.MessageExt;
+import java.util.List;
+
+public class TransactionProducer {
+    public static void main(String[] args) throws MQClientException, 
InterruptedException {
+        TransactionListener transactionListener = new 
TransactionListenerImpl();
+        TransactionMQProducer producer = new 
TransactionMQProducer("please_rename_unique_group_name");
+        ExecutorService executorService = new ThreadPoolExecutor(2, 5, 100, 
TimeUnit.SECONDS, new ArrayBlockingQueue&lt;Runnable&gt;(2000), new 
ThreadFactory() {
+            @Override
+            public Thread newThread(Runnable r) {
+                Thread thread = new Thread(r);
+                thread.setName("client-transaction-msg-check-thread");
+                return thread;
+            }
+        });
+
+        producer.setExecutorService(executorService);
+        producer.setTransactionListener(transactionListener);
+        producer.start();
+
+        String[] tags = new String[] {"TagA", "TagB", "TagC", "TagD", "TagE"};
+        for (int i = 0; i &lt; 10; i++) {
+            try {
+                Message msg =
+                    new Message("TopicTest1234", tags[i % tags.length], "KEY" 
+ i,
+                        ("Hello RocketMQ " + 
i).getBytes(RemotingHelper.DEFAULT_CHARSET));
+                SendResult sendResult = producer.sendMessageInTransaction(msg, 
null);
+                System.out.printf("%s%n", sendResult);
+
+                Thread.sleep(10);
+            } catch (MQClientException | UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+        }
+
+        for (int i = 0; i &lt; 100000; i++) {
+            Thread.sleep(1000);
+        }
+        producer.shutdown();
+    }
+}
+```
 </code></pre>
 </div>
 
-<h4 id="logback">logback</h4>
-<p>When using logback,an asyncAppender also needed.</p>
-
-<div class="highlighter-rouge"><pre class="highlight"><code>&lt;appender 
name="mqAppender1" 
class="org.apache.rocketmq.logappender.logback.RocketmqLogbackAppender"&gt;
-    &lt;tag&gt;yourTag&lt;/tag&gt;
-    &lt;topic&gt;yourLogTopic&lt;/topic&gt;
-    &lt;producerGroup&gt;yourLogGroup&lt;/producerGroup&gt;
-    
&lt;nameServerAddress&gt;yourRocketmqNameserverAddress&lt;/nameServerAddress&gt;
-    &lt;layout&gt;
-        &lt;pattern&gt;%date %p %t - %m%n&lt;/pattern&gt;
-    &lt;/layout&gt;
-&lt;/appender&gt;
-
-&lt;appender name="mqAsyncAppender1" 
class="ch.qos.logback.classic.AsyncAppender"&gt;
-    &lt;queueSize&gt;1024&lt;/queueSize&gt;
-    &lt;discardingThreshold&gt;80&lt;/discardingThreshold&gt;
-    &lt;maxFlushTime&gt;2000&lt;/maxFlushTime&gt;
-    &lt;neverBlock&gt;true&lt;/neverBlock&gt;
-    &lt;appender-ref ref="mqAppender1"/&gt;
-&lt;/appender&gt;
-
+<p>(2)Implement the TransactionListener interface<br />
+   The “executeLocalTransaction” method is used to execute local transaction 
when send half message succeed. It returns one of three transaction status 
mentioned in the previous section.<br />
+   The “checkLocalTransaction” method is used to check the local transaction 
status and respond to MQ check requests. It also returns one of three 
transaction status mentioned in the previous section.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>   import ...
+   
+   public class TransactionListenerImpl implements TransactionListener {
+       private AtomicInteger transactionIndex = new AtomicInteger(0);
+   
+       private ConcurrentHashMap&lt;String, Integer&gt; localTrans = new 
ConcurrentHashMap&lt;&gt;();
+   
+       @Override
+       public LocalTransactionState executeLocalTransaction(Message msg, 
Object arg) {
+           int value = transactionIndex.getAndIncrement();
+           int status = value % 3;
+           localTrans.put(msg.getTransactionId(), status);
+           return LocalTransactionState.UNKNOW;
+       }
+   
+       @Override
+       public LocalTransactionState checkLocalTransaction(MessageExt msg) {
+           Integer status = localTrans.get(msg.getTransactionId());
+           if (null != status) {
+               switch (status) {
+                   case 0:
+                       return LocalTransactionState.UNKNOW;
+                   case 1:
+                       return LocalTransactionState.COMMIT_MESSAGE;
+                   case 2:
+                       return LocalTransactionState.ROLLBACK_MESSAGE;
+               }
+           }
+           return LocalTransactionState.COMMIT_MESSAGE;
+       }
+   }
+   ```
 </code></pre>
 </div>
 
-
         
       </section>
 
@@ -580,7 +632,7 @@ log4j.appender.mq.layout.ConversionPattern=%d{yyyy-MM-dd 
HH:mm:ss} %-4r [%t] (%F
 
 
         
-          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" 
aria-hidden="true"></i> Updated:</strong> <time datetime="2017-06-09">June 09, 
2017</time></p>
+          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" 
aria-hidden="true"></i> Updated:</strong> <time datetime="2018-07-13">July 13, 
2018</time></p>
         
       </footer>
 
@@ -589,24 +641,24 @@ log4j.appender.mq.layout.ConversionPattern=%d{yyyy-MM-dd 
HH:mm:ss} %-4r [%t] (%F
     <h4 class="page__share-title">Share on</h4>
   
 
-  <a 
href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Logappender 
Example /docs/logappender-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://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Transaction 
example /docs/transaction-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/logappender-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://www.facebook.com/sharer/sharer.php?u=/docs/transaction-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/logappender-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://plus.google.com/share?url=/docs/transaction-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/logappender-example/";
 class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw 
fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
+  <a 
href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/transaction-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/filter-by-sql92-example/" class="pagination--pager" 
title="Filter Example
+      <a href="/docs/how-to-contribute/" class="pagination--pager" title="How 
To Contribute
 ">Previous</a>
     
     
-      <a href="/docs/openmessaging-example/" class="pagination--pager" 
title="OpenMessaging Example
+      <a href="/docs/best-practice-broker/" class="pagination--pager" 
title="Best Practice For Broker
 ">Next</a>
     
   </nav>
diff --git a/content/dowloading/releases/index.html 
b/content/dowloading/releases/index.html
index 3274738..6d858fd 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="2018-07-12T14:39:16+08:00">
+  <meta property="article:published_time" content="2018-07-13T15:55:40+08:00">
 
 
 
@@ -263,6 +263,14 @@
             
             
 
+            <li><a href="/docs/transaction-example/" class="">Transaction 
Example</a></li>
+          
+            
+            
+
+            
+            
+
             <li><a href="/docs/faq/" class="">FAQ</a></li>
           
         </ul>
@@ -474,7 +482,7 @@
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
     <meta itemprop="headline" content="Downloading the Apache RocketMQ 
Releases">
     <meta itemprop="description" content="Compatibility GuideThe table below 
shows the supported jre environment for components of each release.">
-    <meta itemprop="datePublished" content="July 12, 2018">
+    <meta itemprop="datePublished" content="July 13, 2018">
     <meta itemprop="dateModified" content="February 21, 2017">
 
     <div class="page__inner-wrap">
diff --git a/content/feed.xml b/content/feed.xml
index 34833f5..ea6533f 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -1,4 +1,73 @@
-<?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>2018-07-12T14:39:16+08:00</updated><id>//</id><title 
type="html">Apache RocketMQ</title><subtitle>The homepage of 
RocketMQ.</subtitle><author><name>{&quot;name&qu [...]
+<?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>2018-07-13T15:55:40+08:00</updated><id>//</id><title 
type="html">Apache RocketMQ</title><subtitle>The homepage of 
RocketMQ.</subtitle><author><name>{&quot;name&qu [...]
+&lt;nav class=&quot;toc&quot;&gt;
+    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa 
fa-file-text&quot;&gt;&lt;/i&gt; On This Page&lt;/h4&gt;&lt;/header&gt;
+&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
+  &lt;li&gt;&lt;a href=&quot;#concept-introduction&quot; 
id=&quot;markdown-toc-concept-introduction&quot;&gt;Concept 
Introduction&lt;/a&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;a href=&quot;#execute-flow-chart&quot; 
id=&quot;markdown-toc-execute-flow-chart&quot;&gt;Execute Flow 
Chart&lt;/a&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;a href=&quot;#detailed-design&quot; 
id=&quot;markdown-toc-detailed-design&quot;&gt;Detailed 
Design&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+  &lt;/nav&gt;
+&lt;/aside&gt;
+&lt;h1 id=&quot;concept-introduction&quot;&gt;Concept Introduction&lt;/h1&gt;
+
+&lt;blockquote&gt;
+  &lt;p&gt;Half(Prepare) Message&lt;/p&gt;
+&lt;/blockquote&gt;
+
+&lt;p&gt;Refers to a message that cannot be delivered temporarily. When a 
message is successfully sent to the MQ server, but the server did not receive 
the second acknowledgement of the message from the producer, then the message 
is marked as “temporarily undeliverable”. The message in this status is called 
a half message.&lt;/p&gt;
+
+&lt;blockquote&gt;
+  &lt;p&gt;Message Status Check&lt;/p&gt;
+&lt;/blockquote&gt;
+
+&lt;p&gt;Network disconnection or producer application restart may result in 
the loss of the second acknowledgement of a transactional message. When MQ 
server finds that a message remains a half message for a long time, it will 
send a request to the message producer, checking the final status of the 
message (Commit or Rollback).&lt;/p&gt;
+
+&lt;h1 id=&quot;execute-flow-chart&quot;&gt;Execute Flow Chart&lt;/h1&gt;
+
+&lt;p&gt;&lt;img 
src=&quot;/assets/images/blog/transaction-execute-flow.png&quot; 
alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;
+&lt;ol&gt;
+  &lt;li&gt;Producer send half message to MQ server.&lt;/li&gt;
+  &lt;li&gt;After send half message succeed, execute local 
transaction.&lt;/li&gt;
+  &lt;li&gt;Send commit or rollback message to MQ Server based on local 
transaction results.&lt;/li&gt;
+  &lt;li&gt;If commit/rollback message missed or producer pended during the 
execution of local transaction,MQ server will send check message to each 
producers in the same group to obtain transaction status.&lt;/li&gt;
+  &lt;li&gt;Producer reply commit/rollback message based on local transaction 
status.&lt;/li&gt;
+  &lt;li&gt;Committed message will be delivered to consumer but rolled back 
message will be discarded by MQ server.&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;h1 id=&quot;detailed-design&quot;&gt;Detailed Design&lt;/h1&gt;
+&lt;blockquote&gt;
+  &lt;p&gt;Outline:&lt;/p&gt;
+&lt;/blockquote&gt;
+
+&lt;p&gt;&lt;img 
src=&quot;/assets/images/blog/transaction-outline-design.png&quot; 
alt=&quot;screenshot&quot; /&gt;&lt;br /&gt;
+Just as the figure shows, in order to mask the underlying implementation of 
storage, all transactional message operations focus on the transaction service 
interface.
+RocketMQ provides a default implementation with its own storage system,and we 
used a transaction bridge to implement our transactional storage logic,instead 
of modify RocketMQ’s storage layer directly.&lt;/p&gt;
+
+&lt;blockquote&gt;
+  &lt;p&gt;Sending transactional message:&lt;/p&gt;
+&lt;/blockquote&gt;
+
+&lt;p&gt;&lt;img 
src=&quot;/assets/images/blog/sending-transactional-message.png&quot; 
alt=&quot;screenshot&quot; /&gt;&lt;br /&gt;
+This figure describes the timing relationships of sending transactional 
message. From this figure, we can clearly see that how transactional messages 
are committed in two phases.&lt;/p&gt;
+
+&lt;blockquote&gt;
+  &lt;p&gt;Checking transactional message:&lt;/p&gt;
+&lt;/blockquote&gt;
+
+&lt;p&gt;&lt;img 
src=&quot;/assets/images/blog/checking-transactional-message.png&quot; 
alt=&quot;screenshot&quot; /&gt;&lt;br /&gt;
+This figure describes the checking logic for transactional messages,when MQ 
server finds that a message remains a half message for a long time,it will send 
a request to the message producer,to get the status of the current 
transaction.&lt;/p&gt;
+
+&lt;blockquote&gt;
+  &lt;p&gt;Design Motivation:&lt;/p&gt;
+&lt;/blockquote&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;An open source distributed messaging and streaming 
data platform.&quot;, &quot;location&quot;=&gt;&quot;Hangzhou, China&quot;, 
&quot;email&quot;=&gt;&quot;[email protected]&quot;, 
&quot;uri&quot;=&gt;&quot;http://rocketmq.apache.org&quot;, 
&quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, 
&quot;dribbble&quot;=&gt;n [...]
+
+  Concept Introduction
+
+
+  
+
+Concept Introduction</summary></entry><entry><title type="html">Release Notes 
- Apache RocketMQ - Version 4.2.0</title><link 
href="/release_notes/release-notes-4.2.0/" rel="alternate" type="text/html" 
title="Release Notes - Apache RocketMQ - Version 4.2.0" 
/><published>2017-12-13T00:00:00+08:00</published><updated>2017-12-13T00:00:00+08:00</updated><id>/release_notes/release-notes-4.2.0</id><content
 type="html" xml:base="/release_notes/release-notes-4.2.0/">&lt;p&gt;Below is a 
summary of [...]
 
 &lt;h2&gt; Download the 4.2.0 release
 &lt;/h2&gt;
@@ -692,50 +761,4 @@ and fulfill much of this responsibility through managing 
topic route information
     &lt;/li&gt;
     &lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/ROCKETMQ-9&quot;&gt;ROCKETMQ-9&lt;/a&gt;]
 - Errors in rocketmq-store module
     &lt;/li&gt;
-&lt;/ul&gt;</content><author><name>{&quot;name&quot;=&gt;nil, 
&quot;avatar&quot;=&gt;&quot;/assets/images/rmq-logo.png&quot;, 
&quot;bio&quot;=&gt;&quot;An open source distributed messaging and streaming 
data platform.&quot;, &quot;location&quot;=&gt;&quot;Hangzhou, China&quot;, 
&quot;email&quot;=&gt;&quot;[email protected]&quot;, 
&quot;uri&quot;=&gt;&quot;http://rocketmq.apache.org&quot;, 
&quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, 
&quot;dribbble&quot;=&gt;nil, &quo [...]
-&lt;h1 id=&quot;rocketmq-code-marathon-&quot;&gt;ROCKETMQ CODE MARATHON &lt;a 
href=&quot;/assets/attachment/launch-rocketmq-code-marathon.pdf&quot;&gt;&lt;i 
class=&quot;fa fa-link&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
-&lt;h5 id=&quot;january-5th-2017&quot;&gt;January 5th 2017&lt;/h5&gt;
-
-&lt;h2 id=&quot;objective&quot;&gt;Objective:&lt;/h2&gt;
-&lt;ol&gt;
-  &lt;li&gt;Foster Community&lt;/li&gt;
-  &lt;li&gt;Prosper Ecology&lt;/li&gt;
-  &lt;li&gt;Incubate Committers&lt;/li&gt;
-&lt;/ol&gt;
-
-&lt;h2 id=&quot;output&quot;&gt;Output:&lt;/h2&gt;
-&lt;ol&gt;
-  &lt;li&gt;1~3 Milestone Releases Per Project&lt;/li&gt;
-&lt;/ol&gt;
-
-&lt;h2 id=&quot;rewards&quot;&gt;Rewards:&lt;/h2&gt;
-&lt;ol&gt;
-  &lt;li&gt;Two Potential Committers Per Project&lt;/li&gt;
-  &lt;li&gt;Free Offers to Active Participants for On-Site Meetup&lt;/li&gt;
-  &lt;li&gt;PMC Memberships for Qualified Committers&lt;/li&gt;
-&lt;/ol&gt;
-
-&lt;h2 id=&quot;projects&quot;&gt;PROJECTS&lt;/h2&gt;
-
-&lt;h3 id=&quot;rocketmq-console&quot;&gt;RocketMQ-Console&lt;/h3&gt;
-&lt;ol&gt;
-  &lt;li&gt;Brand New UI&lt;/li&gt;
-  &lt;li&gt;I18n Support&lt;/li&gt;
-  &lt;li&gt;&lt;a 
href=&quot;https://projects.spring.io/spring-boot/&quot;&gt;Spring 
Boot&lt;/a&gt; + &lt;a 
href=&quot;http://getbootstrap.com/&quot;&gt;Bootstrap&lt;/a&gt; 
Recommended&lt;/li&gt;
-  &lt;li&gt;Join by Creating Pull Requests against &lt;a 
href=&quot;https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console&quot;&gt;RocketMQ
 Console Repository&lt;/a&gt;&lt;/li&gt;
-&lt;/ol&gt;
-
-&lt;h3 id=&quot;rocketmq-jms&quot;&gt;RocketMQ-JMS&lt;/h3&gt;
-&lt;ol&gt;
-  &lt;li&gt;Supporting JMS 2.0 Protocol&lt;/li&gt;
-  &lt;li&gt;Rich Documentation and Good Test Cases Coverage&lt;/li&gt;
-  &lt;li&gt;Join by Creating Pull Requests against &lt;a 
href=&quot;https://github.com/apache/rocketmq-externals/tree/master/rocketmq-jms&quot;&gt;RocketMQ
 JMS Repository&lt;/a&gt;&lt;/li&gt;
-&lt;/ol&gt;
-
-&lt;h3 id=&quot;rocketmq-flume&quot;&gt;RocketMQ-Flume&lt;/h3&gt;
-&lt;ol&gt;
-  &lt;li&gt;Supporting Latest &lt;a 
href=&quot;http://flume.apache.org/&quot;&gt;Flume&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;Rich Documentation and Good Test Cases Coverage&lt;/li&gt;
-  &lt;li&gt;Join by Creating Pull Requests against &lt;a 
href=&quot;https://github.com/apache/rocketmq-externals/tree/master/rocketmq-flume&quot;&gt;RocketMQ
 Flume Repository&lt;/a&gt;&lt;/li&gt;
-&lt;/ol&gt;</content><author><name>{&quot;name&quot;=&gt;nil, 
&quot;avatar&quot;=&gt;&quot;/assets/images/rmq-logo.png&quot;, 
&quot;bio&quot;=&gt;&quot;An open source distributed messaging and streaming 
data platform.&quot;, &quot;location&quot;=&gt;&quot;Hangzhou, China&quot;, 
&quot;email&quot;=&gt;&quot;[email protected]&quot;, 
&quot;uri&quot;=&gt;&quot;http://rocketmq.apache.org&quot;, 
&quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, 
&quot;dribbble&quot;=&gt;nil, &quo [...]
-January 5th 2017</summary></entry></feed>
+&lt;/ul&gt;</content><author><name>{&quot;name&quot;=&gt;nil, 
&quot;avatar&quot;=&gt;&quot;/assets/images/rmq-logo.png&quot;, 
&quot;bio&quot;=&gt;&quot;An open source distributed messaging and streaming 
data platform.&quot;, &quot;location&quot;=&gt;&quot;Hangzhou, China&quot;, 
&quot;email&quot;=&gt;&quot;[email protected]&quot;, 
&quot;uri&quot;=&gt;&quot;http://rocketmq.apache.org&quot;, 
&quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, 
&quot;dribbble&quot;=&gt;nil, &quo [...]
diff --git a/content/release_notes/release-notes-4.2.0/index.html 
b/content/release_notes/release-notes-4.2.0/index.html
index 9edb2a3..ef40f67 100644
--- a/content/release_notes/release-notes-4.2.0/index.html
+++ b/content/release_notes/release-notes-4.2.0/index.html
@@ -488,7 +488,8 @@
 ">Previous</a>
     
     
-      <a href="#" class="pagination--pager disabled">Next</a>
+      <a href="/rocketmq/the-design-of-transactional-message/" 
class="pagination--pager" title="The Design Of Transactional Message
+">Next</a>
     
   </nav>
 
diff --git a/content/release_notes/release-notes-4.2.0/index.html 
b/content/rocketmq/the-design-of-transactional-message/index.html
similarity index 53%
copy from content/release_notes/release-notes-4.2.0/index.html
copy to content/rocketmq/the-design-of-transactional-message/index.html
index 9edb2a3..0228fa4 100644
--- a/content/release_notes/release-notes-4.2.0/index.html
+++ b/content/rocketmq/the-design-of-transactional-message/index.html
@@ -13,30 +13,30 @@
 
 
 
-<title>Release Notes - Apache RocketMQ - Version 4.2.0 - Apache 
RocketMQ</title>
+<title>The Design Of Transactional Message - Apache RocketMQ</title>
 
 
 
 
-<meta name="description" content="Below is a summary of the JIRA issues 
addressed in the 4.2.0 release of RocketMQ. For full documentation of the 
release, a guide to get started, please refer to Quick Start.">
+<meta name="description" content="     On This Page  Concept Introduction  
Concept Introduction">
 
 
 
 
 <meta property="og:locale" content="en">
 <meta property="og:site_name" content="Apache RocketMQ">
-<meta property="og:title" content="Release Notes - Apache RocketMQ - Version 
4.2.0">
+<meta property="og:title" content="The Design Of Transactional Message">
 
 
 
 
-  <meta property="og:description" content="Below is a summary of the JIRA 
issues addressed in the 4.2.0 release of RocketMQ. For full documentation of 
the release, a guide to get started, please refer to Quick Start.">
+  <meta property="og:description" content="     On This Page  Concept 
Introduction  Concept Introduction">
 
 
 
   <meta name="twitter:site" content="@ApacheRocketMQ">
-  <meta name="twitter:title" content="Release Notes - Apache RocketMQ - 
Version 4.2.0">
-  <meta name="twitter:description" content="Below is a summary of the JIRA 
issues addressed in the 4.2.0 release of RocketMQ. For full documentation of 
the release, a guide to get started, please refer to Quick Start.">
+  <meta name="twitter:title" content="The Design Of Transactional Message">
+  <meta name="twitter:description" content="     On This Page  Concept 
Introduction  Concept Introduction">
   <meta name="twitter:url" content="">
 
   
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2017-12-13T00:00:00+08:00">
+  <meta property="article:published_time" content="2018-07-13T00:00:00+08:00">
 
 
 
@@ -286,15 +286,15 @@
 
 
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
-    <meta itemprop="headline" content="Release Notes - Apache RocketMQ - 
Version 4.2.0">
-    <meta itemprop="description" content="Below is a summary of the JIRA 
issues addressed in the 4.2.0 release of RocketMQ. For full documentation of 
the release, a guide to get started, please refer to Quick Start.">
-    <meta itemprop="datePublished" content="December 13, 2017">
+    <meta itemprop="headline" content="The Design Of Transactional Message">
+    <meta itemprop="description" content="     On This Page  Concept 
Introduction  Concept Introduction">
+    <meta itemprop="datePublished" content="July 13, 2018">
     
 
     <div class="page__inner-wrap">
       
         <header>
-          <h1 class="page__title" itemprop="headline">Release Notes - Apache 
RocketMQ - Version 4.2.0
+          <h1 class="page__title" itemprop="headline">The Design Of 
Transactional Message
 </h1>
           
             <p class="page__meta"><i class="fa fa-clock-o" 
aria-hidden="true"></i> 
@@ -302,110 +302,76 @@
 
 
 
-  2 minute read
+  1 minute read
 </p>
           
         </header>
       
 
       <section class="page__content" itemprop="text">
-        <p>Below is a summary of the JIRA issues addressed in the 4.2.0 
release of RocketMQ. For full documentation of the release, a guide to get 
started, please refer to <a href="/docs/quick-start/">Quick Start</a>.</p>
+        <aside class="sidebar__right">
+<nav class="toc">
+    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This 
Page</h4></header>
+<ul class="toc__menu" id="markdown-toc">
+  <li><a href="#concept-introduction" 
id="markdown-toc-concept-introduction">Concept Introduction</a></li>
+  <li><a href="#execute-flow-chart" 
id="markdown-toc-execute-flow-chart">Execute Flow Chart</a></li>
+  <li><a href="#detailed-design" id="markdown-toc-detailed-design">Detailed 
Design</a></li>
+</ul>
 
-<h2> Download the 4.2.0 release
-</h2>
+  </nav>
+</aside>
+<h1 id="concept-introduction">Concept Introduction</h1>
 
-<ul>
-  <li>Source: <a 
href="https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-source-release.zip";>rocketmq-all-4.2.0-source-release.zip</a>
 [<a 
href="https://www.apache.org/dist/rocketmq/4.2.0/rocketmq-all-4.2.0-source-release.zip.asc";>PGP</a>]
 [<a 
href="https://www.apache.org/dist/rocketmq/4.2.0/rocketmq-all-4.2.0-source-release.zip.md5";>MD5</a>]
 [<a 
href="https://www.apache.org/dist/rocketmq/4.2.0/rocketmq-all-4.2.0-source-release.zip.sha1";>SHA1</a>]</li>
-  <li>Binary: <a 
href="https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip";>rocketmq-all-4.2.0-bin-release.zip</a>
 [<a 
href="https://www.apache.org/dist/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip.asc";>PGP</a>]
 [<a 
href="https://www.apache.org/dist/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip.md5";>MD5</a>]
 [<a 
href="https://www.apache.org/dist/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip.sha1";>SHA1</a>]</li>
-</ul>
+<blockquote>
+  <p>Half(Prepare) Message</p>
+</blockquote>
 
-<h2 id="new-feature">New Feature</h2>
+<p>Refers to a message that cannot be delivered temporarily. When a message is 
successfully sent to the MQ server, but the server did not receive the second 
acknowledgement of the message from the producer, then the message is marked as 
“temporarily undeliverable”. The message in this status is called a half 
message.</p>
 
-<ul>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-28";>ROCKETMQ-28</a>] -     
    Support transportation layer security
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-224";>ROCKETMQ-224</a>] -   
    Suppport log4j2 in Client
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-294";>ROCKETMQ-294</a>] -   
    Support flow control by number and size dimensions for PushConsumer
-</li>
-</ul>
+<blockquote>
+  <p>Message Status Check</p>
+</blockquote>
 
-<h2 id="improvement">Improvement</h2>
-
-<ul>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-6";>ROCKETMQ-6</a>] -       
  Use logger for exceptions instead of e.printStackTrace()
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-23";>ROCKETMQ-23</a>] -     
Better to return true when MappedFileQueue#flush is successful
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-96";>ROCKETMQ-96</a>] -     
Rename tmp variable 
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-258";>ROCKETMQ-258</a>] -   
Move benchmark scripts to distribution module
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-259";>ROCKETMQ-259</a>] -   
Reduce reflection calls when decode remoting command header
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-263";>ROCKETMQ-263</a>] -   
Reduce the cost of the unit test in OpenMessaging modules
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-266";>ROCKETMQ-266</a>] -   
Polish the exception message when  consumerThreadMax is smaller than 
consumerThreadMin
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-273";>ROCKETMQ-273</a>] -   
Simplify the code when the method has no write operation
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-279";>ROCKETMQ-279</a>] -   
Add consistent check for commit log data and consume queue data when start the 
broker
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-281";>ROCKETMQ-281</a>] -   
    Add check to prevent repeating starting broker
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-307";>ROCKETMQ-307</a>] -   
Change JVM arguments for java 8 and direct memory GC
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-308";>ROCKETMQ-308</a>] -   
Improve broker register speed by increasing socket buffer size of name server 
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-311";>ROCKETMQ-311</a>] -   
Add fast failure mechanism for pull-request queue of broker
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-312";>ROCKETMQ-312</a>] -   
Use independent thread pool for QueryMessageProcessor
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-315";>ROCKETMQ-315</a>] -   
Enhance default settings of TLS
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-323";>ROCKETMQ-323</a>] -   
Release semaphore after callback is finished in async process
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-324";>ROCKETMQ-324</a>] -   
Expose an interface for client to specify the async call back executor
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-327";>ROCKETMQ-327</a>] -   
Add an interface to support decrypt a encrypted private key file
-</li>
-</ul>
+<p>Network disconnection or producer application restart may result in the 
loss of the second acknowledgement of a transactional message. When MQ server 
finds that a message remains a half message for a long time, it will send a 
request to the message producer, checking the final status of the message 
(Commit or Rollback).</p>
 
-<h2 id="bug">Bug</h2>
-
-<ul>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-231";>ROCKETMQ-231</a>] -   
Fix the pull result size
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-234";>ROCKETMQ-234</a>] -   
Fix double-return bug in batch scenario
-</li>
-
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-238";>ROCKETMQ-238</a>] -   
 Make sure catch the exception in a periodic task of ScheduledExecutorService 
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-242";>ROCKETMQ-242</a>] -   
Make sure the client could fetch nameSrvAddr periodly
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-254";>ROCKETMQ-254</a>] -   
Fix the random test failure of LoggerAppender and reduce the cost time
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-260";>ROCKETMQ-260</a>] -   
Fix the wrong lock when destroy IndexService
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-270";>ROCKETMQ-270</a>] -   
Make sure the slave broker could start normally if master broker has cleaned 
commit log
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-277";>ROCKETMQ-277</a>] -   
Fix the exception in getLocalHost when server hostname not in hosts
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-284";>ROCKETMQ-284</a>] -   
Make sure the sql filter is not conflict with old tag filter
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-285";>ROCKETMQ-285</a>] -   
Fix the file test error when make link
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-291";>ROCKETMQ-291</a>] -   
Fix the UnknownFormatConversionException of System.out.printf
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-292";>ROCKETMQ-292</a>] -   
Fix exit problem in main thread when args parsing problem occurs
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-320";>ROCKETMQ-320</a>] -   
Make sure no message loss when shutdown with dispatch behind
-</li>
-<li>[<a 
href="https://issues.apache.org/jira/browse/ROCKETMQ-321";>ROCKETMQ-321</a>] -   
Make sure do not delete mapped files in the middle
-</li>
+<h1 id="execute-flow-chart">Execute Flow Chart</h1>
 
-</ul>
+<p><img src="/assets/images/blog/transaction-execute-flow.png" 
alt="screenshot" /></p>
+<ol>
+  <li>Producer send half message to MQ server.</li>
+  <li>After send half message succeed, execute local transaction.</li>
+  <li>Send commit or rollback message to MQ Server based on local transaction 
results.</li>
+  <li>If commit/rollback message missed or producer pended during the 
execution of local transaction,MQ server will send check message to each 
producers in the same group to obtain transaction status.</li>
+  <li>Producer reply commit/rollback message based on local transaction 
status.</li>
+  <li>Committed message will be delivered to consumer but rolled back message 
will be discarded by MQ server.</li>
+</ol>
+
+<h1 id="detailed-design">Detailed Design</h1>
+<blockquote>
+  <p>Outline:</p>
+</blockquote>
+
+<p><img src="/assets/images/blog/transaction-outline-design.png" 
alt="screenshot" /><br />
+Just as the figure shows, in order to mask the underlying implementation of 
storage, all transactional message operations focus on the transaction service 
interface.
+RocketMQ provides a default implementation with its own storage system,and we 
used a transaction bridge to implement our transactional storage logic,instead 
of modify RocketMQ’s storage layer directly.</p>
+
+<blockquote>
+  <p>Sending transactional message:</p>
+</blockquote>
+
+<p><img src="/assets/images/blog/sending-transactional-message.png" 
alt="screenshot" /><br />
+This figure describes the timing relationships of sending transactional 
message. From this figure, we can clearly see that how transactional messages 
are committed in two phases.</p>
+
+<blockquote>
+  <p>Checking transactional message:</p>
+</blockquote>
+
+<p><img src="/assets/images/blog/checking-transactional-message.png" 
alt="screenshot" /><br />
+This figure describes the checking logic for transactional messages,when MQ 
server finds that a message remains a half message for a long time,it will send 
a request to the message producer,to get the status of the current 
transaction.</p>
 
+<blockquote>
+  <p>Design Motivation:</p>
+</blockquote>
 
         
       </section>
@@ -426,7 +392,7 @@
     
       
       
-      <a href="/tags/#release-notes" class="page__taxonomy-item" 
rel="tag">Release_Notes</a><span class="sep">, </span>
+      <a href="/tags/#message-oriented-middleware" class="page__taxonomy-item" 
rel="tag">Message Oriented Middleware</a><span class="sep">, </span>
     
       
       
@@ -434,7 +400,7 @@
     
       
       
-      <a href="/tags/#version" class="page__taxonomy-item" 
rel="tag">Version</a>
+      <a href="/tags/#transaction" class="page__taxonomy-item" 
rel="tag">Transaction</a>
     
     </span>
   </p>
@@ -455,14 +421,14 @@
     
       
       
-      <a href="/categories/#release-notes" class="page__taxonomy-item" 
rel="tag">Release_Notes</a>
+      <a href="/categories/#rocketmq" class="page__taxonomy-item" 
rel="tag">RocketMQ</a>
     
     </span>
   </p>
 
 
         
-          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" 
aria-hidden="true"></i> Updated:</strong> <time 
datetime="2017-12-13T00:00:00+08:00">December 13, 2017</time></p>
+          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" 
aria-hidden="true"></i> Updated:</strong> <time 
datetime="2018-07-13T00:00:00+08:00">July 13, 2018</time></p>
         
       </footer>
 
@@ -471,20 +437,20 @@
     <h4 class="page__share-title">Share on</h4>
   
 
-  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Release 
Notes - Apache RocketMQ - Version 4.2.0 /release_notes/release-notes-4.2.0/" 
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://twitter.com/intent/tweet?via=ApacheRocketMQ&text=The Design 
Of Transactional Message /rocketmq/the-design-of-transactional-message/" 
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=/release_notes/release-notes-4.2.0/";
 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://www.facebook.com/sharer/sharer.php?u=/rocketmq/the-design-of-transactional-message/";
 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=/release_notes/release-notes-4.2.0/"; 
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://plus.google.com/share?url=/rocketmq/the-design-of-transactional-message/";
 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=/release_notes/release-notes-4.2.0/";
 class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw 
fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
+  <a 
href="https://www.linkedin.com/shareArticle?mini=true&url=/rocketmq/the-design-of-transactional-message/";
 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="/rocketmq/Field-Report-Meetup-Beijing/" 
class="pagination--pager" title="Field Report of Apache RocketMQ Meetup Beijing
+      <a href="/release_notes/release-notes-4.2.0/" class="pagination--pager" 
title="Release Notes - Apache RocketMQ - Version 4.2.0
 ">Previous</a>
     
     
diff --git a/content/sitemap.xml b/content/sitemap.xml
index 850b846..0db1962 100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@ -2,131 +2,135 @@
 <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"; 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";>
 <url>
 <loc>/about/team/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/about/contact/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/about/rewards/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/quick-start/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/motivation/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/core-concept/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/cli-admin-tool/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/cluster-deployment/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/pull-request/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/code-guidelines/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/documentation/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/faq/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/release-manual</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/dowloading/releases/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/roadmap/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/batch-example/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/broadcast-example/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/rmq-deployment/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/order-example/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/rmq-arc/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/schedule-example/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/simple-example/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/filter-by-sql92-example/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/logappender-example/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/openmessaging-example/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/system-config/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/how-to-contribute/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
+</url>
+<url>
+<loc>/docs/transaction-example/</loc>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/best-practice-broker/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/best-practice-consumer/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/create-pull-request/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/best-practice-namesvr/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/docs/best-practice-producer/</loc>
-<lastmod>2018-07-12T14:39:16+08:00</lastmod>
+<lastmod>2018-07-13T15:55:40+08:00</lastmod>
 </url>
 <url>
 <loc>/rocketmq/how-to-support-more-queues-in-rocketmq/</loc>
@@ -177,6 +181,10 @@
 <lastmod>2017-12-13T00:00:00+08:00</lastmod>
 </url>
 <url>
+<loc>/rocketmq/the-design-of-transactional-message/</loc>
+<lastmod>2018-07-13T00:00:00+08:00</lastmod>
+</url>
+<url>
 <loc>/docs/quick-start/</loc>
 </url>
 <url>
@@ -258,6 +266,9 @@
 <loc>/docs/how-to-contribute/</loc>
 </url>
 <url>
+<loc>/docs/transaction-example/</loc>
+</url>
+<url>
 <loc>/about/</loc>
 </url>
 <url>
diff --git a/content/tags/index.html b/content/tags/index.html
index 499ea07..27f7917 100644
--- a/content/tags/index.html
+++ b/content/tags/index.html
@@ -417,6 +417,12 @@
 <!-- If not equal to previous then it must be unique as sorted -->
 
 
+
+
+
+<!-- If not equal to previous then it must be unique as sorted -->
+
+
 <!-- Push to group_names -->
 
 
@@ -497,6 +503,22 @@
 <!-- If not equal to previous then it must be unique as sorted -->
 
 
+
+
+
+<!-- If not equal to previous then it must be unique as sorted -->
+
+
+<!-- Push to group_names -->
+
+
+
+
+
+
+<!-- If not equal to previous then it must be unique as sorted -->
+
+
 <!-- Push to group_names -->
 
 
@@ -634,6 +656,14 @@
 
 
 
+<!-- Collect if contains -->
+
+
+
+<!-- Push to group_items -->
+
+
+
 
   
   <h2 id="activity" class="archive__subtitle">Activity</h2>
@@ -989,6 +1019,43 @@ January 5th 2017
     
     <h2 class="archive__item-title" itemprop="headline">
       
+        <a href="/rocketmq/the-design-of-transactional-message/" 
rel="permalink">The Design Of Transactional Message
+</a>
+      
+    </h2>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  1 minute read
+</p>
+    
+    <p class="archive__item-excerpt" itemprop="description">
+
+     On This Page
+
+  Concept Introduction
+
+
+  
+
+Concept Introduction
+
+</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/how-to-support-more-queues-in-rocketmq/" 
rel="permalink">How to Support More Queues in RocketMQ?
 </a>
       
@@ -1172,6 +1239,43 @@ and fulfill much of this responsibility through 
managing...</p>
     
     <h2 class="archive__item-title" itemprop="headline">
       
+        <a href="/rocketmq/the-design-of-transactional-message/" 
rel="permalink">The Design Of Transactional Message
+</a>
+      
+    </h2>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  1 minute read
+</p>
+    
+    <p class="archive__item-excerpt" itemprop="description">
+
+     On This Page
+
+  Concept Introduction
+
+
+  
+
+Concept Introduction
+
+</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="/release_notes/release-notes-4.2.0/" rel="permalink">Release 
Notes - Apache RocketMQ - Version 4.2.0
 </a>
       
@@ -1298,6 +1402,47 @@ and fulfill much of this responsibility through 
managing...</p>
   
 
   
+  <h2 id="transaction" class="archive__subtitle">Transaction</h2>
+  
+    
+
+
+
+<div class="list__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/rocketmq/the-design-of-transactional-message/" 
rel="permalink">The Design Of Transactional Message
+</a>
+      
+    </h2>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  1 minute read
+</p>
+    
+    <p class="archive__item-excerpt" itemprop="description">
+
+     On This Page
+
+  Concept Introduction
+
+
+  
+
+Concept Introduction
+
+</p>
+  </article>
+</div>
+  
+
+  
   <h2 id="version" class="archive__subtitle">Version</h2>
   
     
diff --git a/content/year-archive/index.html b/content/year-archive/index.html
index d771d32..e261370 100644
--- a/content/year-archive/index.html
+++ b/content/year-archive/index.html
@@ -288,6 +288,48 @@
 
   
   
+    <h2 id="2018" class="archive__subtitle">2018</h2>
+    
+  
+  
+
+
+
+<div class="list__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/rocketmq/the-design-of-transactional-message/" 
rel="permalink">The Design Of Transactional Message
+</a>
+      
+    </h2>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  1 minute read
+</p>
+    
+    <p class="archive__item-excerpt" itemprop="description">
+
+     On This Page
+
+  Concept Introduction
+
+
+  
+
+Concept Introduction
+
+</p>
+  </article>
+</div>
+
+  
+  
     <h2 id="2017" class="archive__subtitle">2017</h2>
     
   

Reply via email to