http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/2d7f6a51/content/docs/cluster-deployment/index.html ---------------------------------------------------------------------- diff --git a/content/docs/cluster-deployment/index.html b/content/docs/cluster-deployment/index.html new file mode 100644 index 0000000..e939a07 --- /dev/null +++ b/content/docs/cluster-deployment/index.html @@ -0,0 +1,629 @@ +<!doctype html> +<html lang="en" class="no-js"> + <head> + <meta charset="utf-8"> + +<!-- begin SEO --> + + + + + + + + + +<title>Cluster Configuration and Deployment - Apache RocketMQ</title> + + + + +<meta name="description" content="Prerequisite"> + + + + +<meta property="og:locale" content="en"> +<meta property="og:site_name" content="Apache RocketMQ"> +<meta property="og:title" content="Cluster Configuration and Deployment"> + + + <link rel="canonical" href="http://localhost:4000/docs/cluster-deployment/"> + <meta property="og:url" content="http://localhost:4000/docs/cluster-deployment/"> + + + + <meta property="og:description" content="Prerequisite"> + + + + <meta name="twitter:site" content="@ApacheRocketMQ"> + <meta name="twitter:title" content="Cluster Configuration and Deployment"> + <meta name="twitter:description" content="Prerequisite"> + <meta name="twitter:url" content="http://localhost:4000/docs/cluster-deployment/"> + + + <meta name="twitter:card" content="summary"> + + + + + + + + + + + + + + + + <meta property="og:type" content="article"> + <meta property="article:published_time" content="2017-03-16T11:42:05+08:00"> + + + + + + + + + <script type="application/ld+json"> + { + "@context" : "http://schema.org", + "@type" : "Person", + "name" : "Apache RocketMQ", + "url" : "http://localhost:4000", + "sameAs" : null + } + </script> + + + + <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" /> + + + <meta name="baidu-site-verification" content="wD06EbDRkQ" /> + + + + +<!-- end SEO --> + + +<link href="http://localhost:4000/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed"> + +<!-- http://t.co/dKP3o1e --> +<meta name="HandheldFriendly" content="True"> +<meta name="MobileOptimized" content="320"> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<script> + document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js '; +</script> + +<!-- For all browsers --> +<link rel="stylesheet" href="http://localhost:4000/assets/css/main.css"> + +<meta http-equiv="cleartype" content="on"> + <!-- start custom head snippets --> + +<!-- insert favicons. use http://realfavicongenerator.net/ --> + +<!-- end custom head snippets --> + </head> + + <body class="layout--single"> + + <!--[if lt IE 9]> +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div> +<![endif]--> + <div class="masthead"> + <div class="masthead__inner-wrap"> + <div class="masthead__menu"> + <nav id="site-nav" class="greedy-nav"> + <button><div class="navicon"></div></button> + <ul class="visible-links"> + <li class="masthead__menu-item masthead__menu-item--lg"><a href="http://localhost:4000/">Apache RocketMQ</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/docs/quick-start/">Documentation</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/year-archive/">Blog</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/community/">Community</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/about/team/">About</a></li> + + </ul> + <ul class="hidden-links hidden"></ul> + </nav> + </div> + </div> +</div> + + + + + +<div id="main" role="main"> + + <div class="sidebar sticky"> + + + + + + + + + + +<nav class="nav__list"> + + <input id="ac-toc" name="accordion-toc" type="checkbox" /> + <label for="ac-toc">Toggle Menu</label> + <ul class="nav__items"> + + <li> + + <span class="nav__sub-title">User Guide</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/quick-start/" class="">Quick Start</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/motivation/" class="">Motivation</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/core-concept/" class="">Core Concept</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/cluster-deployment/" class="active">Cluster Configuration & Deployment</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Developer Guide</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/code-guidelines/" class="">Code Guidelines</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/branching-model" class="">Branching Model</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/pull-request/" class="">Best Practice in PR</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/release-manual" class="">Release Manual</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Best Practice</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-broker/" class="">Broker</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-producer/" class="">Producer</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-consumer/" class="">Consumer</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-namesvr/" class="">NameServer</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Release Notes</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/dowloading/releases/" class="">Download</a></li> + + + + + + + + <li><a href="http://localhost:4000/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li> + + </ul> + + </li> + + <li> + + + + + <a href="http://localhost:4000/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a> + + + + </li> + + <li> + + + + + <a href="http://localhost:4000/docs/faq/"><span class="nav__sub-title">FAQ</span></a> + + + + </li> + + </ul> +</nav> + + + </div> + + + <article class="page" itemscope itemtype="http://schema.org/CreativeWork"> + <meta itemprop="headline" content="Cluster Configuration and Deployment"> + <meta itemprop="description" content="Prerequisite"> + <meta itemprop="datePublished" content="March 16, 2017"> + <meta itemprop="dateModified" content="December 17, 2016"> + + <div class="page__inner-wrap"> + + <header> + <h1 class="page__title" itemprop="headline">Cluster Configuration and Deployment +</h1> + + </header> + + + <section class="page__content" itemprop="text"> + <h1 id="prerequisite">Prerequisite</h1> + +<p>Before starting this section, make sure you have read Quick Start section, in which core concepts and components of RocketMQ are introduced.</p> + +<aside class="sidebar__right"> +<nav class="toc"> + <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header> +<ul class="toc__menu" id="markdown-toc"> + <li><a href="#prerequisite" id="markdown-toc-prerequisite">Prerequisite</a></li> + <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li> + <li><a href="#name-server" id="markdown-toc-name-server">Name Server</a></li> + <li><a href="#broker" id="markdown-toc-broker">Broker</a></li> + <li><a href="#disk-flush-type-sync_flush--async_flush" id="markdown-toc-disk-flush-type-sync_flush--async_flush">Disk Flush Type: SYNC_FLUSH / ASYNC_FLUSH</a></li> + <li><a href="#replication-sync--async-broker" id="markdown-toc-replication-sync--async-broker">Replication: Sync / Async Broker</a></li> + <li><a href="#configuration" id="markdown-toc-configuration">Configuration</a></li> + <li><a href="#deployment-example" id="markdown-toc-deployment-example">Deployment Example</a></li> +</ul> + + </nav> +</aside> + +<h1 id="introduction">Introduction</h1> + +<p>This section is to introduce deployment solution that may be considered production ready. Generally speaking, we are deploying a resilient RocketMQ cluster having no single point of failure.</p> + +<h1 id="name-server">Name Server</h1> + +<p>To ensure the cluster can still operate normally when name server instance crashes, two or more name server instances are recommended. As long as there is one name server instance alive, the whole cluster remains serving.</p> + +<p>Name server follows share-nothing design paradigm. Brokers send heartbeat data to all name servers. Producers and consumers may query meta data from any one of name servers available while sending / consuming messages.</p> + +<h1 id="broker">Broker</h1> + +<p>Brokers can be divided into two categories according to their roles: master and slave. Master brokers can read and write while slave brokers can only read messages replicated from master. Master brokers have brokerId=0; brokerId of slave is non-zero.</p> + +<p>Brokers may also be grouped by the brokerName property. Slave brokers find their master through brokerName. One master broker along with zero, one or multiple slave brokers is called a broker set.</p> + +<p>In serious scenarios, we should have at least two broker sets. Each topic, as you guess, resides in two or more broker sets.</p> + +<h1 id="disk-flush-type-sync_flush--async_flush">Disk Flush Type: SYNC_FLUSH / ASYNC_FLUSH</h1> + +<p>Each broker can be configured to be sync or async in terms of IO flushing strategy. To put it simply, if your business tolerates none message loss at extreme scenarios like OS crash or power loss, SYNC_FLUSH mode is recommended. Broker of SYNC_FLUSH mode would flush each message it receives onto disk before acknowledging producer. Obviously, throughout of this mode is highly dependent on IOPS of your hard disk.</p> + +<p>Broker of ASYNC_FLUSH mode, on the other hand, takes advantage of group-committing: only flushes dirty page caches to disk periodically or when count of dirty page caches reaches certain amount. Hence, the latter yields better performance.</p> + +<h1 id="replication-sync--async-broker">Replication: Sync / Async Broker</h1> + +<p>Similar to many replication system, sync brokers await until commit log is replicated to a slave before acknowledging. Async brokers, instead, return immediately after messages are processed on master.</p> + +<h1 id="configuration">Configuration</h1> + +<p>There are three pre-built configurations shipped with the distribution of RocketMQ under conf folder for your reference:</p> + +<ol> + <li>2m-2s-sync</li> + <li>2m-2s-async</li> + <li>2m-noslave</li> +</ol> + +<p>Note: all configurations uses ASYNC_FLUSH.</p> + +<h1 id="deployment-example">Deployment Example</h1> + +<p>For example, We want to have a cluster with 2 name servers, 2 broker sets with general purpose: +for this example, we choose <code class="highlighter-rouge">2m-2s-sync</code> +Assuming binary RocketMQ is at <code class="highlighter-rouge">/home/rocketmq/dist</code></p> + +<ol> + <li> + <p>Start up two name servers as is shown in Quick Start guide. Assume their IPs are 192.168.0.2 and 192.168.0.3.</p> + </li> + <li> + <p>Start brokers</p> + + <p><code class="highlighter-rouge">cd /home/rocketmq/dist/bin</code></p> + + <p><code class="highlighter-rouge">bash mqbroker -c ../conf/2m-2s-sync/broker-a.properties -n 192.168.0.2:9876,192.168.0.3:9876</code></p> + + <p><code class="highlighter-rouge">bash mqbroker -c ../conf/2m-2s-sync/broker-a-s.properties -n 192.168.0.2:9876,192.168.0.3:9876</code></p> + + <p><code class="highlighter-rouge">bash mqbroker -c ../conf/2m-2s-sync/broker-b.properties -n 192.168.0.2:9876,192.168.0.3:9876</code></p> + + <p><code class="highlighter-rouge">bash mqbroker -c ../conf/2m-2s-sync/broker-b-s.properties -n 192.168.0.2:9876,192.168.0.3:9876</code></p> + </li> + <li> + <p>Verify</p> + + <p>Execute the following command to verify</p> + + <p><code class="highlighter-rouge">bash mqadmin clusterList</code></p> + </li> +</ol> + + + </section> + + <footer class="page__meta"> + + + + + + <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-17">December 17, 2016</time></p> + + </footer> + + <section class="page__share"> + + <h4 class="page__share-title">Share on</h4> + + + <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Cluster Configuration and Deployment http://localhost:4000/docs/cluster-deployment/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a> + + <a href="https://www.facebook.com/sharer/sharer.php?u=http://localhost:4000/docs/cluster-deployment/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a> + + <a href="https://plus.google.com/share?url=http://localhost:4000/docs/cluster-deployment/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a> + + <a href="https://www.linkedin.com/shareArticle?mini=true&url=http://localhost:4000/docs/cluster-deployment/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a> +</section> + + + + <nav class="pagination"> + + <a href="http://localhost:4000/docs/cli-admin-tool/" class="pagination--pager" title="CLI Admin Tool +">Previous</a> + + + <a href="http://localhost:4000/docs/pull-request/" class="pagination--pager" title="Best Practice in Pull Request +">Next</a> + + </nav> + + </div> + + + <div class="page__comments"> + + + <h4 class="page__comments-title">Leave a Comment</h4> + <section id="disqus_thread"></section> + +</div> + + </article> + + + +</div> + + <div class="page__footer"> + <footer> + <!-- start custom footer snippets --> + +<!-- end custom footer snippets --> + <style type="text/css"> + div.columns { float: left; margin-left: 10px;} + div.clear { clear: both; } +</style> +<div> + <div class="columns"> + <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a> + </div> + <div class="columns" style="width: 80%"> + <div class="page__footer-follow"> + <ul class="social-icons"> + + <li><strong>Follow:</strong></li> + + + <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li> + + + + <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li> + + + <li><a href="http://localhost:4000/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li> + </ul> + </div> + + <div class="page__footer-copyright">Copyright © 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div> + </div> +</div> +<div class="clear"></div> + </footer> + </div> + + <script src="http://localhost:4000/assets/js/main.min.js"></script> + + + + + <script> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-89603173-1', 'auto'); + ga('send', 'pageview'); +</script> + +<script> +var _hmt = _hmt || []; +(function() { + var hm = document.createElement("script"); + hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); +})(); +</script> + + + + + + <script type="text/javascript"> + /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ + var disqus_shortname = 'rocketmq'; + + /* * * DON'T EDIT BELOW THIS LINE * * */ + (function() { + var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; + dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; + (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); + })(); + + /* * * DON'T EDIT BELOW THIS LINE * * */ + (function () { + var s = document.createElement('script'); s.async = true; + s.type = 'text/javascript'; + s.src = '//' + disqus_shortname + '.disqus.com/count.js'; + (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); + }()); + </script> + <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> + + + + + + + </body> +</html>
http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/2d7f6a51/content/docs/code-guidelines/index.html ---------------------------------------------------------------------- diff --git a/content/docs/code-guidelines/index.html b/content/docs/code-guidelines/index.html new file mode 100644 index 0000000..1cb45ec --- /dev/null +++ b/content/docs/code-guidelines/index.html @@ -0,0 +1,574 @@ +<!doctype html> +<html lang="en" class="no-js"> + <head> + <meta charset="utf-8"> + +<!-- begin SEO --> + + + + + + + + + +<title>Coding Guidelines - Apache RocketMQ</title> + + + + +<meta name="description" content="Apache RocketMQ Coding Guidelines"> + + + + +<meta property="og:locale" content="en"> +<meta property="og:site_name" content="Apache RocketMQ"> +<meta property="og:title" content="Coding Guidelines"> + + + <link rel="canonical" href="http://localhost:4000/docs/code-guidelines/"> + <meta property="og:url" content="http://localhost:4000/docs/code-guidelines/"> + + + + <meta property="og:description" content="Apache RocketMQ Coding Guidelines"> + + + + <meta name="twitter:site" content="@ApacheRocketMQ"> + <meta name="twitter:title" content="Coding Guidelines"> + <meta name="twitter:description" content="Apache RocketMQ Coding Guidelines"> + <meta name="twitter:url" content="http://localhost:4000/docs/code-guidelines/"> + + + <meta name="twitter:card" content="summary"> + + + + + + + + + + + + + + + + <meta property="og:type" content="article"> + <meta property="article:published_time" content="2017-03-16T11:42:05+08:00"> + + + + + + + + + <script type="application/ld+json"> + { + "@context" : "http://schema.org", + "@type" : "Person", + "name" : "Apache RocketMQ", + "url" : "http://localhost:4000", + "sameAs" : null + } + </script> + + + + <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" /> + + + <meta name="baidu-site-verification" content="wD06EbDRkQ" /> + + + + +<!-- end SEO --> + + +<link href="http://localhost:4000/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed"> + +<!-- http://t.co/dKP3o1e --> +<meta name="HandheldFriendly" content="True"> +<meta name="MobileOptimized" content="320"> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<script> + document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js '; +</script> + +<!-- For all browsers --> +<link rel="stylesheet" href="http://localhost:4000/assets/css/main.css"> + +<meta http-equiv="cleartype" content="on"> + <!-- start custom head snippets --> + +<!-- insert favicons. use http://realfavicongenerator.net/ --> + +<!-- end custom head snippets --> + </head> + + <body class="layout--single"> + + <!--[if lt IE 9]> +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div> +<![endif]--> + <div class="masthead"> + <div class="masthead__inner-wrap"> + <div class="masthead__menu"> + <nav id="site-nav" class="greedy-nav"> + <button><div class="navicon"></div></button> + <ul class="visible-links"> + <li class="masthead__menu-item masthead__menu-item--lg"><a href="http://localhost:4000/">Apache RocketMQ</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/docs/quick-start/">Documentation</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/year-archive/">Blog</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/community/">Community</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/about/team/">About</a></li> + + </ul> + <ul class="hidden-links hidden"></ul> + </nav> + </div> + </div> +</div> + + + + + +<div id="main" role="main"> + + <div class="sidebar sticky"> + + + + + + + + + + +<nav class="nav__list"> + + <input id="ac-toc" name="accordion-toc" type="checkbox" /> + <label for="ac-toc">Toggle Menu</label> + <ul class="nav__items"> + + <li> + + <span class="nav__sub-title">User Guide</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/quick-start/" class="">Quick Start</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/motivation/" class="">Motivation</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/core-concept/" class="">Core Concept</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Developer Guide</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/code-guidelines/" class="active">Code Guidelines</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/branching-model" class="">Branching Model</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/pull-request/" class="">Best Practice in PR</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/release-manual" class="">Release Manual</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Best Practice</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-broker/" class="">Broker</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-producer/" class="">Producer</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-consumer/" class="">Consumer</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-namesvr/" class="">NameServer</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Release Notes</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/dowloading/releases/" class="">Download</a></li> + + + + + + + + <li><a href="http://localhost:4000/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li> + + </ul> + + </li> + + <li> + + + + + <a href="http://localhost:4000/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a> + + + + </li> + + <li> + + + + + <a href="http://localhost:4000/docs/faq/"><span class="nav__sub-title">FAQ</span></a> + + + + </li> + + </ul> +</nav> + + + </div> + + + <article class="page" itemscope itemtype="http://schema.org/CreativeWork"> + <meta itemprop="headline" content="Coding Guidelines"> + <meta itemprop="description" content="Apache RocketMQ Coding Guidelines"> + <meta itemprop="datePublished" content="March 16, 2017"> + <meta itemprop="dateModified" content="December 30, 2016"> + + <div class="page__inner-wrap"> + + <header> + <h1 class="page__title" itemprop="headline">Coding Guidelines +</h1> + + </header> + + + <section class="page__content" itemprop="text"> + <aside class="sidebar__right"> +<nav class="toc"> + <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header> +<ul class="toc__menu" id="markdown-toc"> + <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li> + <li><a href="#code-template-for-idea" id="markdown-toc-code-template-for-idea">Code template for idea</a> <ul> + <li><a href="#import-code-style" id="markdown-toc-import-code-style">Import code style</a></li> + <li><a href="#import-copyright" id="markdown-toc-import-copyright">Import copyright</a></li> + <li><a href="#choose-apache-copyright" id="markdown-toc-choose-apache-copyright">Choose Apache copyright</a></li> + <li><a href="#remove-author-javadoc-tag" id="markdown-toc-remove-author-javadoc-tag">Remove author javadoc tag</a></li> + </ul> + </li> +</ul> + + </nav> +</aside> + +<h1 id="introduction">Introduction</h1> +<p>This document describes formatting rules and guidelines for software source code. Note that this document does not cover best programming practices or techniques. It is solely concentrating on source code formatting and conventions.</p> + +<p>Studies have shown that 80% of development time is spent on software maintenance which involves software source code understanding, refactoring and support. Established and enforced code formatting rules and guidelines improve source code readability, promote team code ownership, allow engineers understand new code more quickly and thorough as well as simplify maintenance.</p> + +<h1 id="code-template-for-idea">Code template for idea</h1> +<h2 id="import-code-style">Import code style</h2> +<p><img src="/assets/images/code_guidelines/codestyle-pre.png" alt="codestyle" /></p> + +<p><img src="/assets/images/code_guidelines/codestyle.png" alt="codestyle" /></p> + +<h2 id="import-copyright">Import copyright</h2> +<p><img src="/assets/images/code_guidelines/copyright.png" alt="copyright" /></p> + +<h2 id="choose-apache-copyright">Choose Apache copyright</h2> +<p><img src="/assets/images/code_guidelines/copyright-choose.png" alt="copyright-choose" /></p> + +<h2 id="remove-author-javadoc-tag">Remove author javadoc tag</h2> +<p><img src="/assets/images/code_guidelines/author-tag.png" alt="author-javadoc-tag" /></p> + + + + </section> + + <footer class="page__meta"> + + + + + + <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-30">December 30, 2016</time></p> + + </footer> + + <section class="page__share"> + + <h4 class="page__share-title">Share on</h4> + + + <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Coding Guidelines http://localhost:4000/docs/code-guidelines/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a> + + <a href="https://www.facebook.com/sharer/sharer.php?u=http://localhost:4000/docs/code-guidelines/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a> + + <a href="https://plus.google.com/share?url=http://localhost:4000/docs/code-guidelines/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a> + + <a href="https://www.linkedin.com/shareArticle?mini=true&url=http://localhost:4000/docs/code-guidelines/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a> +</section> + + + + <nav class="pagination"> + + <a href="http://localhost:4000/docs/pull-request/" class="pagination--pager" title="Best Practice in Pull Request +">Previous</a> + + + <a href="http://localhost:4000/docs/documentation/" class="pagination--pager" title="Documentation +">Next</a> + + </nav> + + </div> + + + <div class="page__comments"> + + + <h4 class="page__comments-title">Leave a Comment</h4> + <section id="disqus_thread"></section> + +</div> + + </article> + + + +</div> + + <div class="page__footer"> + <footer> + <!-- start custom footer snippets --> + +<!-- end custom footer snippets --> + <style type="text/css"> + div.columns { float: left; margin-left: 10px;} + div.clear { clear: both; } +</style> +<div> + <div class="columns"> + <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a> + </div> + <div class="columns" style="width: 80%"> + <div class="page__footer-follow"> + <ul class="social-icons"> + + <li><strong>Follow:</strong></li> + + + <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li> + + + + <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li> + + + <li><a href="http://localhost:4000/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li> + </ul> + </div> + + <div class="page__footer-copyright">Copyright © 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div> + </div> +</div> +<div class="clear"></div> + </footer> + </div> + + <script src="http://localhost:4000/assets/js/main.min.js"></script> + + + + + <script> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-89603173-1', 'auto'); + ga('send', 'pageview'); +</script> + +<script> +var _hmt = _hmt || []; +(function() { + var hm = document.createElement("script"); + hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); +})(); +</script> + + + + + + <script type="text/javascript"> + /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ + var disqus_shortname = 'rocketmq'; + + /* * * DON'T EDIT BELOW THIS LINE * * */ + (function() { + var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; + dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; + (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); + })(); + + /* * * DON'T EDIT BELOW THIS LINE * * */ + (function () { + var s = document.createElement('script'); s.async = true; + s.type = 'text/javascript'; + s.src = '//' + disqus_shortname + '.disqus.com/count.js'; + (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); + }()); + </script> + <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> + + + + + + + </body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/2d7f6a51/content/docs/core-concept/index.html ---------------------------------------------------------------------- diff --git a/content/docs/core-concept/index.html b/content/docs/core-concept/index.html new file mode 100644 index 0000000..12ae5ea --- /dev/null +++ b/content/docs/core-concept/index.html @@ -0,0 +1,664 @@ +<!doctype html> +<html lang="en" class="no-js"> + <head> + <meta charset="utf-8"> + +<!-- begin SEO --> + + + + + + + + + +<title>Core Concept - Apache RocketMQ</title> + + + + +<meta name="description" content=""> + + + + +<meta property="og:locale" content="en"> +<meta property="og:site_name" content="Apache RocketMQ"> +<meta property="og:title" content="Core Concept"> + + + <link rel="canonical" href="http://localhost:4000/docs/core-concept/"> + <meta property="og:url" content="http://localhost:4000/docs/core-concept/"> + + + + <meta property="og:description" content=""> + + + + <meta name="twitter:site" content="@ApacheRocketMQ"> + <meta name="twitter:title" content="Core Concept"> + <meta name="twitter:description" content=""> + <meta name="twitter:url" content="http://localhost:4000/docs/core-concept/"> + + + <meta name="twitter:card" content="summary"> + + + + + + + + + + + + + + + + <meta property="og:type" content="article"> + <meta property="article:published_time" content="2017-03-16T11:42:05+08:00"> + + + + + + + + + <script type="application/ld+json"> + { + "@context" : "http://schema.org", + "@type" : "Person", + "name" : "Apache RocketMQ", + "url" : "http://localhost:4000", + "sameAs" : null + } + </script> + + + + <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" /> + + + <meta name="baidu-site-verification" content="wD06EbDRkQ" /> + + + + +<!-- end SEO --> + + +<link href="http://localhost:4000/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed"> + +<!-- http://t.co/dKP3o1e --> +<meta name="HandheldFriendly" content="True"> +<meta name="MobileOptimized" content="320"> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<script> + document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js '; +</script> + +<!-- For all browsers --> +<link rel="stylesheet" href="http://localhost:4000/assets/css/main.css"> + +<meta http-equiv="cleartype" content="on"> + <!-- start custom head snippets --> + +<!-- insert favicons. use http://realfavicongenerator.net/ --> + +<!-- end custom head snippets --> + </head> + + <body class="layout--single"> + + <!--[if lt IE 9]> +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div> +<![endif]--> + <div class="masthead"> + <div class="masthead__inner-wrap"> + <div class="masthead__menu"> + <nav id="site-nav" class="greedy-nav"> + <button><div class="navicon"></div></button> + <ul class="visible-links"> + <li class="masthead__menu-item masthead__menu-item--lg"><a href="http://localhost:4000/">Apache RocketMQ</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/docs/quick-start/">Documentation</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/year-archive/">Blog</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/community/">Community</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/about/team/">About</a></li> + + </ul> + <ul class="hidden-links hidden"></ul> + </nav> + </div> + </div> +</div> + + + + + +<div id="main" role="main"> + + <div class="sidebar sticky"> + + + + + + + + + + +<nav class="nav__list"> + + <input id="ac-toc" name="accordion-toc" type="checkbox" /> + <label for="ac-toc">Toggle Menu</label> + <ul class="nav__items"> + + <li> + + <span class="nav__sub-title">User Guide</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/quick-start/" class="">Quick Start</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/motivation/" class="">Motivation</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/core-concept/" class="active">Core Concept</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Developer Guide</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/code-guidelines/" class="">Code Guidelines</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/branching-model" class="">Branching Model</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/pull-request/" class="">Best Practice in PR</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/release-manual" class="">Release Manual</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Best Practice</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-broker/" class="">Broker</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-producer/" class="">Producer</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-consumer/" class="">Consumer</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-namesvr/" class="">NameServer</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Release Notes</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/dowloading/releases/" class="">Download</a></li> + + + + + + + + <li><a href="http://localhost:4000/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li> + + </ul> + + </li> + + <li> + + + + + <a href="http://localhost:4000/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a> + + + + </li> + + <li> + + + + + <a href="http://localhost:4000/docs/faq/"><span class="nav__sub-title">FAQ</span></a> + + + + </li> + + </ul> +</nav> + + + </div> + + + <article class="page" itemscope itemtype="http://schema.org/CreativeWork"> + <meta itemprop="headline" content="Core Concept"> + <meta itemprop="description" content=""> + <meta itemprop="datePublished" content="March 16, 2017"> + <meta itemprop="dateModified" content="December 17, 2016"> + + <div class="page__inner-wrap"> + + <header> + <h1 class="page__title" itemprop="headline">Core Concept +</h1> + + </header> + + + <section class="page__content" itemprop="text"> + <p><img src="/assets/images/rmq-model.png" alt="RocketMQ model" /></p> + +<p>From the above model, we can look deeper into some topics about messaging system design:</p> + +<aside class="sidebar__right"> +<nav class="toc"> + <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header> +<ul class="toc__menu" id="markdown-toc"> + <li><a href="#producer" id="markdown-toc-producer">Producer</a> <ul> + <li><a href="#producer-group" id="markdown-toc-producer-group">Producer Group</a></li> + </ul> + </li> + <li><a href="#consumer" id="markdown-toc-consumer">Consumer</a> <ul> + <li><a href="#pullconsumer" id="markdown-toc-pullconsumer">PullConsumer</a></li> + <li><a href="#pushconsumer" id="markdown-toc-pushconsumer">PushConsumer</a></li> + <li><a href="#consumer-group" id="markdown-toc-consumer-group">Consumer Group</a></li> + </ul> + </li> + <li><a href="#topic" id="markdown-toc-topic">Topic</a></li> + <li><a href="#message" id="markdown-toc-message">Message</a> <ul> + <li><a href="#message-queue" id="markdown-toc-message-queue">Message Queue</a></li> + <li><a href="#tag" id="markdown-toc-tag">Tag</a></li> + <li><a href="#broker" id="markdown-toc-broker">Broker</a></li> + </ul> + </li> + <li><a href="#name-server" id="markdown-toc-name-server">Name Server</a></li> + <li><a href="#message-model" id="markdown-toc-message-model">Message Model</a></li> + <li><a href="#message-order" id="markdown-toc-message-order">Message Order</a></li> +</ul> + + </nav> +</aside> + +<ul> + <li>Consumer Concurrency</li> + <li>Consumer Hot Issues</li> + <li>Consumer Load Balance</li> + <li>Message Router</li> + <li>Connection Multiplex</li> + <li>Canary Deployments</li> +</ul> + +<h1 id="producer">Producer</h1> + +<p>A producer sends messages generated by the business application systems to brokers. RocketMQ provides multiple paradigms of sending: synchronous, asynchronous and one-way.</p> + +<h2 id="producer-group">Producer Group</h2> + +<p>Producers of the same role are grouped together. A different producer instance of the same producer group may be contacted by a broker to commit or roll back a transaction in case the original producer crashed after starting the transaction.</p> + +<p><strong>Warning</strong>: Considering the provided producer is sufficiently powerful at sending messages, only one instance is allowed per producer group and process to avoid unnecessarily initializing of producer instances.</p> + +<h1 id="consumer">Consumer</h1> + +<p>A Consumer pulls messages from brokers and feeds them into application. In perspective of user application, two types of consumers are provided:</p> + +<h2 id="pullconsumer">PullConsumer</h2> + +<p>Pull consumer actively pulls messages from brokers. Once batches of messages are pulled, user application initiates consuming process.</p> + +<h2 id="pushconsumer">PushConsumer</h2> + +<p>Push consumer, on the other hand, encapsulates message pulling, consuming progress maintaining and other effortful work inside, leaving a callback interface to end user to implement which will be executed on message arrival.</p> + +<h2 id="consumer-group">Consumer Group</h2> + +<p>Similar to previously mentioned producer group, consumers of the exactly same role are grouped together and named <strong>Consumer Group</strong>.</p> + +<p>Consumer Group is a great concept with which achieving goals of load-balance and fault-tolerance, in terms of message consuming, is super easy.</p> + +<p><strong>Warning</strong>: consumer instances of a consumer group <strong>must</strong> have exactly same topic subscription(s).</p> + +<h1 id="topic">Topic</h1> + +<p>Topic is a category to which producers deliver messages and from which consumers pull messages. Topics have very loose relation with producers and consumers. Specifically, a topic may have zero, one or multiple producers that sends messages to it; conversely, a producer can sends messages of different topics. In consumerâs view, a topic may be subscribed by zero, one or multiple consumer groups; and a consumer group, in the same paradigm, may subscribe one or multiple topics as long as instances of this group keep their subscription consistent as emphasized in the previous section.</p> + +<h1 id="message">Message</h1> + +<p>Message is the envelope of your information to deliver. A message must be specified with a topic, which can be interpreted as address of your letter to mail to. A message may also have an optional tag set. Extra key-value pairs may also be included. For example, you may set a business key for your message and look up the message on broker server to diagnose issues during development.</p> + +<h2 id="message-queue">Message Queue</h2> + +<p>Topic, internally, is logically partitioned into one or more sub-topics. We call these sub-topics âmessage queuesâ. This concept plays a major role in implementing valuable features, including fail-over, maximum concurrency, etc.</p> + +<h2 id="tag">Tag</h2> + +<p>Tag, which can be thought as sub-topic, provides an extra flexibility for user. Through introducing tag, messages with different purposes from the same business module may have the same topic yet different tag. It would be helpful to keep your code clean and coherent.</p> + +<h2 id="broker">Broker</h2> + +<p>Broker is the major role of the RocketMQ system. It receives messages sent from producers, store them and being prepared to serve pull requests from consumers. It also stores message consuming related meta data, including consumer groups, consuming progress offsets and topic / queue info.</p> + +<h1 id="name-server">Name Server</h1> + +<p>Name server serves as the routing information provider. Producer/Consumer clients look up topics to find broker list to read from and write to.</p> + +<h1 id="message-model">Message Model</h1> + +<ul> + <li> + <p>Clustering</p> + </li> + <li> + <p>Broadcasting</p> + </li> +</ul> + +<h1 id="message-order">Message Order</h1> + +<p>When DefaultMQPushConsumer is employed, you may decide to consume messages orderly or concurrently.</p> + +<ul> + <li>Orderly</li> +</ul> + +<p>Consuming messages orderly means messages are consumed the same order they are sent by producers for each message queue. If you are dealing with scenario that global order is mandatory, make sure the topic you use has only one message queue.</p> + +<p><strong>Warn</strong>: If consuming orderly is specified, the maximum concurrency of message consuming is the number of message queues subscribed by the consumer group.</p> + +<ul> + <li>Concurrently</li> +</ul> + +<p>When consuming concurrently, maximum concurrency of message consuming is only limited by thread pool specified for each consumer client.</p> + +<p><strong>Warn</strong>: Message order is no longer guaranteed in this mode.</p> + + + + </section> + + <footer class="page__meta"> + + + + + + <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-17">December 17, 2016</time></p> + + </footer> + + <section class="page__share"> + + <h4 class="page__share-title">Share on</h4> + + + <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Core Concept http://localhost:4000/docs/core-concept/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a> + + <a href="https://www.facebook.com/sharer/sharer.php?u=http://localhost:4000/docs/core-concept/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a> + + <a href="https://plus.google.com/share?url=http://localhost:4000/docs/core-concept/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a> + + <a href="https://www.linkedin.com/shareArticle?mini=true&url=http://localhost:4000/docs/core-concept/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a> +</section> + + + + <nav class="pagination"> + + <a href="http://localhost:4000/docs/motivation/" class="pagination--pager" title="Motivation +">Previous</a> + + + <a href="http://localhost:4000/docs/cli-admin-tool/" class="pagination--pager" title="CLI Admin Tool +">Next</a> + + </nav> + + </div> + + + <div class="page__comments"> + + + <h4 class="page__comments-title">Leave a Comment</h4> + <section id="disqus_thread"></section> + +</div> + + </article> + + + +</div> + + <div class="page__footer"> + <footer> + <!-- start custom footer snippets --> + +<!-- end custom footer snippets --> + <style type="text/css"> + div.columns { float: left; margin-left: 10px;} + div.clear { clear: both; } +</style> +<div> + <div class="columns"> + <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a> + </div> + <div class="columns" style="width: 80%"> + <div class="page__footer-follow"> + <ul class="social-icons"> + + <li><strong>Follow:</strong></li> + + + <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li> + + + + <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li> + + + <li><a href="http://localhost:4000/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li> + </ul> + </div> + + <div class="page__footer-copyright">Copyright © 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div> + </div> +</div> +<div class="clear"></div> + </footer> + </div> + + <script src="http://localhost:4000/assets/js/main.min.js"></script> + + + + + <script> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-89603173-1', 'auto'); + ga('send', 'pageview'); +</script> + +<script> +var _hmt = _hmt || []; +(function() { + var hm = document.createElement("script"); + hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); +})(); +</script> + + + + + + <script type="text/javascript"> + /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ + var disqus_shortname = 'rocketmq'; + + /* * * DON'T EDIT BELOW THIS LINE * * */ + (function() { + var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; + dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; + (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); + })(); + + /* * * DON'T EDIT BELOW THIS LINE * * */ + (function () { + var s = document.createElement('script'); s.async = true; + s.type = 'text/javascript'; + s.src = '//' + disqus_shortname + '.disqus.com/count.js'; + (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); + }()); + </script> + <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> + + + + + + + </body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/2d7f6a51/content/docs/documentation/index.html ---------------------------------------------------------------------- diff --git a/content/docs/documentation/index.html b/content/docs/documentation/index.html new file mode 100644 index 0000000..ddc9512 --- /dev/null +++ b/content/docs/documentation/index.html @@ -0,0 +1,598 @@ +<!doctype html> +<html lang="en" class="no-js"> + <head> + <meta charset="utf-8"> + +<!-- begin SEO --> + + + + + + + + + +<title>Documentation - Apache RocketMQ</title> + + + + +<meta name="description" content="Apache RocketMQ Documentation"> + + + + +<meta property="og:locale" content="en"> +<meta property="og:site_name" content="Apache RocketMQ"> +<meta property="og:title" content="Documentation"> + + + <link rel="canonical" href="http://localhost:4000/docs/documentation/"> + <meta property="og:url" content="http://localhost:4000/docs/documentation/"> + + + + <meta property="og:description" content="Apache RocketMQ Documentation"> + + + + <meta name="twitter:site" content="@ApacheRocketMQ"> + <meta name="twitter:title" content="Documentation"> + <meta name="twitter:description" content="Apache RocketMQ Documentation"> + <meta name="twitter:url" content="http://localhost:4000/docs/documentation/"> + + + <meta name="twitter:card" content="summary"> + + + + + + + + + + + + + + + + <meta property="og:type" content="article"> + <meta property="article:published_time" content="2017-03-16T11:42:05+08:00"> + + + + + + + + + <script type="application/ld+json"> + { + "@context" : "http://schema.org", + "@type" : "Person", + "name" : "Apache RocketMQ", + "url" : "http://localhost:4000", + "sameAs" : null + } + </script> + + + + <meta name="google-site-verification" content="aand0XZkSGsziuC-UPD4ZJniFD0m0JhGx6820y2mAQY" /> + + + <meta name="baidu-site-verification" content="wD06EbDRkQ" /> + + + + +<!-- end SEO --> + + +<link href="http://localhost:4000/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed"> + +<!-- http://t.co/dKP3o1e --> +<meta name="HandheldFriendly" content="True"> +<meta name="MobileOptimized" content="320"> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<script> + document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js '; +</script> + +<!-- For all browsers --> +<link rel="stylesheet" href="http://localhost:4000/assets/css/main.css"> + +<meta http-equiv="cleartype" content="on"> + <!-- start custom head snippets --> + +<!-- insert favicons. use http://realfavicongenerator.net/ --> + +<!-- end custom head snippets --> + </head> + + <body class="layout--single"> + + <!--[if lt IE 9]> +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div> +<![endif]--> + <div class="masthead"> + <div class="masthead__inner-wrap"> + <div class="masthead__menu"> + <nav id="site-nav" class="greedy-nav"> + <button><div class="navicon"></div></button> + <ul class="visible-links"> + <li class="masthead__menu-item masthead__menu-item--lg"><a href="http://localhost:4000/">Apache RocketMQ</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/docs/quick-start/">Documentation</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/year-archive/">Blog</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/community/">Community</a></li> + + + <li class="masthead__menu-item"><a href="http://localhost:4000/about/team/">About</a></li> + + </ul> + <ul class="hidden-links hidden"></ul> + </nav> + </div> + </div> +</div> + + + + + +<div id="main" role="main"> + + <div class="sidebar sticky"> + + + + + + + + + + +<nav class="nav__list"> + + <input id="ac-toc" name="accordion-toc" type="checkbox" /> + <label for="ac-toc">Toggle Menu</label> + <ul class="nav__items"> + + <li> + + <span class="nav__sub-title">User Guide</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/quick-start/" class="">Quick Start</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/motivation/" class="">Motivation</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/core-concept/" class="">Core Concept</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Developer Guide</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/code-guidelines/" class="">Code Guidelines</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/branching-model" class="">Branching Model</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/pull-request/" class="">Best Practice in PR</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/release-manual" class="">Release Manual</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Best Practice</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-broker/" class="">Broker</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-producer/" class="">Producer</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-consumer/" class="">Consumer</a></li> + + + + + + + + <li><a href="http://localhost:4000/docs/best-practice-namesvr/" class="">NameServer</a></li> + + </ul> + + </li> + + <li> + + <span class="nav__sub-title">Release Notes</span> + + + + <ul> + + + + + + + + <li><a href="http://localhost:4000/dowloading/releases/" class="">Download</a></li> + + + + + + + + <li><a href="http://localhost:4000/release_notes/release-notes-4.0.0-incubating/" class="">4.0.0-incubating</a></li> + + </ul> + + </li> + + <li> + + + + + <a href="http://localhost:4000/docs/roadmap/"><span class="nav__sub-title">RoadMap</span></a> + + + + </li> + + <li> + + + + + <a href="http://localhost:4000/docs/faq/"><span class="nav__sub-title">FAQ</span></a> + + + + </li> + + </ul> +</nav> + + + </div> + + + <article class="page" itemscope itemtype="http://schema.org/CreativeWork"> + <meta itemprop="headline" content="Documentation"> + <meta itemprop="description" content="Apache RocketMQ Documentation"> + <meta itemprop="datePublished" content="March 16, 2017"> + <meta itemprop="dateModified" content="March 02, 2017"> + + <div class="page__inner-wrap"> + + <header> + <h1 class="page__title" itemprop="headline">Documentation +</h1> + + </header> + + + <section class="page__content" itemprop="text"> + <aside class="sidebar__right"> +<nav class="toc"> + <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header> +<ul class="toc__menu" id="markdown-toc"> + <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a> <ul> + <li><a href="#api-documentation" id="markdown-toc-api-documentation">API Documentation</a></li> + <li><a href="#documentation-content" id="markdown-toc-documentation-content">Documentation Content</a></li> + </ul> + </li> +</ul> + + </nav> +</aside> + +<h1 id="introduction">Introduction</h1> + +<p>Quality documentation is critically important to develop and maintain a project. The better the documentation is, the +easier it will be for other participants to understand and respond properly.</p> + +<h2 id="api-documentation">API Documentation</h2> + +<p>The API is documented through javadoc comments.</p> + +<p>All classes, interfaces, methods and field variables should be documented. Public methods, in particular, should be +commented fully â method purpose, return value, parameters and exceptions.</p> + +<p>Below is an example:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>/** + * Send message in synchronous mode. This method returns only when the sending procedure totally completes. + * </p> + * + * <strong>Warn:</strong> this method has internal retry-mechanism, that is, internal implementation will retry + * {@link #retryTimesWhenSendFailed} times before claiming failure. As a result, multiple messages may potentially + * delivered to broker(s). It's up to the application developers to resolve potential duplication issue. + * + * @param msg Message to send. + * @return {@link SendResult} instance to inform senders details of the deliverable, say Message ID of the message, + * {@link SendStatus} indicating broker storage/replication status, message queue sent to, etc. + * @throws MQClientException if there is any client error. + * @throws RemotingException if there is any network-tier error. + * @throws MQBrokerException if there is any error with broker. + * @throws InterruptedException if the sending thread is interrupted. + */ +@Override +public SendResult send(Message msg) throws MQClientException, RemotingException, MQBrokerException, InterruptedException { + return this.defaultMQProducerImpl.send(msg); +} +</code></pre> +</div> + +<h2 id="documentation-content">Documentation Content</h2> + +<p>Every class and interface should have summary documentation, explaining its general function and purpose. Additionally, +thread safety information should be included. If you are working on a class which represents a core concept, adding sample +usage is always a good practice.</p> + +<p>When writing API documentation, please keep a professional tune: write in active voice, be as descriptive as possible. +Keep in mind that the audience may be a developer who would use RocketMQ for the first time, or a contributor who just gets + involved with the codebase. Either of them is not as familiar with Apache RocketMQ as you are.</p> + + + + </section> + + <footer class="page__meta"> + + + + + + <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2017-03-02">March 02, 2017</time></p> + + </footer> + + <section class="page__share"> + + <h4 class="page__share-title">Share on</h4> + + + <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Documentation http://localhost:4000/docs/documentation/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a> + + <a href="https://www.facebook.com/sharer/sharer.php?u=http://localhost:4000/docs/documentation/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a> + + <a href="https://plus.google.com/share?url=http://localhost:4000/docs/documentation/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a> + + <a href="https://www.linkedin.com/shareArticle?mini=true&url=http://localhost:4000/docs/documentation/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a> +</section> + + + + <nav class="pagination"> + + <a href="http://localhost:4000/docs/code-guidelines/" class="pagination--pager" title="Coding Guidelines +">Previous</a> + + + <a href="http://localhost:4000/docs/faq/" class="pagination--pager" title="Frequently Asked Questions +">Next</a> + + </nav> + + </div> + + + <div class="page__comments"> + + + <h4 class="page__comments-title">Leave a Comment</h4> + <section id="disqus_thread"></section> + +</div> + + </article> + + + +</div> + + <div class="page__footer"> + <footer> + <!-- start custom footer snippets --> + +<!-- end custom footer snippets --> + <style type="text/css"> + div.columns { float: left; margin-left: 10px;} + div.clear { clear: both; } +</style> +<div> + <div class="columns"> + <a href="https://www.apache.org/"><img src="/assets/images/feather-small.gif" alt="Apache Software Foundation" style="height: 88px !important" /></a> + </div> + <div class="columns" style="width: 80%"> + <div class="page__footer-follow"> + <ul class="social-icons"> + + <li><strong>Follow:</strong></li> + + + <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li> + + + + <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li> + + + <li><a href="http://localhost:4000/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li> + </ul> + </div> + + <div class="page__footer-copyright">Copyright © 2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div> + </div> +</div> +<div class="clear"></div> + </footer> + </div> + + <script src="http://localhost:4000/assets/js/main.min.js"></script> + + + + + <script> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-89603173-1', 'auto'); + ga('send', 'pageview'); +</script> + +<script> +var _hmt = _hmt || []; +(function() { + var hm = document.createElement("script"); + hm.src = "https://hm.baidu.com/hm.js?36428f2b841d08e7405724cbf7f860d2"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); +})(); +</script> + + + + + + <script type="text/javascript"> + /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ + var disqus_shortname = 'rocketmq'; + + /* * * DON'T EDIT BELOW THIS LINE * * */ + (function() { + var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; + dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; + (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); + })(); + + /* * * DON'T EDIT BELOW THIS LINE * * */ + (function () { + var s = document.createElement('script'); s.async = true; + s.type = 'text/javascript'; + s.src = '//' + disqus_shortname + '.disqus.com/count.js'; + (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); + }()); + </script> + <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> + + + + + + + </body> +</html>
