You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2019/09/02 09:17:45 UTC

[pulsar] branch asf-site updated: Updated site at revision 695eedc

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new 438d748  Updated site at revision 695eedc
438d748 is described below

commit 438d7488ce326bf9a8493e0a0c4a871fa621d2ca
Author: jenkins <bu...@apache.org>
AuthorDate: Mon Sep 2 09:17:35 2019 +0000

    Updated site at revision 695eedc
---
 content/docs/en/next/cookbooks-compaction.html     |   8 +-
 .../docs/en/next/cookbooks-compaction/index.html   |   8 +-
 content/docs/en/next/io-netty.html                 | 107 ++++++++++++++++++++-
 content/docs/en/next/io-netty/index.html           | 107 ++++++++++++++++++++-
 content/docs/fr/next/cookbooks-compaction.html     |   8 +-
 .../docs/fr/next/cookbooks-compaction/index.html   |   8 +-
 content/docs/fr/next/io-netty.html                 | 100 ++++++++++++++++++-
 content/docs/fr/next/io-netty/index.html           | 100 ++++++++++++++++++-
 content/docs/ja/next/cookbooks-compaction.html     |   8 +-
 .../docs/ja/next/cookbooks-compaction/index.html   |   8 +-
 content/docs/ja/next/io-netty.html                 | 100 ++++++++++++++++++-
 content/docs/ja/next/io-netty/index.html           | 100 ++++++++++++++++++-
 content/docs/zh-CN/next/cookbooks-compaction.html  |   8 +-
 .../zh-CN/next/cookbooks-compaction/index.html     |   8 +-
 content/docs/zh-CN/next/io-netty.html              | 100 ++++++++++++++++++-
 content/docs/zh-CN/next/io-netty/index.html        | 100 ++++++++++++++++++-
 content/en/powered-by.html                         |   2 +-
 content/en/powered-by/index.html                   |   2 +-
 content/fr/powered-by.html                         |   2 +-
 content/fr/powered-by/index.html                   |   2 +-
 content/ja/powered-by.html                         |   2 +-
 content/ja/powered-by/index.html                   |   2 +-
 content/powered-by.html                            |   2 +-
 content/powered-by/index.html                      |   2 +-
 content/swagger/2.5.0-SNAPSHOT/swagger.json        |  56 +++++------
 .../swagger/2.5.0-SNAPSHOT/swaggerfunctions.json   |  52 +++++-----
 content/swagger/swagger.json                       |  56 +++++------
 content/swagger/swaggerfunctions.json              |  52 +++++-----
 content/zh-CN/powered-by.html                      |   2 +-
 content/zh-CN/powered-by/index.html                |   2 +-
 30 files changed, 940 insertions(+), 174 deletions(-)

diff --git a/content/docs/en/next/cookbooks-compaction.html b/content/docs/en/next/cookbooks-compaction.html
index 169f99d..acf7e22 100644
--- a/content/docs/en/next/cookbooks-compaction.html
+++ b/content/docs/en/next/cookbooks-compaction.html
@@ -125,12 +125,8 @@ $ bin/pulsar compact-topic \
 </code></pre>
 <h4><a class="anchor" aria-hidden="true" id="when-should-i-trigger-compaction"></a><a href="#when-should-i-trigger-compaction" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
 <p>How often you <a href="#trigger">trigger compaction</a> will vary widely based on the use case. If you want a compacted topic to be extremely speedy on read, then you should run compaction fairly frequently.</p>
-<h2><a class="anchor" aria-hidden="true" id="consumer-configuration-config"></a><a href="#consumer-configuration-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<h2><a class="anchor" aria-hidden="true" id="consumer-configuration"></a><a href="#consumer-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Pulsar consumers and readers need to be configured to read from compacted topics. The sections below show you how to enable compacted topic reads for Pulsar's language clients. If the</p>
-<blockquote>
-<h4><a class="anchor" aria-hidden="true" id="java-only"></a><a href="#java-only" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
-<p>Currently, only <a href="#java">Java</a> clients can consume messages from compacted topics.</p>
-</blockquote>
 <h3><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>In order to read from a compacted topic using a Java consumer, the <code>readCompacted</code> parameter must be set to <code>true</code>. Here's an example consumer for a compacted topic:</p>
 <pre><code class="hljs css language-java">Consumer&lt;<span class="hljs-keyword">byte</span>[]&gt; compactedTopicConsumer = client.newConsumer()
@@ -168,7 +164,7 @@ Message&lt;<span class="hljs-keyword">byte</span>[]&gt; msg = MessageBuilder.cre
 
 compactedTopicProducer.send(msg);
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/en/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/en/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/cookbooks-compaction/index.html b/content/docs/en/next/cookbooks-compaction/index.html
index 169f99d..acf7e22 100644
--- a/content/docs/en/next/cookbooks-compaction/index.html
+++ b/content/docs/en/next/cookbooks-compaction/index.html
@@ -125,12 +125,8 @@ $ bin/pulsar compact-topic \
 </code></pre>
 <h4><a class="anchor" aria-hidden="true" id="when-should-i-trigger-compaction"></a><a href="#when-should-i-trigger-compaction" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
 <p>How often you <a href="#trigger">trigger compaction</a> will vary widely based on the use case. If you want a compacted topic to be extremely speedy on read, then you should run compaction fairly frequently.</p>
-<h2><a class="anchor" aria-hidden="true" id="consumer-configuration-config"></a><a href="#consumer-configuration-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<h2><a class="anchor" aria-hidden="true" id="consumer-configuration"></a><a href="#consumer-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Pulsar consumers and readers need to be configured to read from compacted topics. The sections below show you how to enable compacted topic reads for Pulsar's language clients. If the</p>
-<blockquote>
-<h4><a class="anchor" aria-hidden="true" id="java-only"></a><a href="#java-only" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
-<p>Currently, only <a href="#java">Java</a> clients can consume messages from compacted topics.</p>
-</blockquote>
 <h3><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>In order to read from a compacted topic using a Java consumer, the <code>readCompacted</code> parameter must be set to <code>true</code>. Here's an example consumer for a compacted topic:</p>
 <pre><code class="hljs css language-java">Consumer&lt;<span class="hljs-keyword">byte</span>[]&gt; compactedTopicConsumer = client.newConsumer()
@@ -168,7 +164,7 @@ Message&lt;<span class="hljs-keyword">byte</span>[]&gt; msg = MessageBuilder.cre
 
 compactedTopicProducer.send(msg);
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/en/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/en/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/io-netty.html b/content/docs/en/next/io-netty.html
index bec63e4..a85c543 100644
--- a/content/docs/en/next/io-netty.html
+++ b/content/docs/en/next/io-netty.html
@@ -34,7 +34,112 @@ Otherwise, if the connector is running in process or thread mode, the instances
 <tr><td><code>numberOfThreads</code></td><td><code>false</code></td><td><code>1</code></td><td>The number of threads of Netty Tcp Server to accept incoming connections and handle the traffic of the accepted connections.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of T [...]
+<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Here is a configuration Json example:</p>
+<pre><code class="hljs css language-$json">{
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"tcp"</span>,
+    <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+    <span class="hljs-attr">"port"</span>: <span class="hljs-string">"10911"</span>,
+    <span class="hljs-attr">"numberOfThreads"</span>: <span class="hljs-string">"5"</span>
+}
+</code></pre>
+<p>Here is a configuration Yaml example:</p>
+<pre><code class="hljs css language-$yaml"><span class="hljs-symbol">configs:</span>
+<span class="hljs-symbol">    type:</span> <span class="hljs-string">"tcp"</span>
+<span class="hljs-symbol">    host:</span> <span class="hljs-string">"127.0.0.1"</span>
+<span class="hljs-symbol">    port:</span> <span class="hljs-number">10999</span>
+<span class="hljs-symbol">    numberOfThreads:</span> <span class="hljs-number">1</span>
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="usage-example"></a><a href="#usage-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<ul>
+<li>Start pulsar standalone</li>
+</ul>
+<pre><code class="hljs css language-$bash">docker pull apachepulsar/pulsar:<span class="hljs-number">2.4</span><span class="hljs-number">.0</span>
+docker run -d -it -p <span class="hljs-number">6650</span>:<span class="hljs-number">6650</span> -p <span class="hljs-number">8080</span>:<span class="hljs-number">8080</span> -v $PWD/data:/pulsar/data --name pulsar-netty-standalone apachepulsar/pulsar:<span class="hljs-number">2.4</span><span class="hljs-number">.0</span> bin/pulsar standalone
+</code></pre>
+<ul>
+<li>Start pulsar-io in standalone</li>
+</ul>
+<h4><a class="anchor" aria-hidden="true" id="tcp-example"></a><a href="#tcp-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<ul>
+<li>Config file netty-source-config.yaml</li>
+</ul>
+<pre><code class="hljs css language-$yaml"><span class="hljs-symbol">configs:</span>
+<span class="hljs-symbol">    type:</span> <span class="hljs-string">"tcp"</span>
+<span class="hljs-symbol">    host:</span> <span class="hljs-string">"127.0.0.1"</span>
+<span class="hljs-symbol">    port:</span> <span class="hljs-number">10999</span>
+<span class="hljs-symbol">    numberOfThreads:</span> <span class="hljs-number">1</span>
+</code></pre>
+<ul>
+<li>Copy configuration file to pulsar server</li>
+</ul>
+<pre><code class="hljs css language-$bash">docker <span class="hljs-keyword">cp</span> netty-<span class="hljs-keyword">source</span>-config.yaml pulsar-netty-standalone:/pulsar/<span class="hljs-keyword">conf</span>/
+</code></pre>
+<ul>
+<li>Download netty connector and start netty connector</li>
+</ul>
+<pre><code class="hljs css language-$bash">docker exec -it pulsar-netty-standalone <span class="hljs-string">/bin/bash</span>
+curl -O http:<span class="hljs-string">//mirror-hk.koddos.net/apache/pulsar/pulsar-2.4.0/connectors/pulsar-io-netty-2.4.0.nar</span>
+<span class="hljs-string">./bin/pulsar-admin</span> sources localrun <span class="hljs-params">--archive</span> pulsar-io-{{pulsar<span class="hljs-function">:version</span>}}<span class="hljs-string">.nar</span> <span class="hljs-params">--tenant</span> public <span class="hljs-params">--namespace</span> default <span class="hljs-params">--name</span> netty <span class="hljs-params">--destination-topic-name</span> netty-topic <span class="hljs-params">--source-config-file</span> netty-s [...]
+</code></pre>
+<ul>
+<li>Consume data</li>
+</ul>
+<pre><code class="hljs css language-$bash"><span class="hljs-symbol">docker</span> exec -<span class="hljs-keyword">it </span>pulsar-netty-standalone /<span class="hljs-keyword">bin/bash
+</span>./<span class="hljs-keyword">bin/pulsar-client </span>consume -t Exclusive -s netty-<span class="hljs-keyword">sub </span>netty-topic -n <span class="hljs-number">0</span>
+</code></pre>
+<ul>
+<li>Open another window for send data to netty source</li>
+</ul>
+<pre><code class="hljs css language-$bash">docker exec -it pulsar-netty-standalone /bin/bash
+apt-<span class="hljs-keyword">get</span> update
+apt-<span class="hljs-keyword">get</span> -y install telnet
+<span class="hljs-symbol">root@</span><span class="hljs-number">1</span>d19327b2c67:/pulsar# telnet <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span> <span class="hljs-number">10999</span>
+Trying <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>...
+Connected to <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>.
+Escape character <span class="hljs-keyword">is</span> <span class="hljs-string">'^]'</span>.
+hello
+world
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<p>In the consumer window just opened, you can see the following data</p>
+<pre><code class="hljs css language-bash">----- got message -----
+hello
+
+----- got message -----
+world
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="http-example"></a><a href="#http-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<ul>
+<li>Config file netty-source-config.yaml</li>
+</ul>
+<pre><code class="hljs css language-$yaml"><span class="hljs-symbol">configs:</span>
+<span class="hljs-symbol">    type:</span> <span class="hljs-string">"http"</span>
+<span class="hljs-symbol">    host:</span> <span class="hljs-string">"127.0.0.1"</span>
+<span class="hljs-symbol">    port:</span> <span class="hljs-number">10999</span>
+<span class="hljs-symbol">    numberOfThreads:</span> <span class="hljs-number">1</span>
+</code></pre>
+<ul>
+<li>Start netty source</li>
+</ul>
+<pre><code class="hljs css language-$bash">docker exec -it pulsar-netty-standalone <span class="hljs-string">/bin/bash</span>
+<span class="hljs-string">./bin/pulsar-admin</span> sources localrun <span class="hljs-params">--archive</span> pulsar-io-{{pulsar<span class="hljs-function">:version</span>}}<span class="hljs-string">.nar</span> <span class="hljs-params">--tenant</span> public <span class="hljs-params">--namespace</span> default <span class="hljs-params">--name</span> netty <span class="hljs-params">--destination-topic-name</span> netty-topic <span class="hljs-params">--source-config-file</span> netty-s [...]
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<pre><code class="hljs css language-bash">curl -X POST --data <span class="hljs-string">'hello, world!'</span> http://127.0.0.1:10999/
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<p>In the consumer window just opened, you can see the following data</p>
+<pre><code class="hljs css language-bash">----- got message -----
+hello, world!
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li><li><a href="#configuration-example">Configuration Example</a></li><li><a href="#usage-example">Usage example</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/io-netty/index.html b/content/docs/en/next/io-netty/index.html
index bec63e4..a85c543 100644
--- a/content/docs/en/next/io-netty/index.html
+++ b/content/docs/en/next/io-netty/index.html
@@ -34,7 +34,112 @@ Otherwise, if the connector is running in process or thread mode, the instances
 <tr><td><code>numberOfThreads</code></td><td><code>false</code></td><td><code>1</code></td><td>The number of threads of Netty Tcp Server to accept incoming connections and handle the traffic of the accepted connections.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of T [...]
+<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Here is a configuration Json example:</p>
+<pre><code class="hljs css language-$json">{
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"tcp"</span>,
+    <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+    <span class="hljs-attr">"port"</span>: <span class="hljs-string">"10911"</span>,
+    <span class="hljs-attr">"numberOfThreads"</span>: <span class="hljs-string">"5"</span>
+}
+</code></pre>
+<p>Here is a configuration Yaml example:</p>
+<pre><code class="hljs css language-$yaml"><span class="hljs-symbol">configs:</span>
+<span class="hljs-symbol">    type:</span> <span class="hljs-string">"tcp"</span>
+<span class="hljs-symbol">    host:</span> <span class="hljs-string">"127.0.0.1"</span>
+<span class="hljs-symbol">    port:</span> <span class="hljs-number">10999</span>
+<span class="hljs-symbol">    numberOfThreads:</span> <span class="hljs-number">1</span>
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="usage-example"></a><a href="#usage-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<ul>
+<li>Start pulsar standalone</li>
+</ul>
+<pre><code class="hljs css language-$bash">docker pull apachepulsar/pulsar:<span class="hljs-number">2.4</span><span class="hljs-number">.0</span>
+docker run -d -it -p <span class="hljs-number">6650</span>:<span class="hljs-number">6650</span> -p <span class="hljs-number">8080</span>:<span class="hljs-number">8080</span> -v $PWD/data:/pulsar/data --name pulsar-netty-standalone apachepulsar/pulsar:<span class="hljs-number">2.4</span><span class="hljs-number">.0</span> bin/pulsar standalone
+</code></pre>
+<ul>
+<li>Start pulsar-io in standalone</li>
+</ul>
+<h4><a class="anchor" aria-hidden="true" id="tcp-example"></a><a href="#tcp-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<ul>
+<li>Config file netty-source-config.yaml</li>
+</ul>
+<pre><code class="hljs css language-$yaml"><span class="hljs-symbol">configs:</span>
+<span class="hljs-symbol">    type:</span> <span class="hljs-string">"tcp"</span>
+<span class="hljs-symbol">    host:</span> <span class="hljs-string">"127.0.0.1"</span>
+<span class="hljs-symbol">    port:</span> <span class="hljs-number">10999</span>
+<span class="hljs-symbol">    numberOfThreads:</span> <span class="hljs-number">1</span>
+</code></pre>
+<ul>
+<li>Copy configuration file to pulsar server</li>
+</ul>
+<pre><code class="hljs css language-$bash">docker <span class="hljs-keyword">cp</span> netty-<span class="hljs-keyword">source</span>-config.yaml pulsar-netty-standalone:/pulsar/<span class="hljs-keyword">conf</span>/
+</code></pre>
+<ul>
+<li>Download netty connector and start netty connector</li>
+</ul>
+<pre><code class="hljs css language-$bash">docker exec -it pulsar-netty-standalone <span class="hljs-string">/bin/bash</span>
+curl -O http:<span class="hljs-string">//mirror-hk.koddos.net/apache/pulsar/pulsar-2.4.0/connectors/pulsar-io-netty-2.4.0.nar</span>
+<span class="hljs-string">./bin/pulsar-admin</span> sources localrun <span class="hljs-params">--archive</span> pulsar-io-{{pulsar<span class="hljs-function">:version</span>}}<span class="hljs-string">.nar</span> <span class="hljs-params">--tenant</span> public <span class="hljs-params">--namespace</span> default <span class="hljs-params">--name</span> netty <span class="hljs-params">--destination-topic-name</span> netty-topic <span class="hljs-params">--source-config-file</span> netty-s [...]
+</code></pre>
+<ul>
+<li>Consume data</li>
+</ul>
+<pre><code class="hljs css language-$bash"><span class="hljs-symbol">docker</span> exec -<span class="hljs-keyword">it </span>pulsar-netty-standalone /<span class="hljs-keyword">bin/bash
+</span>./<span class="hljs-keyword">bin/pulsar-client </span>consume -t Exclusive -s netty-<span class="hljs-keyword">sub </span>netty-topic -n <span class="hljs-number">0</span>
+</code></pre>
+<ul>
+<li>Open another window for send data to netty source</li>
+</ul>
+<pre><code class="hljs css language-$bash">docker exec -it pulsar-netty-standalone /bin/bash
+apt-<span class="hljs-keyword">get</span> update
+apt-<span class="hljs-keyword">get</span> -y install telnet
+<span class="hljs-symbol">root@</span><span class="hljs-number">1</span>d19327b2c67:/pulsar# telnet <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span> <span class="hljs-number">10999</span>
+Trying <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>...
+Connected to <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>.
+Escape character <span class="hljs-keyword">is</span> <span class="hljs-string">'^]'</span>.
+hello
+world
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<p>In the consumer window just opened, you can see the following data</p>
+<pre><code class="hljs css language-bash">----- got message -----
+hello
+
+----- got message -----
+world
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="http-example"></a><a href="#http-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<ul>
+<li>Config file netty-source-config.yaml</li>
+</ul>
+<pre><code class="hljs css language-$yaml"><span class="hljs-symbol">configs:</span>
+<span class="hljs-symbol">    type:</span> <span class="hljs-string">"http"</span>
+<span class="hljs-symbol">    host:</span> <span class="hljs-string">"127.0.0.1"</span>
+<span class="hljs-symbol">    port:</span> <span class="hljs-number">10999</span>
+<span class="hljs-symbol">    numberOfThreads:</span> <span class="hljs-number">1</span>
+</code></pre>
+<ul>
+<li>Start netty source</li>
+</ul>
+<pre><code class="hljs css language-$bash">docker exec -it pulsar-netty-standalone <span class="hljs-string">/bin/bash</span>
+<span class="hljs-string">./bin/pulsar-admin</span> sources localrun <span class="hljs-params">--archive</span> pulsar-io-{{pulsar<span class="hljs-function">:version</span>}}<span class="hljs-string">.nar</span> <span class="hljs-params">--tenant</span> public <span class="hljs-params">--namespace</span> default <span class="hljs-params">--name</span> netty <span class="hljs-params">--destination-topic-name</span> netty-topic <span class="hljs-params">--source-config-file</span> netty-s [...]
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<pre><code class="hljs css language-bash">curl -X POST --data <span class="hljs-string">'hello, world!'</span> http://127.0.0.1:10999/
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<p>In the consumer window just opened, you can see the following data</p>
+<pre><code class="hljs css language-bash">----- got message -----
+hello, world!
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li><li><a href="#configuration-example">Configuration Example</a></li><li><a href="#usage-example">Usage example</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/cookbooks-compaction.html b/content/docs/fr/next/cookbooks-compaction.html
index 5986934..f8b903f 100644
--- a/content/docs/fr/next/cookbooks-compaction.html
+++ b/content/docs/fr/next/cookbooks-compaction.html
@@ -125,12 +125,8 @@ $ bin/pulsar compact-topic \
 </code></pre>
 <h4><a class="anchor" aria-hidden="true" id="when-should-i-trigger-compaction"></a><a href="#when-should-i-trigger-compaction" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
 <p>How often you <a href="#trigger">trigger compaction</a> will vary widely based on the use case. If you want a compacted topic to be extremely speedy on read, then you should run compaction fairly frequently.</p>
-<h2><a class="anchor" aria-hidden="true" id="consumer-configuration-config"></a><a href="#consumer-configuration-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<h2><a class="anchor" aria-hidden="true" id="consumer-configuration"></a><a href="#consumer-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Pulsar consumers and readers need to be configured to read from compacted topics. The sections below show you how to enable compacted topic reads for Pulsar's language clients. If the</p>
-<blockquote>
-<h4><a class="anchor" aria-hidden="true" id="java-only"></a><a href="#java-only" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
-<p>Currently, only <a href="#java">Java</a> clients can consume messages from compacted topics.</p>
-</blockquote>
 <h3><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>In order to read from a compacted topic using a Java consumer, the <code>readCompacted</code> parameter must be set to <code>true</code>. Here's an example consumer for a compacted topic:</p>
 <pre><code class="hljs css language-java">Consumer&lt;<span class="hljs-keyword">byte</span>[]&gt; compactedTopicConsumer = client.newConsumer()
@@ -168,7 +164,7 @@ Message&lt;<span class="hljs-keyword">byte</span>[]&gt; msg = MessageBuilder.cre
 
 compactedTopicProducer.send(msg);
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/fr/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/fr/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/cookbooks-compaction/index.html b/content/docs/fr/next/cookbooks-compaction/index.html
index 5986934..f8b903f 100644
--- a/content/docs/fr/next/cookbooks-compaction/index.html
+++ b/content/docs/fr/next/cookbooks-compaction/index.html
@@ -125,12 +125,8 @@ $ bin/pulsar compact-topic \
 </code></pre>
 <h4><a class="anchor" aria-hidden="true" id="when-should-i-trigger-compaction"></a><a href="#when-should-i-trigger-compaction" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
 <p>How often you <a href="#trigger">trigger compaction</a> will vary widely based on the use case. If you want a compacted topic to be extremely speedy on read, then you should run compaction fairly frequently.</p>
-<h2><a class="anchor" aria-hidden="true" id="consumer-configuration-config"></a><a href="#consumer-configuration-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<h2><a class="anchor" aria-hidden="true" id="consumer-configuration"></a><a href="#consumer-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Pulsar consumers and readers need to be configured to read from compacted topics. The sections below show you how to enable compacted topic reads for Pulsar's language clients. If the</p>
-<blockquote>
-<h4><a class="anchor" aria-hidden="true" id="java-only"></a><a href="#java-only" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
-<p>Currently, only <a href="#java">Java</a> clients can consume messages from compacted topics.</p>
-</blockquote>
 <h3><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>In order to read from a compacted topic using a Java consumer, the <code>readCompacted</code> parameter must be set to <code>true</code>. Here's an example consumer for a compacted topic:</p>
 <pre><code class="hljs css language-java">Consumer&lt;<span class="hljs-keyword">byte</span>[]&gt; compactedTopicConsumer = client.newConsumer()
@@ -168,7 +164,7 @@ Message&lt;<span class="hljs-keyword">byte</span>[]&gt; msg = MessageBuilder.cre
 
 compactedTopicProducer.send(msg);
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/fr/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/fr/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/io-netty.html b/content/docs/fr/next/io-netty.html
index e0332ad..565dccc 100644
--- a/content/docs/fr/next/io-netty.html
+++ b/content/docs/fr/next/io-netty.html
@@ -32,7 +32,105 @@
 <tr><td><code>numberOfThreads</code></td><td><code>false</code></td><td><code>1</code></td><td>The number of threads of Netty Tcp Server to accept incoming connections and handle the traffic of the accepted connections.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of T [...]
+<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Here is a configuration Json example:</p>
+<pre><code class="hljs css language-$json { &quot;type&quot;: &quot;tcp&quot;, &quot;host&quot;: &quot;127.0.0.1&quot;, &quot;port&quot;: &quot;10911&quot;, &quot;numberOfThreads&quot;: &quot;5&quot; }">
+    Here is a configuration Yaml example:
+    
+    ```$yaml
+    configs:
+        type: "tcp"
+        host: "127.0.0.1"
+        port: 10999
+        numberOfThreads: 1
+    
+
+<span class="hljs-comment">### Usage example</span>
+
+- <span class="hljs-keyword">Start</span> pulsar <span class="hljs-keyword">standalone</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker pull apachepulsar/pulsar:2.4.0 docker run -d -it -p 6650:6650 -p 8080:8080 -v $PWD/data:/pulsar/data --name pulsar-netty-standalone apachepulsar/pulsar:2.4.0 bin/pulsar standalone
+
+    &lt;br /&gt;- Start pulsar-io in standalone
+    
+    #### Tcp example
+    
+    - Config file netty-source-config.yaml
+    
+    `</span><span class="hljs-string">``</span>$yaml
+    configs:
+        <span class="hljs-keyword">type</span>: <span class="hljs-string">"tcp"</span>
+        host: <span class="hljs-string">"127.0.0.1"</span>
+        port: <span class="hljs-number">10999</span>
+        numberOfThreads: <span class="hljs-number">1</span>
+    
+
+- Copy configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">to</span> pulsar <span class="hljs-keyword">server</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker cp netty-source-config.yaml pulsar-netty-standalone:/pulsar/conf/
+
+    &lt;br /&gt;- Download netty connector and start netty connector
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    curl -O <span class="hljs-keyword">http</span>://mirror-hk.koddos.net/apache/pulsar/pulsar<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>/connectors/pulsar-io-netty<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>.nar
+    ./<span class="hljs-keyword">bin</span>/pulsar-<span class="hljs-keyword">admin</span> sources localrun <span class="hljs-comment">--archive pulsar-io-2.4.0.nar --tenant public --namespace default --name netty --destination-topic-name netty-topic --source-config-file netty-source-config.yaml --parallelism 1</span>
+    
+
+- Consume <span class="hljs-keyword">data</span> 
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker exec -it pulsar-netty-standalone /bin/bash ./bin/pulsar-client consume -t Exclusive -s netty-sub netty-topic -n 0
+
+    &lt;br /&gt;- Open another window for send data to netty source
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">update</span>
+    apt-<span class="hljs-keyword">get</span> -y <span class="hljs-keyword">install</span> telnet
+    root@<span class="hljs-number">1</span>d19327b2c67:/pulsar<span class="hljs-comment"># telnet 127.0.0.1 10999</span>
+    Trying <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>...
+    Connected <span class="hljs-keyword">to</span> <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>.
+    Escape <span class="hljs-built_in">character</span> <span class="hljs-keyword">is</span> <span class="hljs-string">'^]'</span>.
+    hello
+    world
+    
+
+- Verification results
+
+<span class="hljs-keyword">In</span> the consumer <span class="hljs-keyword">window</span> just opened, you can see the <span class="hljs-keyword">following</span> <span class="hljs-keyword">data</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`bash
+----- got message -----
+hello
+
+----- got message -----
+world
+</span></code></pre>
+<h4><a class="anchor" aria-hidden="true" id="http-example"></a><a href="#http-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<ul>
+<li>Config file netty-source-config.yaml</li>
+</ul>
+<pre><code class="hljs css language-$yaml configs: type: &quot;http&quot; host: &quot;127.0.0.1&quot; port: 10999 numberOfThreads: 1">
+    - Start netty source
+    
+    ```$bash
+    docker exec -it pulsar-netty-standalone <span class="hljs-string">/bin/bash</span>
+    <span class="hljs-string">./bin/pulsar-admin</span> sources localrun <span class="hljs-params">--archive</span> pulsar-io-{{pulsar<span class="hljs-function">:version</span>}}<span class="hljs-string">.nar</span> <span class="hljs-params">--tenant</span> public <span class="hljs-params">--namespace</span> default <span class="hljs-params">--name</span> netty <span class="hljs-params">--destination-topic-name</span> netty-topic <span class="hljs-params">--source-config-file</span> net [...]
+    
+
+- Verification results
+
+```bash
+curl -X POST <span class="hljs-params">--data</span> 'hello, world!' http:<span class="hljs-string">//127.0.0.1</span><span class="hljs-function">:10999</span>/
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<p>In the consumer window just opened, you can see the following data</p>
+<pre><code class="hljs css language-bash">----- got message -----
+hello, world!
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li><li><a href="#configuration-example">Configuration Example</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Ap [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/io-netty/index.html b/content/docs/fr/next/io-netty/index.html
index e0332ad..565dccc 100644
--- a/content/docs/fr/next/io-netty/index.html
+++ b/content/docs/fr/next/io-netty/index.html
@@ -32,7 +32,105 @@
 <tr><td><code>numberOfThreads</code></td><td><code>false</code></td><td><code>1</code></td><td>The number of threads of Netty Tcp Server to accept incoming connections and handle the traffic of the accepted connections.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of T [...]
+<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Here is a configuration Json example:</p>
+<pre><code class="hljs css language-$json { &quot;type&quot;: &quot;tcp&quot;, &quot;host&quot;: &quot;127.0.0.1&quot;, &quot;port&quot;: &quot;10911&quot;, &quot;numberOfThreads&quot;: &quot;5&quot; }">
+    Here is a configuration Yaml example:
+    
+    ```$yaml
+    configs:
+        type: "tcp"
+        host: "127.0.0.1"
+        port: 10999
+        numberOfThreads: 1
+    
+
+<span class="hljs-comment">### Usage example</span>
+
+- <span class="hljs-keyword">Start</span> pulsar <span class="hljs-keyword">standalone</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker pull apachepulsar/pulsar:2.4.0 docker run -d -it -p 6650:6650 -p 8080:8080 -v $PWD/data:/pulsar/data --name pulsar-netty-standalone apachepulsar/pulsar:2.4.0 bin/pulsar standalone
+
+    &lt;br /&gt;- Start pulsar-io in standalone
+    
+    #### Tcp example
+    
+    - Config file netty-source-config.yaml
+    
+    `</span><span class="hljs-string">``</span>$yaml
+    configs:
+        <span class="hljs-keyword">type</span>: <span class="hljs-string">"tcp"</span>
+        host: <span class="hljs-string">"127.0.0.1"</span>
+        port: <span class="hljs-number">10999</span>
+        numberOfThreads: <span class="hljs-number">1</span>
+    
+
+- Copy configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">to</span> pulsar <span class="hljs-keyword">server</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker cp netty-source-config.yaml pulsar-netty-standalone:/pulsar/conf/
+
+    &lt;br /&gt;- Download netty connector and start netty connector
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    curl -O <span class="hljs-keyword">http</span>://mirror-hk.koddos.net/apache/pulsar/pulsar<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>/connectors/pulsar-io-netty<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>.nar
+    ./<span class="hljs-keyword">bin</span>/pulsar-<span class="hljs-keyword">admin</span> sources localrun <span class="hljs-comment">--archive pulsar-io-2.4.0.nar --tenant public --namespace default --name netty --destination-topic-name netty-topic --source-config-file netty-source-config.yaml --parallelism 1</span>
+    
+
+- Consume <span class="hljs-keyword">data</span> 
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker exec -it pulsar-netty-standalone /bin/bash ./bin/pulsar-client consume -t Exclusive -s netty-sub netty-topic -n 0
+
+    &lt;br /&gt;- Open another window for send data to netty source
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">update</span>
+    apt-<span class="hljs-keyword">get</span> -y <span class="hljs-keyword">install</span> telnet
+    root@<span class="hljs-number">1</span>d19327b2c67:/pulsar<span class="hljs-comment"># telnet 127.0.0.1 10999</span>
+    Trying <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>...
+    Connected <span class="hljs-keyword">to</span> <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>.
+    Escape <span class="hljs-built_in">character</span> <span class="hljs-keyword">is</span> <span class="hljs-string">'^]'</span>.
+    hello
+    world
+    
+
+- Verification results
+
+<span class="hljs-keyword">In</span> the consumer <span class="hljs-keyword">window</span> just opened, you can see the <span class="hljs-keyword">following</span> <span class="hljs-keyword">data</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`bash
+----- got message -----
+hello
+
+----- got message -----
+world
+</span></code></pre>
+<h4><a class="anchor" aria-hidden="true" id="http-example"></a><a href="#http-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<ul>
+<li>Config file netty-source-config.yaml</li>
+</ul>
+<pre><code class="hljs css language-$yaml configs: type: &quot;http&quot; host: &quot;127.0.0.1&quot; port: 10999 numberOfThreads: 1">
+    - Start netty source
+    
+    ```$bash
+    docker exec -it pulsar-netty-standalone <span class="hljs-string">/bin/bash</span>
+    <span class="hljs-string">./bin/pulsar-admin</span> sources localrun <span class="hljs-params">--archive</span> pulsar-io-{{pulsar<span class="hljs-function">:version</span>}}<span class="hljs-string">.nar</span> <span class="hljs-params">--tenant</span> public <span class="hljs-params">--namespace</span> default <span class="hljs-params">--name</span> netty <span class="hljs-params">--destination-topic-name</span> netty-topic <span class="hljs-params">--source-config-file</span> net [...]
+    
+
+- Verification results
+
+```bash
+curl -X POST <span class="hljs-params">--data</span> 'hello, world!' http:<span class="hljs-string">//127.0.0.1</span><span class="hljs-function">:10999</span>/
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<p>In the consumer window just opened, you can see the following data</p>
+<pre><code class="hljs css language-bash">----- got message -----
+hello, world!
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li><li><a href="#configuration-example">Configuration Example</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Ap [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/cookbooks-compaction.html b/content/docs/ja/next/cookbooks-compaction.html
index 909b7fe..79314aa 100644
--- a/content/docs/ja/next/cookbooks-compaction.html
+++ b/content/docs/ja/next/cookbooks-compaction.html
@@ -125,12 +125,8 @@ $ bin/pulsar compact-topic \
 </code></pre>
 <h4><a class="anchor" aria-hidden="true" id="when-should-i-trigger-compaction"></a><a href="#when-should-i-trigger-compaction" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
 <p>How often you <a href="#trigger">trigger compaction</a> will vary widely based on the use case. If you want a compacted topic to be extremely speedy on read, then you should run compaction fairly frequently.</p>
-<h2><a class="anchor" aria-hidden="true" id="consumer-configuration-config"></a><a href="#consumer-configuration-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<h2><a class="anchor" aria-hidden="true" id="consumer-configuration"></a><a href="#consumer-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Pulsar consumers and readers need to be configured to read from compacted topics. The sections below show you how to enable compacted topic reads for Pulsar's language clients. If the</p>
-<blockquote>
-<h4><a class="anchor" aria-hidden="true" id="java-only"></a><a href="#java-only" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
-<p>Currently, only <a href="#java">Java</a> clients can consume messages from compacted topics.</p>
-</blockquote>
 <h3><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>In order to read from a compacted topic using a Java consumer, the <code>readCompacted</code> parameter must be set to <code>true</code>. Here's an example consumer for a compacted topic:</p>
 <pre><code class="hljs css language-java">Consumer&lt;<span class="hljs-keyword">byte</span>[]&gt; compactedTopicConsumer = client.newConsumer()
@@ -168,7 +164,7 @@ Message&lt;<span class="hljs-keyword">byte</span>[]&gt; msg = MessageBuilder.cre
 
 compactedTopicProducer.send(msg);
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/ja/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/ja/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/cookbooks-compaction/index.html b/content/docs/ja/next/cookbooks-compaction/index.html
index 909b7fe..79314aa 100644
--- a/content/docs/ja/next/cookbooks-compaction/index.html
+++ b/content/docs/ja/next/cookbooks-compaction/index.html
@@ -125,12 +125,8 @@ $ bin/pulsar compact-topic \
 </code></pre>
 <h4><a class="anchor" aria-hidden="true" id="when-should-i-trigger-compaction"></a><a href="#when-should-i-trigger-compaction" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
 <p>How often you <a href="#trigger">trigger compaction</a> will vary widely based on the use case. If you want a compacted topic to be extremely speedy on read, then you should run compaction fairly frequently.</p>
-<h2><a class="anchor" aria-hidden="true" id="consumer-configuration-config"></a><a href="#consumer-configuration-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<h2><a class="anchor" aria-hidden="true" id="consumer-configuration"></a><a href="#consumer-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Pulsar consumers and readers need to be configured to read from compacted topics. The sections below show you how to enable compacted topic reads for Pulsar's language clients. If the</p>
-<blockquote>
-<h4><a class="anchor" aria-hidden="true" id="java-only"></a><a href="#java-only" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
-<p>Currently, only <a href="#java">Java</a> clients can consume messages from compacted topics.</p>
-</blockquote>
 <h3><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>In order to read from a compacted topic using a Java consumer, the <code>readCompacted</code> parameter must be set to <code>true</code>. Here's an example consumer for a compacted topic:</p>
 <pre><code class="hljs css language-java">Consumer&lt;<span class="hljs-keyword">byte</span>[]&gt; compactedTopicConsumer = client.newConsumer()
@@ -168,7 +164,7 @@ Message&lt;<span class="hljs-keyword">byte</span>[]&gt; msg = MessageBuilder.cre
 
 compactedTopicProducer.send(msg);
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/ja/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/ja/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compacted top [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/io-netty.html b/content/docs/ja/next/io-netty.html
index a36e090..a3906b5 100644
--- a/content/docs/ja/next/io-netty.html
+++ b/content/docs/ja/next/io-netty.html
@@ -32,7 +32,105 @@
 <tr><td><code>numberOfThreads</code></td><td><code>false</code></td><td><code>1</code></td><td>The number of threads of Netty Tcp Server to accept incoming connections and handle the traffic of the accepted connections.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of T [...]
+<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Here is a configuration Json example:</p>
+<pre><code class="hljs css language-$json { &quot;type&quot;: &quot;tcp&quot;, &quot;host&quot;: &quot;127.0.0.1&quot;, &quot;port&quot;: &quot;10911&quot;, &quot;numberOfThreads&quot;: &quot;5&quot; }">
+    Here is a configuration Yaml example:
+    
+    ```$yaml
+    configs:
+        type: "tcp"
+        host: "127.0.0.1"
+        port: 10999
+        numberOfThreads: 1
+    
+
+<span class="hljs-comment">### Usage example</span>
+
+- <span class="hljs-keyword">Start</span> pulsar <span class="hljs-keyword">standalone</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker pull apachepulsar/pulsar:2.4.0 docker run -d -it -p 6650:6650 -p 8080:8080 -v $PWD/data:/pulsar/data --name pulsar-netty-standalone apachepulsar/pulsar:2.4.0 bin/pulsar standalone
+
+    &lt;br /&gt;- Start pulsar-io in standalone
+    
+    #### Tcp example
+    
+    - Config file netty-source-config.yaml
+    
+    `</span><span class="hljs-string">``</span>$yaml
+    configs:
+        <span class="hljs-keyword">type</span>: <span class="hljs-string">"tcp"</span>
+        host: <span class="hljs-string">"127.0.0.1"</span>
+        port: <span class="hljs-number">10999</span>
+        numberOfThreads: <span class="hljs-number">1</span>
+    
+
+- Copy configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">to</span> pulsar <span class="hljs-keyword">server</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker cp netty-source-config.yaml pulsar-netty-standalone:/pulsar/conf/
+
+    &lt;br /&gt;- Download netty connector and start netty connector
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    curl -O <span class="hljs-keyword">http</span>://mirror-hk.koddos.net/apache/pulsar/pulsar<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>/connectors/pulsar-io-netty<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>.nar
+    ./<span class="hljs-keyword">bin</span>/pulsar-<span class="hljs-keyword">admin</span> sources localrun <span class="hljs-comment">--archive pulsar-io-2.4.0.nar --tenant public --namespace default --name netty --destination-topic-name netty-topic --source-config-file netty-source-config.yaml --parallelism 1</span>
+    
+
+- Consume <span class="hljs-keyword">data</span> 
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker exec -it pulsar-netty-standalone /bin/bash ./bin/pulsar-client consume -t Exclusive -s netty-sub netty-topic -n 0
+
+    &lt;br /&gt;- Open another window for send data to netty source
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">update</span>
+    apt-<span class="hljs-keyword">get</span> -y <span class="hljs-keyword">install</span> telnet
+    root@<span class="hljs-number">1</span>d19327b2c67:/pulsar<span class="hljs-comment"># telnet 127.0.0.1 10999</span>
+    Trying <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>...
+    Connected <span class="hljs-keyword">to</span> <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>.
+    Escape <span class="hljs-built_in">character</span> <span class="hljs-keyword">is</span> <span class="hljs-string">'^]'</span>.
+    hello
+    world
+    
+
+- Verification results
+
+<span class="hljs-keyword">In</span> the consumer <span class="hljs-keyword">window</span> just opened, you can see the <span class="hljs-keyword">following</span> <span class="hljs-keyword">data</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`bash
+----- got message -----
+hello
+
+----- got message -----
+world
+</span></code></pre>
+<h4><a class="anchor" aria-hidden="true" id="http-example"></a><a href="#http-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<ul>
+<li>Config file netty-source-config.yaml</li>
+</ul>
+<pre><code class="hljs css language-$yaml configs: type: &quot;http&quot; host: &quot;127.0.0.1&quot; port: 10999 numberOfThreads: 1">
+    - Start netty source
+    
+    ```$bash
+    docker exec -it pulsar-netty-standalone <span class="hljs-string">/bin/bash</span>
+    <span class="hljs-string">./bin/pulsar-admin</span> sources localrun <span class="hljs-params">--archive</span> pulsar-io-{{pulsar<span class="hljs-function">:version</span>}}<span class="hljs-string">.nar</span> <span class="hljs-params">--tenant</span> public <span class="hljs-params">--namespace</span> default <span class="hljs-params">--name</span> netty <span class="hljs-params">--destination-topic-name</span> netty-topic <span class="hljs-params">--source-config-file</span> net [...]
+    
+
+- Verification results
+
+```bash
+curl -X POST <span class="hljs-params">--data</span> 'hello, world!' http:<span class="hljs-string">//127.0.0.1</span><span class="hljs-function">:10999</span>/
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<p>In the consumer window just opened, you can see the following data</p>
+<pre><code class="hljs css language-bash">----- got message -----
+hello, world!
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li><li><a href="#configuration-example">Configuration Example</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Ap [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/io-netty/index.html b/content/docs/ja/next/io-netty/index.html
index a36e090..a3906b5 100644
--- a/content/docs/ja/next/io-netty/index.html
+++ b/content/docs/ja/next/io-netty/index.html
@@ -32,7 +32,105 @@
 <tr><td><code>numberOfThreads</code></td><td><code>false</code></td><td><code>1</code></td><td>The number of threads of Netty Tcp Server to accept incoming connections and handle the traffic of the accepted connections.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of T [...]
+<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Here is a configuration Json example:</p>
+<pre><code class="hljs css language-$json { &quot;type&quot;: &quot;tcp&quot;, &quot;host&quot;: &quot;127.0.0.1&quot;, &quot;port&quot;: &quot;10911&quot;, &quot;numberOfThreads&quot;: &quot;5&quot; }">
+    Here is a configuration Yaml example:
+    
+    ```$yaml
+    configs:
+        type: "tcp"
+        host: "127.0.0.1"
+        port: 10999
+        numberOfThreads: 1
+    
+
+<span class="hljs-comment">### Usage example</span>
+
+- <span class="hljs-keyword">Start</span> pulsar <span class="hljs-keyword">standalone</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker pull apachepulsar/pulsar:2.4.0 docker run -d -it -p 6650:6650 -p 8080:8080 -v $PWD/data:/pulsar/data --name pulsar-netty-standalone apachepulsar/pulsar:2.4.0 bin/pulsar standalone
+
+    &lt;br /&gt;- Start pulsar-io in standalone
+    
+    #### Tcp example
+    
+    - Config file netty-source-config.yaml
+    
+    `</span><span class="hljs-string">``</span>$yaml
+    configs:
+        <span class="hljs-keyword">type</span>: <span class="hljs-string">"tcp"</span>
+        host: <span class="hljs-string">"127.0.0.1"</span>
+        port: <span class="hljs-number">10999</span>
+        numberOfThreads: <span class="hljs-number">1</span>
+    
+
+- Copy configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">to</span> pulsar <span class="hljs-keyword">server</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker cp netty-source-config.yaml pulsar-netty-standalone:/pulsar/conf/
+
+    &lt;br /&gt;- Download netty connector and start netty connector
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    curl -O <span class="hljs-keyword">http</span>://mirror-hk.koddos.net/apache/pulsar/pulsar<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>/connectors/pulsar-io-netty<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>.nar
+    ./<span class="hljs-keyword">bin</span>/pulsar-<span class="hljs-keyword">admin</span> sources localrun <span class="hljs-comment">--archive pulsar-io-2.4.0.nar --tenant public --namespace default --name netty --destination-topic-name netty-topic --source-config-file netty-source-config.yaml --parallelism 1</span>
+    
+
+- Consume <span class="hljs-keyword">data</span> 
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker exec -it pulsar-netty-standalone /bin/bash ./bin/pulsar-client consume -t Exclusive -s netty-sub netty-topic -n 0
+
+    &lt;br /&gt;- Open another window for send data to netty source
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">update</span>
+    apt-<span class="hljs-keyword">get</span> -y <span class="hljs-keyword">install</span> telnet
+    root@<span class="hljs-number">1</span>d19327b2c67:/pulsar<span class="hljs-comment"># telnet 127.0.0.1 10999</span>
+    Trying <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>...
+    Connected <span class="hljs-keyword">to</span> <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>.
+    Escape <span class="hljs-built_in">character</span> <span class="hljs-keyword">is</span> <span class="hljs-string">'^]'</span>.
+    hello
+    world
+    
+
+- Verification results
+
+<span class="hljs-keyword">In</span> the consumer <span class="hljs-keyword">window</span> just opened, you can see the <span class="hljs-keyword">following</span> <span class="hljs-keyword">data</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`bash
+----- got message -----
+hello
+
+----- got message -----
+world
+</span></code></pre>
+<h4><a class="anchor" aria-hidden="true" id="http-example"></a><a href="#http-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<ul>
+<li>Config file netty-source-config.yaml</li>
+</ul>
+<pre><code class="hljs css language-$yaml configs: type: &quot;http&quot; host: &quot;127.0.0.1&quot; port: 10999 numberOfThreads: 1">
+    - Start netty source
+    
+    ```$bash
+    docker exec -it pulsar-netty-standalone <span class="hljs-string">/bin/bash</span>
+    <span class="hljs-string">./bin/pulsar-admin</span> sources localrun <span class="hljs-params">--archive</span> pulsar-io-{{pulsar<span class="hljs-function">:version</span>}}<span class="hljs-string">.nar</span> <span class="hljs-params">--tenant</span> public <span class="hljs-params">--namespace</span> default <span class="hljs-params">--name</span> netty <span class="hljs-params">--destination-topic-name</span> netty-topic <span class="hljs-params">--source-config-file</span> net [...]
+    
+
+- Verification results
+
+```bash
+curl -X POST <span class="hljs-params">--data</span> 'hello, world!' http:<span class="hljs-string">//127.0.0.1</span><span class="hljs-function">:10999</span>/
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<p>In the consumer window just opened, you can see the following data</p>
+<pre><code class="hljs css language-bash">----- got message -----
+hello, world!
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li><li><a href="#configuration-example">Configuration Example</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Ap [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/cookbooks-compaction.html b/content/docs/zh-CN/next/cookbooks-compaction.html
index 7a02fbf..27967af 100644
--- a/content/docs/zh-CN/next/cookbooks-compaction.html
+++ b/content/docs/zh-CN/next/cookbooks-compaction.html
@@ -125,12 +125,8 @@ $ bin/pulsar compact-topic \
 </code></pre>
 <h4><a class="anchor" aria-hidden="true" id="when-should-i-trigger-compaction"></a><a href="#when-should-i-trigger-compaction" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
 <p>How often you <a href="#trigger">trigger compaction</a> will vary widely based on the use case. If you want a compacted topic to be extremely speedy on read, then you should run compaction fairly frequently.</p>
-<h2><a class="anchor" aria-hidden="true" id="consumer-configuration-config"></a><a href="#consumer-configuration-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<h2><a class="anchor" aria-hidden="true" id="consumer-configuration"></a><a href="#consumer-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Pulsar consumers and readers need to be configured to read from compacted topics. The sections below show you how to enable compacted topic reads for Pulsar's language clients. If the</p>
-<blockquote>
-<h4><a class="anchor" aria-hidden="true" id="java-only"></a><a href="#java-only" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
-<p>Currently, only <a href="#java">Java</a> clients can consume messages from compacted topics.</p>
-</blockquote>
 <h3><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>In order to read from a compacted topic using a Java consumer, the <code>readCompacted</code> parameter must be set to <code>true</code>. Here's an example consumer for a compacted topic:</p>
 <pre><code class="hljs css language-java">Consumer&lt;<span class="hljs-keyword">byte</span>[]&gt; compactedTopicConsumer = client.newConsumer()
@@ -168,7 +164,7 @@ Message&lt;<span class="hljs-keyword">byte</span>[]&gt; msg = MessageBuilder.cre
 
 compactedTopicProducer.send(msg);
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/zh-CN/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compact [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/zh-CN/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compact [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/cookbooks-compaction/index.html b/content/docs/zh-CN/next/cookbooks-compaction/index.html
index 7a02fbf..27967af 100644
--- a/content/docs/zh-CN/next/cookbooks-compaction/index.html
+++ b/content/docs/zh-CN/next/cookbooks-compaction/index.html
@@ -125,12 +125,8 @@ $ bin/pulsar compact-topic \
 </code></pre>
 <h4><a class="anchor" aria-hidden="true" id="when-should-i-trigger-compaction"></a><a href="#when-should-i-trigger-compaction" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
 <p>How often you <a href="#trigger">trigger compaction</a> will vary widely based on the use case. If you want a compacted topic to be extremely speedy on read, then you should run compaction fairly frequently.</p>
-<h2><a class="anchor" aria-hidden="true" id="consumer-configuration-config"></a><a href="#consumer-configuration-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<h2><a class="anchor" aria-hidden="true" id="consumer-configuration"></a><a href="#consumer-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>Pulsar consumers and readers need to be configured to read from compacted topics. The sections below show you how to enable compacted topic reads for Pulsar's language clients. If the</p>
-<blockquote>
-<h4><a class="anchor" aria-hidden="true" id="java-only"></a><a href="#java-only" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
-<p>Currently, only <a href="#java">Java</a> clients can consume messages from compacted topics.</p>
-</blockquote>
 <h3><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>In order to read from a compacted topic using a Java consumer, the <code>readCompacted</code> parameter must be set to <code>true</code>. Here's an example consumer for a compacted topic:</p>
 <pre><code class="hljs css language-java">Consumer&lt;<span class="hljs-keyword">byte</span>[]&gt; compactedTopicConsumer = client.newConsumer()
@@ -168,7 +164,7 @@ Message&lt;<span class="hljs-keyword">byte</span>[]&gt; msg = MessageBuilder.cre
 
 compactedTopicProducer.send(msg);
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/zh-CN/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compact [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/cookbooks-tiered-storage"><span class="arrow-prev">← </span><span>Tiered Storage</span></a><a class="docs-next button" href="/docs/zh-CN/next/cookbooks-deduplication"><span>Message deduplication</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#when-should-i-use-compacted-topics-when">When should I use compact [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/io-netty.html b/content/docs/zh-CN/next/io-netty.html
index 25c3c4c..5ecd69b 100644
--- a/content/docs/zh-CN/next/io-netty.html
+++ b/content/docs/zh-CN/next/io-netty.html
@@ -32,7 +32,105 @@
 <tr><td><code>numberOfThreads</code></td><td><code>false</code></td><td><code>1</code></td><td>The number of threads of Netty Tcp Server to accept incoming connections and handle the traffic of the accepted connections.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of T [...]
+<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Here is a configuration Json example:</p>
+<pre><code class="hljs css language-$json { &quot;type&quot;: &quot;tcp&quot;, &quot;host&quot;: &quot;127.0.0.1&quot;, &quot;port&quot;: &quot;10911&quot;, &quot;numberOfThreads&quot;: &quot;5&quot; }">
+    Here is a configuration Yaml example:
+    
+    ```$yaml
+    configs:
+        type: "tcp"
+        host: "127.0.0.1"
+        port: 10999
+        numberOfThreads: 1
+    
+
+<span class="hljs-comment">### Usage example</span>
+
+- <span class="hljs-keyword">Start</span> pulsar <span class="hljs-keyword">standalone</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker pull apachepulsar/pulsar:2.4.0 docker run -d -it -p 6650:6650 -p 8080:8080 -v $PWD/data:/pulsar/data --name pulsar-netty-standalone apachepulsar/pulsar:2.4.0 bin/pulsar standalone
+
+    &lt;br /&gt;- Start pulsar-io in standalone
+    
+    #### Tcp example
+    
+    - Config file netty-source-config.yaml
+    
+    `</span><span class="hljs-string">``</span>$yaml
+    configs:
+        <span class="hljs-keyword">type</span>: <span class="hljs-string">"tcp"</span>
+        host: <span class="hljs-string">"127.0.0.1"</span>
+        port: <span class="hljs-number">10999</span>
+        numberOfThreads: <span class="hljs-number">1</span>
+    
+
+- Copy configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">to</span> pulsar <span class="hljs-keyword">server</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker cp netty-source-config.yaml pulsar-netty-standalone:/pulsar/conf/
+
+    &lt;br /&gt;- Download netty connector and start netty connector
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    curl -O <span class="hljs-keyword">http</span>://mirror-hk.koddos.net/apache/pulsar/pulsar<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>/connectors/pulsar-io-netty<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>.nar
+    ./<span class="hljs-keyword">bin</span>/pulsar-<span class="hljs-keyword">admin</span> sources localrun <span class="hljs-comment">--archive pulsar-io-2.4.0.nar --tenant public --namespace default --name netty --destination-topic-name netty-topic --source-config-file netty-source-config.yaml --parallelism 1</span>
+    
+
+- Consume <span class="hljs-keyword">data</span> 
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker exec -it pulsar-netty-standalone /bin/bash ./bin/pulsar-client consume -t Exclusive -s netty-sub netty-topic -n 0
+
+    &lt;br /&gt;- Open another window for send data to netty source
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">update</span>
+    apt-<span class="hljs-keyword">get</span> -y <span class="hljs-keyword">install</span> telnet
+    root@<span class="hljs-number">1</span>d19327b2c67:/pulsar<span class="hljs-comment"># telnet 127.0.0.1 10999</span>
+    Trying <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>...
+    Connected <span class="hljs-keyword">to</span> <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>.
+    Escape <span class="hljs-built_in">character</span> <span class="hljs-keyword">is</span> <span class="hljs-string">'^]'</span>.
+    hello
+    world
+    
+
+- Verification results
+
+<span class="hljs-keyword">In</span> the consumer <span class="hljs-keyword">window</span> just opened, you can see the <span class="hljs-keyword">following</span> <span class="hljs-keyword">data</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`bash
+----- got message -----
+hello
+
+----- got message -----
+world
+</span></code></pre>
+<h4><a class="anchor" aria-hidden="true" id="http-example"></a><a href="#http-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<ul>
+<li>Config file netty-source-config.yaml</li>
+</ul>
+<pre><code class="hljs css language-$yaml configs: type: &quot;http&quot; host: &quot;127.0.0.1&quot; port: 10999 numberOfThreads: 1">
+    - Start netty source
+    
+    ```$bash
+    docker exec -it pulsar-netty-standalone <span class="hljs-string">/bin/bash</span>
+    <span class="hljs-string">./bin/pulsar-admin</span> sources localrun <span class="hljs-params">--archive</span> pulsar-io-{{pulsar<span class="hljs-function">:version</span>}}<span class="hljs-string">.nar</span> <span class="hljs-params">--tenant</span> public <span class="hljs-params">--namespace</span> default <span class="hljs-params">--name</span> netty <span class="hljs-params">--destination-topic-name</span> netty-topic <span class="hljs-params">--source-config-file</span> net [...]
+    
+
+- Verification results
+
+```bash
+curl -X POST <span class="hljs-params">--data</span> 'hello, world!' http:<span class="hljs-string">//127.0.0.1</span><span class="hljs-function">:10999</span>/
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<p>In the consumer window just opened, you can see the following data</p>
+<pre><code class="hljs css language-bash">----- got message -----
+hello, world!
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li><li><a href="#configuration-example">Configuration Example</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Ap [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/io-netty/index.html b/content/docs/zh-CN/next/io-netty/index.html
index 25c3c4c..5ecd69b 100644
--- a/content/docs/zh-CN/next/io-netty/index.html
+++ b/content/docs/zh-CN/next/io-netty/index.html
@@ -32,7 +32,105 @@
 <tr><td><code>numberOfThreads</code></td><td><code>false</code></td><td><code>1</code></td><td>The number of threads of Netty Tcp Server to accept incoming connections and handle the traffic of the accepted connections.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of T [...]
+<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Here is a configuration Json example:</p>
+<pre><code class="hljs css language-$json { &quot;type&quot;: &quot;tcp&quot;, &quot;host&quot;: &quot;127.0.0.1&quot;, &quot;port&quot;: &quot;10911&quot;, &quot;numberOfThreads&quot;: &quot;5&quot; }">
+    Here is a configuration Yaml example:
+    
+    ```$yaml
+    configs:
+        type: "tcp"
+        host: "127.0.0.1"
+        port: 10999
+        numberOfThreads: 1
+    
+
+<span class="hljs-comment">### Usage example</span>
+
+- <span class="hljs-keyword">Start</span> pulsar <span class="hljs-keyword">standalone</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker pull apachepulsar/pulsar:2.4.0 docker run -d -it -p 6650:6650 -p 8080:8080 -v $PWD/data:/pulsar/data --name pulsar-netty-standalone apachepulsar/pulsar:2.4.0 bin/pulsar standalone
+
+    &lt;br /&gt;- Start pulsar-io in standalone
+    
+    #### Tcp example
+    
+    - Config file netty-source-config.yaml
+    
+    `</span><span class="hljs-string">``</span>$yaml
+    configs:
+        <span class="hljs-keyword">type</span>: <span class="hljs-string">"tcp"</span>
+        host: <span class="hljs-string">"127.0.0.1"</span>
+        port: <span class="hljs-number">10999</span>
+        numberOfThreads: <span class="hljs-number">1</span>
+    
+
+- Copy configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">to</span> pulsar <span class="hljs-keyword">server</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker cp netty-source-config.yaml pulsar-netty-standalone:/pulsar/conf/
+
+    &lt;br /&gt;- Download netty connector and start netty connector
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    curl -O <span class="hljs-keyword">http</span>://mirror-hk.koddos.net/apache/pulsar/pulsar<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>/connectors/pulsar-io-netty<span class="hljs-number">-2.4</span><span class="hljs-number">.0</span>.nar
+    ./<span class="hljs-keyword">bin</span>/pulsar-<span class="hljs-keyword">admin</span> sources localrun <span class="hljs-comment">--archive pulsar-io-2.4.0.nar --tenant public --namespace default --name netty --destination-topic-name netty-topic --source-config-file netty-source-config.yaml --parallelism 1</span>
+    
+
+- Consume <span class="hljs-keyword">data</span> 
+
+<span class="hljs-string">``</span><span class="hljs-string">`$bash docker exec -it pulsar-netty-standalone /bin/bash ./bin/pulsar-client consume -t Exclusive -s netty-sub netty-topic -n 0
+
+    &lt;br /&gt;- Open another window for send data to netty source
+    
+    `</span><span class="hljs-string">``</span>$bash
+    docker exec -it pulsar-netty-<span class="hljs-keyword">standalone</span> /<span class="hljs-keyword">bin</span>/bash
+    apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">update</span>
+    apt-<span class="hljs-keyword">get</span> -y <span class="hljs-keyword">install</span> telnet
+    root@<span class="hljs-number">1</span>d19327b2c67:/pulsar<span class="hljs-comment"># telnet 127.0.0.1 10999</span>
+    Trying <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>...
+    Connected <span class="hljs-keyword">to</span> <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>.
+    Escape <span class="hljs-built_in">character</span> <span class="hljs-keyword">is</span> <span class="hljs-string">'^]'</span>.
+    hello
+    world
+    
+
+- Verification results
+
+<span class="hljs-keyword">In</span> the consumer <span class="hljs-keyword">window</span> just opened, you can see the <span class="hljs-keyword">following</span> <span class="hljs-keyword">data</span>
+
+<span class="hljs-string">``</span><span class="hljs-string">`bash
+----- got message -----
+hello
+
+----- got message -----
+world
+</span></code></pre>
+<h4><a class="anchor" aria-hidden="true" id="http-example"></a><a href="#http-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<ul>
+<li>Config file netty-source-config.yaml</li>
+</ul>
+<pre><code class="hljs css language-$yaml configs: type: &quot;http&quot; host: &quot;127.0.0.1&quot; port: 10999 numberOfThreads: 1">
+    - Start netty source
+    
+    ```$bash
+    docker exec -it pulsar-netty-standalone <span class="hljs-string">/bin/bash</span>
+    <span class="hljs-string">./bin/pulsar-admin</span> sources localrun <span class="hljs-params">--archive</span> pulsar-io-{{pulsar<span class="hljs-function">:version</span>}}<span class="hljs-string">.nar</span> <span class="hljs-params">--tenant</span> public <span class="hljs-params">--namespace</span> default <span class="hljs-params">--name</span> netty <span class="hljs-params">--destination-topic-name</span> netty-topic <span class="hljs-params">--source-config-file</span> net [...]
+    
+
+- Verification results
+
+```bash
+curl -X POST <span class="hljs-params">--data</span> 'hello, world!' http:<span class="hljs-string">//127.0.0.1</span><span class="hljs-function">:10999</span>/
+</code></pre>
+<ul>
+<li>Verification results</li>
+</ul>
+<p>In the consumer window just opened, you can see the following data</p>
+<pre><code class="hljs css language-bash">----- got message -----
+hello, world!
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#source">Source</a><ul class="toc-headings"><li><a href="#source-configuration-options">Source Configuration Options</a></li><li><a href="#configuration-example">Configuration Example</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Ap [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/en/powered-by.html b/content/en/powered-by.html
index acea414..02bb07d 100644
--- a/content/en/powered-by.html
+++ b/content/en/powered-by.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/en/powered-by/index.html b/content/en/powered-by/index.html
index acea414..02bb07d 100644
--- a/content/en/powered-by/index.html
+++ b/content/en/powered-by/index.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/fr/powered-by.html b/content/fr/powered-by.html
index 9a5c892..883507f 100644
--- a/content/fr/powered-by.html
+++ b/content/fr/powered-by.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/fr/powered-by/index.html b/content/fr/powered-by/index.html
index 9a5c892..883507f 100644
--- a/content/fr/powered-by/index.html
+++ b/content/fr/powered-by/index.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/ja/powered-by.html b/content/ja/powered-by.html
index 92f7dad..8c01719 100644
--- a/content/ja/powered-by.html
+++ b/content/ja/powered-by.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/ja/powered-by/index.html b/content/ja/powered-by/index.html
index 92f7dad..8c01719 100644
--- a/content/ja/powered-by/index.html
+++ b/content/ja/powered-by/index.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/powered-by.html b/content/powered-by.html
index acea414..02bb07d 100644
--- a/content/powered-by.html
+++ b/content/powered-by.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/powered-by/index.html b/content/powered-by/index.html
index acea414..02bb07d 100644
--- a/content/powered-by/index.html
+++ b/content/powered-by/index.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/swagger/2.5.0-SNAPSHOT/swagger.json b/content/swagger/2.5.0-SNAPSHOT/swagger.json
index 31608dc..ec60ca2 100644
--- a/content/swagger/2.5.0-SNAPSHOT/swagger.json
+++ b/content/swagger/2.5.0-SNAPSHOT/swagger.json
@@ -4784,7 +4784,7 @@
           "200" : {
             "description" : "successful operation",
             "schema" : {
-              "$ref" : "#/definitions/TopicStats"
+              "$ref" : "#/definitions/NonPersistentTopicStats"
             }
           },
           "401" : {
@@ -8515,10 +8515,10 @@
             "type" : "string"
           }
         },
-        "clientVersion" : {
+        "connectedSince" : {
           "type" : "string"
         },
-        "connectedSince" : {
+        "clientVersion" : {
           "type" : "string"
         },
         "address" : {
@@ -8866,29 +8866,15 @@
           "type" : "number",
           "format" : "double"
         },
-        "underLoaded" : {
-          "type" : "boolean"
-        },
-        "msgThroughputIn" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "lastUpdate" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "overLoaded" : {
-          "type" : "boolean"
-        },
-        "loadReportType" : {
-          "type" : "string"
+        "memory" : {
+          "$ref" : "#/definitions/ResourceUsage"
         },
         "directMemory" : {
           "$ref" : "#/definitions/ResourceUsage"
@@ -8899,8 +8885,22 @@
         "bandwidthOut" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "memory" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "lastUpdate" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "msgThroughputIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "overLoaded" : {
+          "type" : "boolean"
+        },
+        "underLoaded" : {
+          "type" : "boolean"
+        },
+        "loadReportType" : {
+          "type" : "string"
         }
       }
     },
@@ -9068,13 +9068,13 @@
           "type" : "number",
           "format" : "double"
         },
-        "clientVersion" : {
+        "connectedSince" : {
           "type" : "string"
         },
-        "producerName" : {
+        "clientVersion" : {
           "type" : "string"
         },
-        "connectedSince" : {
+        "producerName" : {
           "type" : "string"
         },
         "address" : {
@@ -9739,13 +9739,13 @@
             "type" : "string"
           }
         },
-        "clientVersion" : {
+        "connectedSince" : {
           "type" : "string"
         },
-        "producerName" : {
+        "clientVersion" : {
           "type" : "string"
         },
-        "connectedSince" : {
+        "producerName" : {
           "type" : "string"
         },
         "address" : {
diff --git a/content/swagger/2.5.0-SNAPSHOT/swaggerfunctions.json b/content/swagger/2.5.0-SNAPSHOT/swaggerfunctions.json
index 2ed9644..42f64b8 100644
--- a/content/swagger/2.5.0-SNAPSHOT/swaggerfunctions.json
+++ b/content/swagger/2.5.0-SNAPSHOT/swaggerfunctions.json
@@ -1348,31 +1348,7 @@
     "Message" : {
       "type" : "object",
       "properties" : {
-        "messageId" : {
-          "$ref" : "#/definitions/MessageId"
-        },
-        "sequenceId" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "replicatedFrom" : {
-          "type" : "string"
-        },
-        "orderingKey" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
-        "encryptionCtx" : {
-          "$ref" : "#/definitions/EncryptionContext"
-        },
-        "redeliveryCount" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "schemaVersion" : {
+        "keyBytes" : {
           "type" : "array",
           "items" : {
             "type" : "string",
@@ -1393,16 +1369,40 @@
         "topicName" : {
           "type" : "string"
         },
+        "schemaVersion" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
+        "messageId" : {
+          "$ref" : "#/definitions/MessageId"
+        },
+        "replicatedFrom" : {
+          "type" : "string"
+        },
         "producerName" : {
           "type" : "string"
         },
-        "keyBytes" : {
+        "orderingKey" : {
           "type" : "array",
           "items" : {
             "type" : "string",
             "format" : "byte"
           }
         },
+        "sequenceId" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "redeliveryCount" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "encryptionCtx" : {
+          "$ref" : "#/definitions/EncryptionContext"
+        },
         "data" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/swagger.json b/content/swagger/swagger.json
index 31608dc..ec60ca2 100644
--- a/content/swagger/swagger.json
+++ b/content/swagger/swagger.json
@@ -4784,7 +4784,7 @@
           "200" : {
             "description" : "successful operation",
             "schema" : {
-              "$ref" : "#/definitions/TopicStats"
+              "$ref" : "#/definitions/NonPersistentTopicStats"
             }
           },
           "401" : {
@@ -8515,10 +8515,10 @@
             "type" : "string"
           }
         },
-        "clientVersion" : {
+        "connectedSince" : {
           "type" : "string"
         },
-        "connectedSince" : {
+        "clientVersion" : {
           "type" : "string"
         },
         "address" : {
@@ -8866,29 +8866,15 @@
           "type" : "number",
           "format" : "double"
         },
-        "underLoaded" : {
-          "type" : "boolean"
-        },
-        "msgThroughputIn" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "lastUpdate" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "overLoaded" : {
-          "type" : "boolean"
-        },
-        "loadReportType" : {
-          "type" : "string"
+        "memory" : {
+          "$ref" : "#/definitions/ResourceUsage"
         },
         "directMemory" : {
           "$ref" : "#/definitions/ResourceUsage"
@@ -8899,8 +8885,22 @@
         "bandwidthOut" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "memory" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "lastUpdate" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "msgThroughputIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "overLoaded" : {
+          "type" : "boolean"
+        },
+        "underLoaded" : {
+          "type" : "boolean"
+        },
+        "loadReportType" : {
+          "type" : "string"
         }
       }
     },
@@ -9068,13 +9068,13 @@
           "type" : "number",
           "format" : "double"
         },
-        "clientVersion" : {
+        "connectedSince" : {
           "type" : "string"
         },
-        "producerName" : {
+        "clientVersion" : {
           "type" : "string"
         },
-        "connectedSince" : {
+        "producerName" : {
           "type" : "string"
         },
         "address" : {
@@ -9739,13 +9739,13 @@
             "type" : "string"
           }
         },
-        "clientVersion" : {
+        "connectedSince" : {
           "type" : "string"
         },
-        "producerName" : {
+        "clientVersion" : {
           "type" : "string"
         },
-        "connectedSince" : {
+        "producerName" : {
           "type" : "string"
         },
         "address" : {
diff --git a/content/swagger/swaggerfunctions.json b/content/swagger/swaggerfunctions.json
index 2ed9644..42f64b8 100644
--- a/content/swagger/swaggerfunctions.json
+++ b/content/swagger/swaggerfunctions.json
@@ -1348,31 +1348,7 @@
     "Message" : {
       "type" : "object",
       "properties" : {
-        "messageId" : {
-          "$ref" : "#/definitions/MessageId"
-        },
-        "sequenceId" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "replicatedFrom" : {
-          "type" : "string"
-        },
-        "orderingKey" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
-        "encryptionCtx" : {
-          "$ref" : "#/definitions/EncryptionContext"
-        },
-        "redeliveryCount" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "schemaVersion" : {
+        "keyBytes" : {
           "type" : "array",
           "items" : {
             "type" : "string",
@@ -1393,16 +1369,40 @@
         "topicName" : {
           "type" : "string"
         },
+        "schemaVersion" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
+        "messageId" : {
+          "$ref" : "#/definitions/MessageId"
+        },
+        "replicatedFrom" : {
+          "type" : "string"
+        },
         "producerName" : {
           "type" : "string"
         },
-        "keyBytes" : {
+        "orderingKey" : {
           "type" : "array",
           "items" : {
             "type" : "string",
             "format" : "byte"
           }
         },
+        "sequenceId" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "redeliveryCount" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "encryptionCtx" : {
+          "$ref" : "#/definitions/EncryptionContext"
+        },
         "data" : {
           "type" : "array",
           "items" : {
diff --git a/content/zh-CN/powered-by.html b/content/zh-CN/powered-by.html
index e47cdc6..c0f5e72 100644
--- a/content/zh-CN/powered-by.html
+++ b/content/zh-CN/powered-by.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/zh-CN/powered-by/index.html b/content/zh-CN/powered-by/index.html
index e47cdc6..c0f5e72 100644
--- a/content/zh-CN/powered-by/index.html
+++ b/content/zh-CN/powered-by/index.html
@@ -18,7 +18,7 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Companies using or contributing to Apache Pulsar</h1><hr/></header><div class="logo-wrapper"><div  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +