You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2022/02/10 03:01:04 UTC

[pulsar] branch asf-site updated: Updated site at revision 3e06571

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

penghui 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 bed5fce  Updated site at revision 3e06571
bed5fce is described below

commit bed5fce8273d503eb87aecaa600e432666656743
Author: Pulsar Site Updater <de...@pulsar.incubator.apache.org>
AuthorDate: Thu Feb 10 02:59:34 2022 +0000

    Updated site at revision 3e06571
---
 .../admin/2.10.0-SNAPSHOT/member-search-index.zip  | Bin 12755 -> 12755 bytes
 .../admin/2.10.0-SNAPSHOT/overview-summary.html    |   2 +-
 .../admin/2.10.0-SNAPSHOT/package-search-index.zip | Bin 263 -> 263 bytes
 .../admin/2.10.0-SNAPSHOT/type-search-index.zip    | Bin 500 -> 500 bytes
 .../client/2.10.0-SNAPSHOT/member-search-index.zip | Bin 11099 -> 11099 bytes
 .../client/2.10.0-SNAPSHOT/overview-summary.html   |   2 +-
 .../2.10.0-SNAPSHOT/package-search-index.zip       | Bin 298 -> 298 bytes
 .../client/2.10.0-SNAPSHOT/type-search-index.zip   | Bin 1543 -> 1543 bytes
 .../2.10.0-SNAPSHOT/allclasses-index.html          | 468 +++++++++--------
 .../pulsar-broker/2.10.0-SNAPSHOT/allclasses.html  |   1 -
 .../pulsar-broker/2.10.0-SNAPSHOT/index-all.html   |  19 +-
 .../2.10.0-SNAPSHOT/member-search-index.js         |   2 +-
 .../2.10.0-SNAPSHOT/member-search-index.zip        | Bin 69932 -> 69873 bytes
 .../pulsar/broker/admin/impl/BrokersBase.html      |  16 +-
 .../org/apache/pulsar/broker/admin/v1/Brokers.html |   2 +-
 .../org/apache/pulsar/broker/admin/v2/Brokers.html |   2 +-
 .../service/persistent/CompactorSubscription.html  |  21 +-
 .../service/persistent/PersistentSubscription.html |  27 +-
 .../broker/service/persistent/package-summary.html |   4 -
 .../broker/service/persistent/package-tree.html    |   1 -
 .../broker/service/persistent/package-use.html     |  10 +-
 .../2.10.0-SNAPSHOT/overview-summary.html          |   2 +-
 .../2.10.0-SNAPSHOT/overview-tree.html             |   1 -
 .../2.10.0-SNAPSHOT/package-search-index.zip       | Bin 593 -> 593 bytes
 .../2.10.0-SNAPSHOT/type-search-index.js           |   2 +-
 .../2.10.0-SNAPSHOT/type-search-index.zip          | Bin 4367 -> 4345 bytes
 .../2.10.0-SNAPSHOT/member-search-index.zip        | Bin 1255 -> 1255 bytes
 .../2.10.0-SNAPSHOT/overview-summary.html          |   2 +-
 .../2.10.0-SNAPSHOT/package-search-index.zip       | Bin 260 -> 260 bytes
 .../2.10.0-SNAPSHOT/type-search-index.zip          | Bin 349 -> 349 bytes
 content/api/python/2.10.0-SNAPSHOT/index.html      |   6 +-
 content/api/python/index.html                      |   6 +-
 content/docs/en/next/client-libraries-dotnet.html  |   5 +-
 .../en/next/client-libraries-dotnet/index.html     |   5 +-
 content/docs/en/next/develop-binary-protocol.html  |   7 +-
 .../en/next/develop-binary-protocol/index.html     |   7 +-
 content/docs/fr/next/administration-proxy.html     |   4 +-
 .../docs/fr/next/administration-proxy/index.html   |   4 +-
 content/docs/fr/next/client-libraries-cpp.html     | 191 +++----
 .../docs/fr/next/client-libraries-cpp/index.html   | 191 +++----
 content/docs/fr/next/client-libraries-dotnet.html  |   5 +-
 .../fr/next/client-libraries-dotnet/index.html     |   5 +-
 .../docs/fr/next/client-libraries-websocket.html   |   4 +-
 .../fr/next/client-libraries-websocket/index.html  |   4 +-
 .../fr/next/deploy-bare-metal-multi-cluster.html   |   6 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   6 +-
 content/docs/fr/next/deploy-bare-metal.html        |   6 +-
 content/docs/fr/next/deploy-bare-metal/index.html  |   6 +-
 content/docs/fr/next/develop-binary-protocol.html  |   2 +-
 .../fr/next/develop-binary-protocol/index.html     |   2 +-
 content/docs/fr/next/reference-configuration.html  |  22 +-
 .../fr/next/reference-configuration/index.html     |  22 +-
 content/docs/ja/next/administration-proxy.html     |   4 +-
 .../docs/ja/next/administration-proxy/index.html   |   4 +-
 content/docs/ja/next/client-libraries-cpp.html     | 191 +++----
 .../docs/ja/next/client-libraries-cpp/index.html   | 191 +++----
 content/docs/ja/next/client-libraries-dotnet.html  |   5 +-
 .../ja/next/client-libraries-dotnet/index.html     |   5 +-
 .../docs/ja/next/client-libraries-websocket.html   |   4 +-
 .../ja/next/client-libraries-websocket/index.html  |   4 +-
 .../ja/next/deploy-bare-metal-multi-cluster.html   |   6 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   6 +-
 content/docs/ja/next/deploy-bare-metal.html        |   6 +-
 content/docs/ja/next/deploy-bare-metal/index.html  |   6 +-
 content/docs/ja/next/develop-binary-protocol.html  |   2 +-
 .../ja/next/develop-binary-protocol/index.html     |   2 +-
 content/docs/ja/next/reference-configuration.html  |  22 +-
 .../ja/next/reference-configuration/index.html     |  22 +-
 content/docs/ko/next/administration-proxy.html     |   4 +-
 .../docs/ko/next/administration-proxy/index.html   |   4 +-
 content/docs/ko/next/client-libraries-cpp.html     | 191 +++----
 .../docs/ko/next/client-libraries-cpp/index.html   | 191 +++----
 content/docs/ko/next/client-libraries-dotnet.html  |   5 +-
 .../ko/next/client-libraries-dotnet/index.html     |   5 +-
 .../docs/ko/next/client-libraries-websocket.html   |   4 +-
 .../ko/next/client-libraries-websocket/index.html  |   4 +-
 .../ko/next/deploy-bare-metal-multi-cluster.html   |   6 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   6 +-
 content/docs/ko/next/deploy-bare-metal.html        |   6 +-
 content/docs/ko/next/deploy-bare-metal/index.html  |   6 +-
 content/docs/ko/next/develop-binary-protocol.html  |   2 +-
 .../ko/next/develop-binary-protocol/index.html     |   2 +-
 content/docs/ko/next/reference-configuration.html  |  22 +-
 .../ko/next/reference-configuration/index.html     |  22 +-
 content/docs/zh-CN/next/administration-proxy.html  |   4 +-
 .../zh-CN/next/administration-proxy/index.html     |   4 +-
 content/docs/zh-CN/next/client-libraries-cpp.html  | 228 +++++----
 .../zh-CN/next/client-libraries-cpp/index.html     | 228 +++++----
 .../docs/zh-CN/next/client-libraries-dotnet.html   |   5 +-
 .../zh-CN/next/client-libraries-dotnet/index.html  |   5 +-
 .../zh-CN/next/client-libraries-websocket.html     |   4 +-
 .../next/client-libraries-websocket/index.html     |   4 +-
 .../next/deploy-bare-metal-multi-cluster.html      |   6 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   6 +-
 content/docs/zh-CN/next/deploy-bare-metal.html     |   6 +-
 .../docs/zh-CN/next/deploy-bare-metal/index.html   |   6 +-
 .../docs/zh-CN/next/develop-binary-protocol.html   |   2 +-
 .../zh-CN/next/develop-binary-protocol/index.html  |   2 +-
 .../docs/zh-CN/next/reference-configuration.html   |  24 +-
 .../zh-CN/next/reference-configuration/index.html  |  24 +-
 content/docs/zh-TW/next/administration-proxy.html  |   4 +-
 .../zh-TW/next/administration-proxy/index.html     |   4 +-
 content/docs/zh-TW/next/client-libraries-cpp.html  | 191 +++----
 .../zh-TW/next/client-libraries-cpp/index.html     | 191 +++----
 .../docs/zh-TW/next/client-libraries-dotnet.html   |   5 +-
 .../zh-TW/next/client-libraries-dotnet/index.html  |   5 +-
 .../zh-TW/next/client-libraries-websocket.html     |   4 +-
 .../next/client-libraries-websocket/index.html     |   4 +-
 .../next/deploy-bare-metal-multi-cluster.html      |   6 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   6 +-
 content/docs/zh-TW/next/deploy-bare-metal.html     |   6 +-
 .../docs/zh-TW/next/deploy-bare-metal/index.html   |   6 +-
 .../docs/zh-TW/next/develop-binary-protocol.html   |   2 +-
 .../zh-TW/next/develop-binary-protocol/index.html  |   2 +-
 .../docs/zh-TW/next/reference-configuration.html   |  22 +-
 .../zh-TW/next/reference-configuration/index.html  |  22 +-
 content/swagger/2.10.0-SNAPSHOT/swagger.json       | 560 ++++++++++----------
 .../swagger/2.10.0-SNAPSHOT/swaggerfunctions.json  | 252 ++++-----
 .../swagger/2.10.0-SNAPSHOT/swaggerpackages.json   | 206 ++++----
 content/swagger/2.10.0-SNAPSHOT/swaggersink.json   | 206 ++++----
 content/swagger/2.10.0-SNAPSHOT/swaggersource.json | 206 ++++----
 content/swagger/2.10.0-SNAPSHOT/v2/swagger.json    | 566 +++++++++++----------
 .../2.10.0-SNAPSHOT/v3/swaggerfunctions.json       | 252 ++++-----
 .../2.10.0-SNAPSHOT/v3/swaggerpackages.json        | 206 ++++----
 .../swagger/2.10.0-SNAPSHOT/v3/swaggersink.json    | 206 ++++----
 .../swagger/2.10.0-SNAPSHOT/v3/swaggersource.json  | 206 ++++----
 content/swagger/master/swagger.json                | 560 ++++++++++----------
 content/swagger/master/swaggerfunctions.json       | 252 ++++-----
 content/swagger/master/swaggerpackages.json        | 206 ++++----
 content/swagger/master/swaggersink.json            | 206 ++++----
 content/swagger/master/swaggersource.json          | 206 ++++----
 content/swagger/master/v2/swagger.json             | 566 +++++++++++----------
 content/swagger/master/v3/swaggerfunctions.json    | 252 ++++-----
 content/swagger/master/v3/swaggerpackages.json     | 206 ++++----
 content/swagger/master/v3/swaggersink.json         | 206 ++++----
 content/swagger/master/v3/swaggersource.json       | 206 ++++----
 136 files changed, 4571 insertions(+), 4259 deletions(-)

diff --git a/content/api/admin/2.10.0-SNAPSHOT/member-search-index.zip b/content/api/admin/2.10.0-SNAPSHOT/member-search-index.zip
index 431f9c0..65aa542 100644
Binary files a/content/api/admin/2.10.0-SNAPSHOT/member-search-index.zip and b/content/api/admin/2.10.0-SNAPSHOT/member-search-index.zip differ
diff --git a/content/api/admin/2.10.0-SNAPSHOT/overview-summary.html b/content/api/admin/2.10.0-SNAPSHOT/overview-summary.html
index efe30b2..63692c6 100644
--- a/content/api/admin/2.10.0-SNAPSHOT/overview-summary.html
+++ b/content/api/admin/2.10.0-SNAPSHOT/overview-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (11.0.11) on Tue Feb 08 18:36:24 UTC 2022 -->
+<!-- Generated by javadoc (11.0.11) on Thu Feb 10 00:15:29 UTC 2022 -->
 <title>Pulsar Client Admin Original 2.10.0-SNAPSHOT API</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <script type="text/javascript">window.location.replace('index.html')</script>
diff --git a/content/api/admin/2.10.0-SNAPSHOT/package-search-index.zip b/content/api/admin/2.10.0-SNAPSHOT/package-search-index.zip
index 9297730..6434e25 100644
Binary files a/content/api/admin/2.10.0-SNAPSHOT/package-search-index.zip and b/content/api/admin/2.10.0-SNAPSHOT/package-search-index.zip differ
diff --git a/content/api/admin/2.10.0-SNAPSHOT/type-search-index.zip b/content/api/admin/2.10.0-SNAPSHOT/type-search-index.zip
index bfe05f7..5aaf953 100644
Binary files a/content/api/admin/2.10.0-SNAPSHOT/type-search-index.zip and b/content/api/admin/2.10.0-SNAPSHOT/type-search-index.zip differ
diff --git a/content/api/client/2.10.0-SNAPSHOT/member-search-index.zip b/content/api/client/2.10.0-SNAPSHOT/member-search-index.zip
index 7d0fe72..277b29b 100644
Binary files a/content/api/client/2.10.0-SNAPSHOT/member-search-index.zip and b/content/api/client/2.10.0-SNAPSHOT/member-search-index.zip differ
diff --git a/content/api/client/2.10.0-SNAPSHOT/overview-summary.html b/content/api/client/2.10.0-SNAPSHOT/overview-summary.html
index 8b27441..8846938 100644
--- a/content/api/client/2.10.0-SNAPSHOT/overview-summary.html
+++ b/content/api/client/2.10.0-SNAPSHOT/overview-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (11.0.11) on Tue Feb 08 18:36:15 UTC 2022 -->
+<!-- Generated by javadoc (11.0.11) on Thu Feb 10 00:15:19 UTC 2022 -->
 <title>Pulsar Client :: API 2.10.0-SNAPSHOT API</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <script type="text/javascript">window.location.replace('index.html')</script>
diff --git a/content/api/client/2.10.0-SNAPSHOT/package-search-index.zip b/content/api/client/2.10.0-SNAPSHOT/package-search-index.zip
index b1534d1..3f47f03 100644
Binary files a/content/api/client/2.10.0-SNAPSHOT/package-search-index.zip and b/content/api/client/2.10.0-SNAPSHOT/package-search-index.zip differ
diff --git a/content/api/client/2.10.0-SNAPSHOT/type-search-index.zip b/content/api/client/2.10.0-SNAPSHOT/type-search-index.zip
index a3b3e30..148d5de 100644
Binary files a/content/api/client/2.10.0-SNAPSHOT/type-search-index.zip and b/content/api/client/2.10.0-SNAPSHOT/type-search-index.zip differ
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/allclasses-index.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/allclasses-index.html
index c877d97..dbc7d34 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/allclasses-index.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/allclasses-index.html
@@ -26,7 +26,7 @@
     catch(err) {
     }
 //-->
-var data = {"i0":2,"i1":2,"i2":2,"i3":2,"i4":2,"i5":4,"i6":2,"i7":1,"i8":2,"i9":2,"i10":2,"i11":2,"i12":2,"i13":2,"i14":2,"i15":2,"i16":2,"i17":2,"i18":2,"i19":2,"i20":1,"i21":2,"i22":2,"i23":2,"i24":2,"i25":1,"i26":8,"i27":8,"i28":1,"i29":1,"i30":2,"i31":2,"i32":2,"i33":2,"i34":2,"i35":2,"i36":2,"i37":2,"i38":2,"i39":2,"i40":2,"i41":2,"i42":8,"i43":8,"i44":8,"i45":8,"i46":8,"i47":8,"i48":8,"i49":8,"i50":8,"i51":8,"i52":8,"i53":8,"i54":8,"i55":8,"i56":8,"i57":8,"i58":8,"i59":8,"i60":8,"i [...]
+var data = {"i0":2,"i1":2,"i2":2,"i3":2,"i4":2,"i5":4,"i6":2,"i7":1,"i8":2,"i9":2,"i10":2,"i11":2,"i12":2,"i13":2,"i14":2,"i15":2,"i16":2,"i17":2,"i18":2,"i19":2,"i20":1,"i21":2,"i22":2,"i23":2,"i24":2,"i25":1,"i26":8,"i27":8,"i28":1,"i29":1,"i30":2,"i31":2,"i32":2,"i33":2,"i34":2,"i35":2,"i36":2,"i37":2,"i38":2,"i39":2,"i40":2,"i41":2,"i42":8,"i43":8,"i44":8,"i45":8,"i46":8,"i47":8,"i48":8,"i49":8,"i50":8,"i51":8,"i52":8,"i53":8,"i54":8,"i55":8,"i56":8,"i57":8,"i58":8,"i59":8,"i60":8,"i [...]
 var tabs = {65535:["t0","All Classes"],1:["t1","Interface Summary"],2:["t2","Class Summary"],4:["t3","Enum Summary"],8:["t4","Exception Summary"],32:["t6","Annotation Types Summary"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -1248,756 +1248,752 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
 <tr id="i239" class="rowColor">
-<td class="colFirst"><a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent">PersistentSubscription.DeleteTransactionMarkerState</a></td>
-<th class="colLast" scope="row">&nbsp;</th>
-</tr>
-<tr id="i240" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/persistent/PersistentTopic.html" title="class in org.apache.pulsar.broker.service.persistent">PersistentTopic</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i241" class="rowColor">
+<tr id="i240" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v1/PersistentTopics.html" title="class in org.apache.pulsar.broker.admin.v1">PersistentTopics</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i242" class="altColor">
+<tr id="i241" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v2/PersistentTopics.html" title="class in org.apache.pulsar.broker.admin.v2">PersistentTopics</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i243" class="rowColor">
+<tr id="i242" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.html" title="class in org.apache.pulsar.broker.admin.impl">PersistentTopicsBase</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i244" class="altColor">
+<tr id="i243" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/PlacementStrategy.html" title="interface in org.apache.pulsar.broker.loadbalance">PlacementStrategy</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i245" class="rowColor">
+<tr id="i244" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/PrecisPublishLimiter.html" title="class in org.apache.pulsar.broker.service">PrecisPublishLimiter</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i246" class="altColor">
+<tr id="i245" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/web/PreInterceptFilter.html" title="class in org.apache.pulsar.broker.web">PreInterceptFilter</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i247" class="rowColor">
+<tr id="i246" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/web/ProcessHandlerFilter.html" title="class in org.apache.pulsar.broker.web">ProcessHandlerFilter</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i248" class="altColor">
+<tr id="i247" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/Producer.html" title="class in org.apache.pulsar.broker.service">Producer</a></td>
 <th class="colLast" scope="row">
 <div class="block">Represents a currently connected producer.</div>
 </th>
 </tr>
-<tr id="i249" class="rowColor">
+<tr id="i248" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsGenerator.html" title="class in org.apache.pulsar.broker.stats.prometheus">PrometheusMetricsGenerator</a></td>
 <th class="colLast" scope="row">
 <div class="block">Generate metrics aggregated at the namespace level and optionally at a topic level and formats them out
  in a text format suitable to be consumed by Prometheus.</div>
 </th>
 </tr>
-<tr id="i250" class="altColor">
+<tr id="i249" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/stats/prometheus/metrics/PrometheusMetricsProvider.html" title="class in org.apache.pulsar.broker.stats.prometheus.metrics">PrometheusMetricsProvider</a></td>
 <th class="colLast" scope="row">
 <div class="block">A <i>Prometheus</i> based <code>StatsProvider</code> implementation.</div>
 </th>
 </tr>
-<tr id="i251" class="rowColor">
+<tr id="i250" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/stats/prometheus/PrometheusMetricsServlet.html" title="class in org.apache.pulsar.broker.stats.prometheus">PrometheusMetricsServlet</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i252" class="altColor">
+<tr id="i251" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/stats/prometheus/PrometheusRawMetricsProvider.html" title="interface in org.apache.pulsar.broker.stats.prometheus">PrometheusRawMetricsProvider</a></td>
 <th class="colLast" scope="row">
 <div class="block">The prometheus metrics provider for generate prometheus format metrics.</div>
 </th>
 </tr>
-<tr id="i253" class="rowColor">
+<tr id="i252" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/stats/prometheus/metrics/PrometheusStatsLogger.html" title="class in org.apache.pulsar.broker.stats.prometheus.metrics">PrometheusStatsLogger</a></td>
 <th class="colLast" scope="row">
 <div class="block">A <code>Prometheus</code> based <code>StatsLogger</code> implementation.</div>
 </th>
 </tr>
-<tr id="i254" class="altColor">
+<tr id="i253" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/stats/prometheus/metrics/PrometheusTextFormatUtil.html" title="class in org.apache.pulsar.broker.stats.prometheus.metrics">PrometheusTextFormatUtil</a></td>
 <th class="colLast" scope="row">
 <div class="block">Logic to write metrics in Prometheus text format.</div>
 </th>
 </tr>
-<tr id="i255" class="rowColor">
+<tr id="i254" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v1/Properties.html" title="class in org.apache.pulsar.broker.admin.v1">Properties</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i256" class="altColor">
+<tr id="i255" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/ProtobufNativeSchemaCompatibilityCheck.html" title="class in org.apache.pulsar.broker.service.schema">ProtobufNativeSchemaCompatibilityCheck</a></td>
 <th class="colLast" scope="row">
 <div class="block">The <a href="org/apache/pulsar/broker/service/schema/SchemaCompatibilityCheck.html" title="interface in org.apache.pulsar.broker.service.schema"><code>SchemaCompatibilityCheck</code></a> implementation for <code>SchemaType.PROTOBUF_NATIVE</code>.</div>
 </th>
 </tr>
-<tr id="i257" class="rowColor">
+<tr id="i256" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/validator/ProtobufNativeSchemaDataValidator.html" title="class in org.apache.pulsar.broker.service.schema.validator">ProtobufNativeSchemaDataValidator</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i258" class="altColor">
+<tr id="i257" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/ProtobufSchemaCompatibilityCheck.html" title="class in org.apache.pulsar.broker.service.schema">ProtobufSchemaCompatibilityCheck</a></td>
 <th class="colLast" scope="row">
 <div class="block">The <a href="org/apache/pulsar/broker/service/schema/SchemaCompatibilityCheck.html" title="interface in org.apache.pulsar.broker.service.schema"><code>SchemaCompatibilityCheck</code></a> implementation for <code>SchemaType.PROTOBUF</code>.</div>
 </th>
 </tr>
-<tr id="i259" class="rowColor">
+<tr id="i258" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/protocol/ProtocolHandler.html" title="interface in org.apache.pulsar.broker.protocol">ProtocolHandler</a></td>
 <th class="colLast" scope="row">
 <div class="block">The protocol handler interface for support additional protocols on Pulsar brokers.</div>
 </th>
 </tr>
-<tr id="i260" class="altColor">
+<tr id="i259" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/protocol/ProtocolHandlerDefinition.html" title="class in org.apache.pulsar.broker.protocol">ProtocolHandlerDefinition</a></td>
 <th class="colLast" scope="row">
 <div class="block">Metadata information about a Pulsar protocol handler.</div>
 </th>
 </tr>
-<tr id="i261" class="rowColor">
+<tr id="i260" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/protocol/ProtocolHandlers.html" title="class in org.apache.pulsar.broker.protocol">ProtocolHandlers</a></td>
 <th class="colLast" scope="row">
 <div class="block">A collection of loaded handlers.</div>
 </th>
 </tr>
-<tr id="i262" class="altColor">
+<tr id="i261" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/PublishRateLimiter.html" title="interface in org.apache.pulsar.broker.service">PublishRateLimiter</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i263" class="rowColor">
+<tr id="i262" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/PublishRateLimiterDisable.html" title="class in org.apache.pulsar.broker.service">PublishRateLimiterDisable</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i264" class="altColor">
+<tr id="i263" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/PublishRateLimiterImpl.html" title="class in org.apache.pulsar.broker.service">PublishRateLimiterImpl</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i265" class="rowColor">
+<tr id="i264" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/PulsarBrokerStarter.html" title="class in org.apache.pulsar">PulsarBrokerStarter</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i266" class="altColor">
+<tr id="i265" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/PulsarChannelInitializer.html" title="class in org.apache.pulsar.broker.service">PulsarChannelInitializer</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i267" class="rowColor">
+<tr id="i266" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/PulsarChannelInitializer.Factory.html" title="interface in org.apache.pulsar.broker.service">PulsarChannelInitializer.Factory</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i268" class="altColor">
+<tr id="i267" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/PulsarChannelInitializer.PulsarChannelOptions.html" title="class in org.apache.pulsar.broker.service">PulsarChannelInitializer.PulsarChannelOptions</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i269" class="rowColor">
+<tr id="i268" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/PulsarClusterMetadataSetup.html" title="class in org.apache.pulsar">PulsarClusterMetadataSetup</a></td>
 <th class="colLast" scope="row">
 <div class="block">Setup the metadata for a new Pulsar cluster.</div>
 </th>
 </tr>
-<tr id="i270" class="altColor">
+<tr id="i269" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/PulsarClusterMetadataTeardown.html" title="class in org.apache.pulsar">PulsarClusterMetadataTeardown</a></td>
 <th class="colLast" scope="row">
 <div class="block">Teardown the metadata for a existed Pulsar cluster.</div>
 </th>
 </tr>
-<tr id="i271" class="rowColor">
+<tr id="i270" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/PulsarCommandSender.html" title="interface in org.apache.pulsar.broker.service">PulsarCommandSender</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i272" class="altColor">
+<tr id="i271" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/PulsarCommandSenderImpl.html" title="class in org.apache.pulsar.broker.service">PulsarCommandSenderImpl</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i273" class="rowColor">
+<tr id="i272" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/PulsarInitialNamespaceSetup.html" title="class in org.apache.pulsar">PulsarInitialNamespaceSetup</a></td>
 <th class="colLast" scope="row">
 <div class="block">Setup the initial namespace of the cluster without startup the Pulsar broker.</div>
 </th>
 </tr>
-<tr id="i274" class="altColor">
+<tr id="i273" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/utils/PulsarKeyException.html" title="class in org.apache.pulsar.utils">PulsarKeyException</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i275" class="rowColor">
+<tr id="i274" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/PulsarLoadReportImpl.html" title="class in org.apache.pulsar.broker.loadbalance.impl">PulsarLoadReportImpl</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i276" class="altColor">
+<tr id="i275" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/PulsarResourceDescription.html" title="class in org.apache.pulsar.broker.loadbalance.impl">PulsarResourceDescription</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i277" class="rowColor">
+<tr id="i276" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/web/PulsarServerConnector.html" title="class in org.apache.pulsar.broker.web">PulsarServerConnector</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i278" class="altColor">
+<tr id="i277" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/PulsarService.html" title="class in org.apache.pulsar.broker">PulsarService</a></td>
 <th class="colLast" scope="row">
 <div class="block">Main class for Pulsar broker service.</div>
 </th>
 </tr>
-<tr id="i279" class="rowColor">
+<tr id="i278" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/PulsarService.State.html" title="enum in org.apache.pulsar.broker">PulsarService.State</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i280" class="altColor">
+<tr id="i279" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/PulsarServiceRequest.html" title="class in org.apache.pulsar.broker.loadbalance.impl">PulsarServiceRequest</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i281" class="rowColor">
+<tr id="i280" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/PulsarServiceUnit.html" title="class in org.apache.pulsar.broker.loadbalance.impl">PulsarServiceUnit</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i282" class="altColor">
+<tr id="i281" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/PulsarStandalone.html" title="class in org.apache.pulsar">PulsarStandalone</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i283" class="rowColor">
+<tr id="i282" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/PulsarStandaloneBuilder.html" title="class in org.apache.pulsar">PulsarStandaloneBuilder</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i284" class="altColor">
+<tr id="i283" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/PulsarStandaloneStarter.html" title="class in org.apache.pulsar">PulsarStandaloneStarter</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i285" class="rowColor">
+<tr id="i284" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/PulsarStats.html" title="class in org.apache.pulsar.broker.service">PulsarStats</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i286" class="altColor">
+<tr id="i285" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/PulsarTransactionCoordinatorMetadataSetup.html" title="class in org.apache.pulsar">PulsarTransactionCoordinatorMetadataSetup</a></td>
 <th class="colLast" scope="row">
 <div class="block">Setup the transaction coordinator metadata for a cluster, the setup will create pulsar/system namespace and create
  partitioned topic for transaction coordinator assign.</div>
 </th>
 </tr>
-<tr id="i287" class="rowColor">
+<tr id="i286" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/PulsarVersionStarter.html" title="class in org.apache.pulsar">PulsarVersionStarter</a></td>
 <th class="colLast" scope="row">
 <div class="block">Pulsar version entry point.</div>
 </th>
 </tr>
-<tr id="i288" class="altColor">
+<tr id="i287" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></td>
 <th class="colLast" scope="row">
 <div class="block">Base class for Web resources in Pulsar.</div>
 </th>
 </tr>
-<tr id="i289" class="rowColor">
+<tr id="i288" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/common/naming/RangeEquallyDivideBundleSplitAlgorithm.html" title="class in org.apache.pulsar.common.naming">RangeEquallyDivideBundleSplitAlgorithm</a></td>
 <th class="colLast" scope="row">
 <div class="block">This algorithm divides the bundle into two parts with the same hash range size.</div>
 </th>
 </tr>
-<tr id="i290" class="altColor">
+<tr id="i289" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/client/impl/RawBatchConverter.html" title="class in org.apache.pulsar.client.impl">RawBatchConverter</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i291" class="rowColor">
+<tr id="i290" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/client/api/RawMessage.html" title="interface in org.apache.pulsar.client.api">RawMessage</a></td>
 <th class="colLast" scope="row">
 <div class="block">A representation of a message in a topic in its raw form (i.e.</div>
 </th>
 </tr>
-<tr id="i292" class="altColor">
+<tr id="i291" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/client/impl/RawMessageImpl.html" title="class in org.apache.pulsar.client.impl">RawMessageImpl</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i293" class="rowColor">
+<tr id="i292" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/client/api/RawReader.html" title="interface in org.apache.pulsar.client.api">RawReader</a></td>
 <th class="colLast" scope="row">
 <div class="block">Topic reader which receives raw messages (i.e.</div>
 </th>
 </tr>
-<tr id="i294" class="altColor">
+<tr id="i293" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/client/impl/RawReaderImpl.html" title="class in org.apache.pulsar.client.impl">RawReaderImpl</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i295" class="rowColor">
+<tr id="i294" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/RedeliveryTracker.html" title="interface in org.apache.pulsar.broker.service">RedeliveryTracker</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i296" class="altColor">
+<tr id="i295" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/RedeliveryTrackerDisabled.html" title="class in org.apache.pulsar.broker.service">RedeliveryTrackerDisabled</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i297" class="rowColor">
+<tr id="i296" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/lookup/RedirectData.html" title="class in org.apache.pulsar.broker.lookup">RedirectData</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i298" class="altColor">
+<tr id="i297" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/persistent/ReplicatedSubscriptionsController.html" title="class in org.apache.pulsar.broker.service.persistent">ReplicatedSubscriptionsController</a></td>
 <th class="colLast" scope="row">
 <div class="block">Encapsulate all the logic of replicated subscriptions tracking for a given topic.</div>
 </th>
 </tr>
-<tr id="i299" class="rowColor">
+<tr id="i298" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/persistent/ReplicatedSubscriptionSnapshotCache.html" title="class in org.apache.pulsar.broker.service.persistent">ReplicatedSubscriptionSnapshotCache</a></td>
 <th class="colLast" scope="row">
 <div class="block">Store the last N snapshots that were scanned by a particular subscription.</div>
 </th>
 </tr>
-<tr id="i300" class="altColor">
+<tr id="i299" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/persistent/ReplicatedSubscriptionsSnapshotBuilder.html" title="class in org.apache.pulsar.broker.service.persistent">ReplicatedSubscriptionsSnapshotBuilder</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i301" class="rowColor">
+<tr id="i300" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/stats/ReplicationMetrics.html" title="class in org.apache.pulsar.broker.stats">ReplicationMetrics</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i302" class="altColor">
+<tr id="i301" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/Replicator.html" title="interface in org.apache.pulsar.broker.service">Replicator</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i303" class="rowColor">
+<tr id="i302" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/web/RequestWrapper.html" title="class in org.apache.pulsar.broker.web">RequestWrapper</a></td>
 <th class="colLast" scope="row">
 <div class="block">Http request wrapper.</div>
 </th>
 </tr>
-<tr id="i304" class="altColor">
+<tr id="i303" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/ResourceAvailabilityRanker.html" title="class in org.apache.pulsar.broker.loadbalance.impl">ResourceAvailabilityRanker</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i305" class="rowColor">
+<tr id="i304" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/ResourceDescription.html" title="class in org.apache.pulsar.broker.loadbalance">ResourceDescription</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i306" class="altColor">
+<tr id="i305" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroup.html" title="class in org.apache.pulsar.broker.resourcegroup">ResourceGroup</a></td>
 <th class="colLast" scope="row">
 <div class="block">The resource group (RG) data structure.</div>
 </th>
 </tr>
-<tr id="i307" class="rowColor">
+<tr id="i306" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroup.BytesAndMessagesCount.html" title="class in org.apache.pulsar.broker.resourcegroup">ResourceGroup.BytesAndMessagesCount</a></td>
 <th class="colLast" scope="row">
 <div class="block">Convenience class for bytes and messages counts, which are used together in a lot of the following code.</div>
 </th>
 </tr>
-<tr id="i308" class="altColor">
+<tr id="i307" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroup.PerBrokerUsageStats.html" title="class in org.apache.pulsar.broker.resourcegroup">ResourceGroup.PerBrokerUsageStats</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i309" class="rowColor">
+<tr id="i308" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroup.PerMonitoringClassFields.html" title="class in org.apache.pulsar.broker.resourcegroup">ResourceGroup.PerMonitoringClassFields</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i310" class="altColor">
+<tr id="i309" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroup.ResourceGroupMonitoringClass.html" title="enum in org.apache.pulsar.broker.resourcegroup">ResourceGroup.ResourceGroupMonitoringClass</a></td>
 <th class="colLast" scope="row">
 <div class="block">Usage "sense" for resource groups: publish and dispatch for now; may be more later (e.g., storage-monitoring)
  ToDo: "class" is vague; is there a better term to call this?</div>
 </th>
 </tr>
-<tr id="i311" class="rowColor">
+<tr id="i310" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroup.ResourceGroupRefTypes.html" title="enum in org.apache.pulsar.broker.resourcegroup">ResourceGroup.ResourceGroupRefTypes</a></td>
 <th class="colLast" scope="row">
 <div class="block">The entities that might reference RGs are tenants, namespaces (and maybe topics, later).</div>
 </th>
 </tr>
-<tr id="i312" class="altColor">
+<tr id="i311" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroupConfigListener.html" title="class in org.apache.pulsar.broker.resourcegroup">ResourceGroupConfigListener</a></td>
 <th class="colLast" scope="row">
 <div class="block">Resource Group Config Listener</div>
 </th>
 </tr>
-<tr id="i313" class="rowColor">
+<tr id="i312" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroupNamespaceConfigListener.html" title="class in org.apache.pulsar.broker.resourcegroup">ResourceGroupNamespaceConfigListener</a></td>
 <th class="colLast" scope="row">
 <div class="block">Resource Group Namespace Config Listener</div>
 </th>
 </tr>
-<tr id="i314" class="altColor">
+<tr id="i313" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroupPublishLimiter.html" title="class in org.apache.pulsar.broker.resourcegroup">ResourceGroupPublishLimiter</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i315" class="rowColor">
+<tr id="i314" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v2/ResourceGroups.html" title="class in org.apache.pulsar.broker.admin.v2">ResourceGroups</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i316" class="altColor">
+<tr id="i315" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/impl/ResourceGroupsBase.html" title="class in org.apache.pulsar.broker.admin.impl">ResourceGroupsBase</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i317" class="rowColor">
+<tr id="i316" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroupService.html" title="class in org.apache.pulsar.broker.resourcegroup">ResourceGroupService</a></td>
 <th class="colLast" scope="row">
 <div class="block">The <code>ResourceGroupService</code> contains APIs to manipulate resource groups.</div>
 </th>
 </tr>
-<tr id="i318" class="altColor">
+<tr id="i317" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroupService.ResourceGroupOpStatus.html" title="enum in org.apache.pulsar.broker.resourcegroup">ResourceGroupService.ResourceGroupOpStatus</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i319" class="rowColor">
+<tr id="i318" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceGroupService.ResourceGroupUsageStatsType.html" title="enum in org.apache.pulsar.broker.resourcegroup">ResourceGroupService.ResourceGroupUsageStatsType</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i320" class="altColor">
+<tr id="i319" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceQuotaCalculator.html" title="interface in org.apache.pulsar.broker.resourcegroup">ResourceQuotaCalculator</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i321" class="rowColor">
+<tr id="i320" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceQuotaCalculatorImpl.html" title="class in org.apache.pulsar.broker.resourcegroup">ResourceQuotaCalculatorImpl</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i322" class="altColor">
+<tr id="i321" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v1/ResourceQuotas.html" title="class in org.apache.pulsar.broker.admin.v1">ResourceQuotas</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i323" class="rowColor">
+<tr id="i322" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v2/ResourceQuotas.html" title="class in org.apache.pulsar.broker.admin.v2">ResourceQuotas</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i324" class="altColor">
+<tr id="i323" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/impl/ResourceQuotasBase.html" title="class in org.apache.pulsar.broker.admin.impl">ResourceQuotasBase</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i325" class="rowColor">
+<tr id="i324" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/ResourceUnit.html" title="interface in org.apache.pulsar.broker.loadbalance">ResourceUnit</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i326" class="altColor">
+<tr id="i325" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/resource/usage/ResourceUsage.html" title="class in org.apache.pulsar.broker.service.resource.usage">ResourceUsage</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i327" class="rowColor">
+<tr id="i326" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceUsageConsumer.html" title="interface in org.apache.pulsar.broker.resourcegroup">ResourceUsageConsumer</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i328" class="altColor">
+<tr id="i327" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/resource/usage/ResourceUsageInfo.html" title="class in org.apache.pulsar.broker.service.resource.usage">ResourceUsageInfo</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i329" class="rowColor">
+<tr id="i328" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceUsagePublisher.html" title="interface in org.apache.pulsar.broker.resourcegroup">ResourceUsagePublisher</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i330" class="altColor">
+<tr id="i329" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceUsageTopicTransportManager.html" title="class in org.apache.pulsar.broker.resourcegroup">ResourceUsageTopicTransportManager</a></td>
 <th class="colLast" scope="row">
 <div class="block">Resource Usage Transport Manager</div>
 </th>
 </tr>
-<tr id="i331" class="rowColor">
+<tr id="i330" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManager.html" title="interface in org.apache.pulsar.broker.resourcegroup">ResourceUsageTransportManager</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i332" class="altColor">
+<tr id="i331" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/resourcegroup/ResourceUsageTransportManager.ResourceUsageDisabledTransportManager.html" title="class in org.apache.pulsar.broker.resourcegroup">ResourceUsageTransportManager.ResourceUsageDisabledTransportManager</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i333" class="rowColor">
+<tr id="i332" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/web/ResponseHandlerFilter.html" title="class in org.apache.pulsar.broker.web">ResponseHandlerFilter</a></td>
 <th class="colLast" scope="row">
 <div class="block">Servlet filter that hooks up to handle outgoing response.</div>
 </th>
 </tr>
-<tr id="i334" class="altColor">
+<tr id="i333" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/web/RestException.html" title="class in org.apache.pulsar.broker.web">RestException</a></td>
 <th class="colLast" scope="row">
 <div class="block">Exception used to provide better error messages to clients of the REST API.</div>
 </th>
 </tr>
-<tr id="i335" class="rowColor">
+<tr id="i334" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/rest/RestMessagePublishContext.html" title="class in org.apache.pulsar.broker.rest">RestMessagePublishContext</a></td>
 <th class="colLast" scope="row">
 <div class="block">PublishContext implementation for REST message publishing.</div>
 </th>
 </tr>
-<tr id="i336" class="altColor">
+<tr id="i335" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaCompatibilityCheck.html" title="interface in org.apache.pulsar.broker.service.schema">SchemaCompatibilityCheck</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i337" class="rowColor">
+<tr id="i336" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/validator/SchemaDataValidator.html" title="interface in org.apache.pulsar.broker.service.schema.validator">SchemaDataValidator</a></td>
 <th class="colLast" scope="row">
 <div class="block">A validator to validate the schema data is well formed.</div>
 </th>
 </tr>
-<tr id="i338" class="altColor">
+<tr id="i337" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/exceptions/SchemaException.html" title="class in org.apache.pulsar.broker.service.schema.exceptions">SchemaException</a></td>
 <th class="colLast" scope="row">
 <div class="block">Schema related exceptions.</div>
 </th>
 </tr>
-<tr id="i339" class="rowColor">
+<tr id="i338" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaRegistry.html" title="interface in org.apache.pulsar.broker.service.schema">SchemaRegistry</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i340" class="altColor">
+<tr id="i339" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaRegistry.SchemaAndMetadata.html" title="class in org.apache.pulsar.broker.service.schema">SchemaRegistry.SchemaAndMetadata</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i341" class="rowColor">
+<tr id="i340" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/proto/SchemaRegistryFormat.html" title="class in org.apache.pulsar.broker.service.schema.proto">SchemaRegistryFormat</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i342" class="altColor">
+<tr id="i341" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/proto/SchemaRegistryFormat.SchemaInfo.html" title="class in org.apache.pulsar.broker.service.schema.proto">SchemaRegistryFormat.SchemaInfo</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.SchemaInfo</code></div>
 </th>
 </tr>
-<tr id="i343" class="rowColor">
+<tr id="i342" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/proto/SchemaRegistryFormat.SchemaInfo.Builder.html" title="class in org.apache.pulsar.broker.service.schema.proto">SchemaRegistryFormat.SchemaInfo.Builder</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.SchemaInfo</code></div>
 </th>
 </tr>
-<tr id="i344" class="altColor">
+<tr id="i343" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/proto/SchemaRegistryFormat.SchemaInfo.KeyValuePair.html" title="class in org.apache.pulsar.broker.service.schema.proto">SchemaRegistryFormat.SchemaInfo.KeyValuePair</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.SchemaInfo.KeyValuePair</code></div>
 </th>
 </tr>
-<tr id="i345" class="rowColor">
+<tr id="i344" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/proto/SchemaRegistryFormat.SchemaInfo.KeyValuePair.Builder.html" title="class in org.apache.pulsar.broker.service.schema.proto">SchemaRegistryFormat.SchemaInfo.KeyValuePair.Builder</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.SchemaInfo.KeyValuePair</code></div>
 </th>
 </tr>
-<tr id="i346" class="altColor">
+<tr id="i345" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/proto/SchemaRegistryFormat.SchemaInfo.KeyValuePairOrBuilder.html" title="interface in org.apache.pulsar.broker.service.schema.proto">SchemaRegistryFormat.SchemaInfo.KeyValuePairOrBuilder</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i347" class="rowColor">
+<tr id="i346" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/proto/SchemaRegistryFormat.SchemaInfo.SchemaType.html" title="enum in org.apache.pulsar.broker.service.schema.proto">SchemaRegistryFormat.SchemaInfo.SchemaType</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf enum <code>pulsar.schema.SchemaInfo.SchemaType</code></div>
 </th>
 </tr>
-<tr id="i348" class="altColor">
+<tr id="i347" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/proto/SchemaRegistryFormat.SchemaInfoOrBuilder.html" title="interface in org.apache.pulsar.broker.service.schema.proto">SchemaRegistryFormat.SchemaInfoOrBuilder</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i349" class="rowColor">
+<tr id="i348" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaRegistryService.html" title="interface in org.apache.pulsar.broker.service.schema">SchemaRegistryService</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i350" class="altColor">
+<tr id="i349" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaRegistryServiceImpl.html" title="class in org.apache.pulsar.broker.service.schema">SchemaRegistryServiceImpl</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i351" class="rowColor">
+<tr id="i350" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/validator/SchemaRegistryServiceWithSchemaDataValidator.html" title="class in org.apache.pulsar.broker.service.schema.validator">SchemaRegistryServiceWithSchemaDataValidator</a></td>
 <th class="colLast" scope="row">
 <div class="block">A <a href="org/apache/pulsar/broker/service/schema/SchemaRegistryService.html" title="interface in org.apache.pulsar.broker.service.schema"><code>SchemaRegistryService</code></a> wrapper that validate schema data.</div>
 </th>
 </tr>
-<tr id="i352" class="altColor">
+<tr id="i351" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v1/SchemasResource.html" title="class in org.apache.pulsar.broker.admin.v1">SchemasResource</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i353" class="rowColor">
+<tr id="i352" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v2/SchemasResource.html" title="class in org.apache.pulsar.broker.admin.v2">SchemasResource</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i354" class="altColor">
+<tr id="i353" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/impl/SchemasResourceBase.html" title="class in org.apache.pulsar.broker.admin.impl">SchemasResourceBase</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i355" class="rowColor">
+<tr id="i354" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFactory.html" title="interface in org.apache.pulsar.broker.service.schema">SchemaStorageFactory</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i356" class="altColor">
+<tr id="i355" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.html" title="class in org.apache.pulsar.broker.service.schema">SchemaStorageFormat</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i357" class="rowColor">
+<tr id="i356" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.IndexEntry.html" title="class in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.IndexEntry</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.IndexEntry</code></div>
 </th>
 </tr>
-<tr id="i358" class="altColor">
+<tr id="i357" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.IndexEntry.Builder.html" title="class in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.IndexEntry.Builder</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.IndexEntry</code></div>
 </th>
 </tr>
-<tr id="i359" class="rowColor">
+<tr id="i358" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.IndexEntryOrBuilder.html" title="interface in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.IndexEntryOrBuilder</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i360" class="altColor">
+<tr id="i359" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.PositionInfo.html" title="class in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.PositionInfo</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.PositionInfo</code></div>
 </th>
 </tr>
-<tr id="i361" class="rowColor">
+<tr id="i360" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.PositionInfo.Builder.html" title="class in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.PositionInfo.Builder</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.PositionInfo</code></div>
 </th>
 </tr>
-<tr id="i362" class="altColor">
+<tr id="i361" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.PositionInfoOrBuilder.html" title="interface in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.PositionInfoOrBuilder</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i363" class="rowColor">
+<tr id="i362" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.SchemaEntry.html" title="class in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.SchemaEntry</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.SchemaEntry</code></div>
 </th>
 </tr>
-<tr id="i364" class="altColor">
+<tr id="i363" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.SchemaEntry.Builder.html" title="class in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.SchemaEntry.Builder</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.SchemaEntry</code></div>
 </th>
 </tr>
-<tr id="i365" class="rowColor">
+<tr id="i364" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.SchemaEntryOrBuilder.html" title="interface in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.SchemaEntryOrBuilder</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i366" class="altColor">
+<tr id="i365" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.SchemaLocator.html" title="class in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.SchemaLocator</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.SchemaLocator</code></div>
 </th>
 </tr>
-<tr id="i367" class="rowColor">
+<tr id="i366" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.SchemaLocator.Builder.html" title="class in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.SchemaLocator.Builder</a></td>
 <th class="colLast" scope="row">
 <div class="block">Protobuf type <code>pulsar.schema.SchemaLocator</code></div>
 </th>
 </tr>
-<tr id="i368" class="altColor">
+<tr id="i367" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/schema/SchemaStorageFormat.SchemaLocatorOrBuilder.html" title="interface in org.apache.pulsar.broker.service.schema">SchemaStorageFormat.SchemaLocatorOrBuilder</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i369" class="rowColor">
+<tr id="i368" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/SendMessageInfo.html" title="class in org.apache.pulsar.broker.service">SendMessageInfo</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i370" class="altColor">
+<tr id="i369" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/ServerCnx.html" title="class in org.apache.pulsar.broker.service">ServerCnx</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i371" class="rowColor">
+<tr id="i370" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/ServiceRequest.html" title="class in org.apache.pulsar.broker.loadbalance">ServiceRequest</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i372" class="altColor">
+<tr id="i371" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/ServiceUnit.html" title="class in org.apache.pulsar.broker.loadbalance">ServiceUnit</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i373" class="rowColor">
+<tr id="i372" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/namespace/ServiceUnitUtils.html" title="class in org.apache.pulsar.broker.namespace">ServiceUnitUtils</a></td>
 <th class="colLast" scope="row">
 <div class="block">This class encapsulate some utility functions for
  <code>ServiceUnit</code> related metadata operations.</div>
 </th>
 </tr>
-<tr id="i374" class="altColor">
+<tr id="i373" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/stats/prometheus/metrics/SimpleGauge.html" title="class in org.apache.pulsar.broker.stats.prometheus.metrics">SimpleGauge</a>&lt;<a href="org/apache/pulsar/broker/stats/prometheus/metrics/SimpleGauge.html" title="type parameter in SimpleGauge">T</a> extends java.lang.Number&gt;</td>
 <th class="colLast" scope="row">
 <div class="block">A <code>Gauge</code> implementation that forwards on the value supplier.</div>
 </th>
 </tr>
-<tr id="i375" class="rowColor">
+<tr id="i374" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/SimpleLoadCalculatorImpl.html" title="class in org.apache.pulsar.broker.loadbalance.impl">SimpleLoadCalculatorImpl</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i376" class="altColor">
+<tr id="i375" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/SimpleLoadManagerImpl.html" title="class in org.apache.pulsar.broker.loadbalance.impl">SimpleLoadManagerImpl</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i377" class="rowColor">
+<tr id="i376" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/SimpleResourceAllocationPolicies.html" title="class in org.apache.pulsar.broker.loadbalance.impl">SimpleResourceAllocationPolicies</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i378" class="altColor">
+<tr id="i377" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/SimpleResourceUnit.html" title="class in org.apache.pulsar.broker.loadbalance.impl">SimpleResourceUnit</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i379" class="rowColor">
+<tr id="i378" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v3/Sink.html" title="class in org.apache.pulsar.broker.admin.v3">Sink</a></td>
 <th class="colLast" scope="row">Deprecated.</th>
 </tr>
-<tr id="i380" class="altColor">
+<tr id="i379" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v3/Sinks.html" title="class in org.apache.pulsar.broker.admin.v3">Sinks</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i381" class="rowColor">
+<tr id="i380" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/impl/SinksBase.html" title="class in org.apache.pulsar.broker.admin.impl">SinksBase</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i382" class="altColor">
+<tr id="i381" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v3/Source.html" title="class in org.apache.pulsar.broker.admin.v3">Source</a></td>
 <th class="colLast" scope="row">Deprecated.</th>
 </tr>
-<tr id="i383" class="rowColor">
+<tr id="i382" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v3/Sources.html" title="class in org.apache.pulsar.broker.admin.v3">Sources</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i384" class="altColor">
+<tr id="i383" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/impl/SourcesBase.html" title="class in org.apache.pulsar.broker.admin.impl">SourcesBase</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i385" class="rowColor">
+<tr id="i384" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/utils/StatsOutputStream.html" title="class in org.apache.pulsar.utils">StatsOutputStream</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i386" class="altColor">
+<tr id="i385" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/StickyKeyConsumerSelector.html" title="interface in org.apache.pulsar.broker.service">StickyKeyConsumerSelector</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i387" class="rowColor">
+<tr id="i386" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/resource/usage/StorageUsage.html" title="class in org.apache.pulsar.broker.service.resource.usage">StorageUsage</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i388" class="altColor">
+<tr id="i387" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/streamingdispatch/StreamingDispatcher.html" title="interface in org.apache.pulsar.broker.service.streamingdispatch">StreamingDispatcher</a></td>
 <th class="colLast" scope="row">
 <div class="block">A <a href="org/apache/pulsar/broker/service/Dispatcher.html" title="interface in org.apache.pulsar.broker.service"><code>Dispatcher</code></a> that'll use <a href="org/apache/pulsar/broker/service/streamingdispatch/StreamingEntryReader.html" title="class in org.apache.pulsar.broker.service.streamingdispatch"><code>StreamingEntryReader</code></a> to read entries from <code>ManagedLedger</code>.</div>
 </th>
 </tr>
-<tr id="i389" class="rowColor">
+<tr id="i388" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/streamingdispatch/StreamingEntryReader.html" title="class in org.apache.pulsar.broker.service.streamingdispatch">StreamingEntryReader</a></td>
 <th class="colLast" scope="row">
 <div class="block">Entry reader that fulfill read request by streamline the read instead of reading with micro batch.</div>
 </th>
 </tr>
-<tr id="i390" class="altColor">
+<tr id="i389" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/StreamingStats.html" title="class in org.apache.pulsar.broker.service">StreamingStats</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i391" class="rowColor">
+<tr id="i390" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/persistent/SubscribeRateLimiter.html" title="class in org.apache.pulsar.broker.service.persistent">SubscribeRateLimiter</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i392" class="altColor">
+<tr id="i391" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/persistent/SubscribeRateLimiter.ConsumerIdentifier.html" title="class in org.apache.pulsar.broker.service.persistent">SubscribeRateLimiter.ConsumerIdentifier</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i393" class="rowColor">
+<tr id="i392" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/Subscription.html" title="interface in org.apache.pulsar.broker.service">Subscription</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i394" class="altColor">
+<tr id="i393" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/SubscriptionOption.html" title="class in org.apache.pulsar.broker.service">SubscriptionOption</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i395" class="rowColor">
+<tr id="i394" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/stats/prometheus/metrics/Summary.html" title="class in org.apache.pulsar.broker.stats.prometheus.metrics">Summary</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i396" class="altColor">
+<tr id="i395" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/stats/prometheus/metrics/Summary.Builder.html" title="class in org.apache.pulsar.broker.stats.prometheus.metrics">Summary.Builder</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i397" class="rowColor">
+<tr id="i396" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/persistent/SystemTopic.html" title="class in org.apache.pulsar.broker.service.persistent">SystemTopic</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i398" class="altColor">
+<tr id="i397" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.html" title="class in org.apache.pulsar.broker.service">SystemTopicBasedTopicPoliciesService</a></td>
 <th class="colLast" scope="row">
 <div class="block">Cached topic policies service will cache the system topic reader and the topic policies
@@ -2005,382 +2001,382 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
  While reader cache for the namespace was removed, the topic policies will remove automatically.</div>
 </th>
 </tr>
-<tr id="i399" class="rowColor">
+<tr id="i398" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/SystemTopicBaseTxnBufferSnapshotService.html" title="class in org.apache.pulsar.broker.service">SystemTopicBaseTxnBufferSnapshotService</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i400" class="altColor">
+<tr id="i399" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/systopic/SystemTopicClient.html" title="interface in org.apache.pulsar.broker.systopic">SystemTopicClient</a>&lt;<a href="org/apache/pulsar/broker/systopic/SystemTopicClient.html" title="type parameter in SystemTopicClient">T</a>&gt;</td>
 <th class="colLast" scope="row">
 <div class="block">Pulsar system topic.</div>
 </th>
 </tr>
-<tr id="i401" class="rowColor">
+<tr id="i400" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/systopic/SystemTopicClient.Reader.html" title="interface in org.apache.pulsar.broker.systopic">SystemTopicClient.Reader</a>&lt;<a href="org/apache/pulsar/broker/systopic/SystemTopicClient.Reader.html" title="type parameter in SystemTopicClient.Reader">T</a>&gt;</td>
 <th class="colLast" scope="row">
 <div class="block">Reader for system topic.</div>
 </th>
 </tr>
-<tr id="i402" class="altColor">
+<tr id="i401" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/systopic/SystemTopicClient.Writer.html" title="interface in org.apache.pulsar.broker.systopic">SystemTopicClient.Writer</a>&lt;<a href="org/apache/pulsar/broker/systopic/SystemTopicClient.Writer.html" title="type parameter in SystemTopicClient.Writer">T</a>&gt;</td>
 <th class="colLast" scope="row">
 <div class="block">Writer for system topic.</div>
 </th>
 </tr>
-<tr id="i403" class="rowColor">
+<tr id="i402" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/systopic/SystemTopicClientBase.html" title="class in org.apache.pulsar.broker.systopic">SystemTopicClientBase</a>&lt;<a href="org/apache/pulsar/broker/systopic/SystemTopicClientBase.html" title="type parameter in SystemTopicClientBase">T</a>&gt;</td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i404" class="altColor">
+<tr id="i403" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v2/Tenants.html" title="class in org.apache.pulsar.broker.admin.v2">Tenants</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i405" class="rowColor">
+<tr id="i404" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/impl/TenantsBase.html" title="class in org.apache.pulsar.broker.admin.impl">TenantsBase</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i406" class="altColor">
+<tr id="i405" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/ThresholdShedder.html" title="class in org.apache.pulsar.broker.loadbalance.impl">ThresholdShedder</a></td>
 <th class="colLast" scope="row">
 <div class="block">Load shedding strategy that unloads any broker that exceeds the average resource utilization of all brokers by a
  configured threshold.</div>
 </th>
 </tr>
-<tr id="i407" class="rowColor">
+<tr id="i406" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/TimeAverageBrokerData.html" title="class in org.apache.pulsar.broker">TimeAverageBrokerData</a></td>
 <th class="colLast" scope="row">
 <div class="block">Data class aggregating the short term and long term data across all bundles belonging to a broker.</div>
 </th>
 </tr>
-<tr id="i408" class="altColor">
+<tr id="i407" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/TimeAverageMessageData.html" title="class in org.apache.pulsar.broker">TimeAverageMessageData</a></td>
 <th class="colLast" scope="row">
 <div class="block">Data class comprising the average message data over a fixed period of time.</div>
 </th>
 </tr>
-<tr id="i409" class="rowColor">
+<tr id="i408" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/utils/auth/tokens/TokensCliUtils.html" title="class in org.apache.pulsar.utils.auth.tokens">TokensCliUtils</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i410" class="altColor">
+<tr id="i409" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/utils/auth/tokens/TokensCliUtils.Arguments.html" title="class in org.apache.pulsar.utils.auth.tokens">TokensCliUtils.Arguments</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i411" class="rowColor">
+<tr id="i410" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/utils/auth/tokens/TokensCliUtils.CommandCreateKeyPair.html" title="class in org.apache.pulsar.utils.auth.tokens">TokensCliUtils.CommandCreateKeyPair</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i412" class="altColor">
+<tr id="i411" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/utils/auth/tokens/TokensCliUtils.CommandCreateSecretKey.html" title="class in org.apache.pulsar.utils.auth.tokens">TokensCliUtils.CommandCreateSecretKey</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i413" class="rowColor">
+<tr id="i412" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/utils/auth/tokens/TokensCliUtils.CommandCreateToken.html" title="class in org.apache.pulsar.utils.auth.tokens">TokensCliUtils.CommandCreateToken</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i414" class="altColor">
+<tr id="i413" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/utils/auth/tokens/TokensCliUtils.CommandShowToken.html" title="class in org.apache.pulsar.utils.auth.tokens">TokensCliUtils.CommandShowToken</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i415" class="rowColor">
+<tr id="i414" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/utils/auth/tokens/TokensCliUtils.CommandValidateToken.html" title="class in org.apache.pulsar.utils.auth.tokens">TokensCliUtils.CommandValidateToken</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i416" class="altColor">
+<tr id="i415" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/Topic.html" title="interface in org.apache.pulsar.broker.service">Topic</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i417" class="rowColor">
+<tr id="i416" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/Topic.PublishContext.html" title="interface in org.apache.pulsar.broker.service">Topic.PublishContext</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i418" class="altColor">
+<tr id="i417" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/common/naming/TopicCountEquallyDivideBundleSplitAlgorithm.html" title="class in org.apache.pulsar.common.naming">TopicCountEquallyDivideBundleSplitAlgorithm</a></td>
 <th class="colLast" scope="row">
 <div class="block">This algorithm divides the bundle into two parts with the same topics count.</div>
 </th>
 </tr>
-<tr id="i419" class="rowColor">
+<tr id="i418" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/lookup/v1/TopicLookup.html" title="class in org.apache.pulsar.broker.lookup.v1">TopicLookup</a></td>
 <th class="colLast" scope="row">
 <div class="block">The path for this handler is marked as "v2" even though it refers to Pulsar 1.x topic name format.</div>
 </th>
 </tr>
-<tr id="i420" class="altColor">
+<tr id="i419" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/lookup/v2/TopicLookup.html" title="class in org.apache.pulsar.broker.lookup.v2">TopicLookup</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i421" class="rowColor">
+<tr id="i420" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/lookup/TopicLookupBase.html" title="class in org.apache.pulsar.broker.lookup">TopicLookupBase</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i422" class="altColor">
+<tr id="i421" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/TopicPoliciesService.html" title="interface in org.apache.pulsar.broker.service">TopicPoliciesService</a></td>
 <th class="colLast" scope="row">
 <div class="block">Topic policies service.</div>
 </th>
 </tr>
-<tr id="i423" class="rowColor">
+<tr id="i422" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/TopicPoliciesService.TopicPoliciesServiceDisabled.html" title="class in org.apache.pulsar.broker.service">TopicPoliciesService.TopicPoliciesServiceDisabled</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i424" class="altColor">
+<tr id="i423" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/systopic/TopicPoliciesSystemTopicClient.html" title="class in org.apache.pulsar.broker.systopic">TopicPoliciesSystemTopicClient</a></td>
 <th class="colLast" scope="row">
 <div class="block">System topic for topic policy.</div>
 </th>
 </tr>
-<tr id="i425" class="rowColor">
+<tr id="i424" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/TopicPolicyListener.html" title="interface in org.apache.pulsar.broker.service">TopicPolicyListener</a>&lt;<a href="org/apache/pulsar/broker/service/TopicPolicyListener.html" title="type parameter in TopicPolicyListener">T</a>&gt;</td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i426" class="altColor">
+<tr id="i425" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/rest/Topics.html" title="class in org.apache.pulsar.broker.rest">Topics</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i427" class="rowColor">
+<tr id="i426" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/rest/TopicsBase.html" title="class in org.apache.pulsar.broker.rest">TopicsBase</a></td>
 <th class="colLast" scope="row">
 <div class="block">Contains methods used by REST api to producer/consumer/read messages to/from pulsar topics.</div>
 </th>
 </tr>
-<tr id="i428" class="altColor">
+<tr id="i427" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/impl/TopicTransactionBuffer.html" title="class in org.apache.pulsar.broker.transaction.buffer.impl">TopicTransactionBuffer</a></td>
 <th class="colLast" scope="row">
 <div class="block">Transaction buffer based on normal persistent topic.</div>
 </th>
 </tr>
-<tr id="i429" class="rowColor">
+<tr id="i428" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/impl/TopicTransactionBufferProvider.html" title="class in org.apache.pulsar.broker.transaction.buffer.impl">TopicTransactionBufferProvider</a></td>
 <th class="colLast" scope="row">
 <div class="block">A provider that provides topic implementations of <a href="org/apache/pulsar/broker/transaction/buffer/TransactionBuffer.html" title="interface in org.apache.pulsar.broker.transaction.buffer"><code>TransactionBuffer</code></a>.</div>
 </th>
 </tr>
-<tr id="i430" class="altColor">
+<tr id="i429" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/impl/TopicTransactionBufferRecoverCallBack.html" title="interface in org.apache.pulsar.broker.transaction.buffer.impl">TopicTransactionBufferRecoverCallBack</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i431" class="rowColor">
+<tr id="i430" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/impl/TopicTransactionBufferState.html" title="class in org.apache.pulsar.broker.transaction.buffer.impl">TopicTransactionBufferState</a></td>
 <th class="colLast" scope="row">
 <div class="block">The implement of topic transaction buffer state.</div>
 </th>
 </tr>
-<tr id="i432" class="altColor">
+<tr id="i431" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/impl/TopicTransactionBufferState.State.html" title="enum in org.apache.pulsar.broker.transaction.buffer.impl">TopicTransactionBufferState.State</a></td>
 <th class="colLast" scope="row">
 <div class="block">The state of the topicTransactionBuffer <a href="org/apache/pulsar/broker/transaction/buffer/impl/TopicTransactionBuffer.html" title="class in org.apache.pulsar.broker.transaction.buffer.impl"><code>TopicTransactionBuffer</code></a>.</div>
 </th>
 </tr>
-<tr id="i433" class="rowColor">
+<tr id="i432" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/stats/prometheus/TransactionAggregator.html" title="class in org.apache.pulsar.broker.stats.prometheus">TransactionAggregator</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i434" class="altColor">
+<tr id="i433" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/TransactionBuffer.html" title="interface in org.apache.pulsar.broker.transaction.buffer">TransactionBuffer</a></td>
 <th class="colLast" scope="row">
 <div class="block">A class represent a transaction buffer.</div>
 </th>
 </tr>
-<tr id="i435" class="rowColor">
+<tr id="i434" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/impl/TransactionBufferClientImpl.html" title="class in org.apache.pulsar.broker.transaction.buffer.impl">TransactionBufferClientImpl</a></td>
 <th class="colLast" scope="row">
 <div class="block">The implementation of <code>TransactionBufferClient</code>.</div>
 </th>
 </tr>
-<tr id="i436" class="altColor">
+<tr id="i435" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/impl/TransactionBufferDisable.html" title="class in org.apache.pulsar.broker.transaction.buffer.impl">TransactionBufferDisable</a></td>
 <th class="colLast" scope="row">
 <div class="block">Transaction buffer disable.</div>
 </th>
 </tr>
-<tr id="i437" class="rowColor">
+<tr id="i436" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/exception/buffer/TransactionBufferException.html" title="class in org.apache.pulsar.broker.transaction.exception.buffer">TransactionBufferException</a></td>
 <th class="colLast" scope="row">
 <div class="block">The base exception class for the errors thrown from Transaction Buffer.</div>
 </th>
 </tr>
-<tr id="i438" class="altColor">
+<tr id="i437" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/exception/buffer/TransactionBufferException.EndOfTransactionException.html" title="class in org.apache.pulsar.broker.transaction.exception.buffer">TransactionBufferException.EndOfTransactionException</a></td>
 <th class="colLast" scope="row">
 <div class="block">Exception thrown when reaching end of a transaction.</div>
 </th>
 </tr>
-<tr id="i439" class="rowColor">
+<tr id="i438" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/exception/buffer/TransactionBufferException.TransactionNotFoundException.html" title="class in org.apache.pulsar.broker.transaction.exception.buffer">TransactionBufferException.TransactionNotFoundException</a></td>
 <th class="colLast" scope="row">
 <div class="block">Exception is thrown when the transaction is not found in the transaction buffer.</div>
 </th>
 </tr>
-<tr id="i440" class="altColor">
+<tr id="i439" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/impl/TransactionBufferHandlerImpl.html" title="class in org.apache.pulsar.broker.transaction.buffer.impl">TransactionBufferHandlerImpl</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i441" class="rowColor">
+<tr id="i440" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/TransactionBufferProvider.html" title="interface in org.apache.pulsar.broker.transaction.buffer">TransactionBufferProvider</a></td>
 <th class="colLast" scope="row">
 <div class="block">A provider that provides <a href="org/apache/pulsar/broker/transaction/buffer/TransactionBuffer.html" title="interface in org.apache.pulsar.broker.transaction.buffer"><code>TransactionBuffer</code></a>.</div>
 </th>
 </tr>
-<tr id="i442" class="altColor">
+<tr id="i441" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/TransactionBufferReader.html" title="interface in org.apache.pulsar.broker.transaction.buffer">TransactionBufferReader</a></td>
 <th class="colLast" scope="row">
 <div class="block">A reader to read entries of a given transaction from transaction buffer.</div>
 </th>
 </tr>
-<tr id="i443" class="rowColor">
+<tr id="i442" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/matadata/TransactionBufferSnapshot.html" title="class in org.apache.pulsar.broker.transaction.buffer.matadata">TransactionBufferSnapshot</a></td>
 <th class="colLast" scope="row">
 <div class="block">Transaction buffer snapshot metadata.</div>
 </th>
 </tr>
-<tr id="i444" class="altColor">
+<tr id="i443" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/TransactionBufferSnapshotService.html" title="interface in org.apache.pulsar.broker.service">TransactionBufferSnapshotService</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i445" class="rowColor">
+<tr id="i444" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/systopic/TransactionBufferSystemTopicClient.html" title="class in org.apache.pulsar.broker.systopic">TransactionBufferSystemTopicClient</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i446" class="altColor">
+<tr id="i445" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/exception/coordinator/TransactionCoordinatorException.html" title="class in org.apache.pulsar.broker.transaction.exception.coordinator">TransactionCoordinatorException</a></td>
 <th class="colLast" scope="row">
 <div class="block">The base exception class for the errors thrown from Transaction Coordinator.</div>
 </th>
 </tr>
-<tr id="i447" class="rowColor">
+<tr id="i446" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/exception/coordinator/TransactionCoordinatorException.UnsupportedTxnActionException.html" title="class in org.apache.pulsar.broker.transaction.exception.coordinator">TransactionCoordinatorException.UnsupportedTxnActionException</a></td>
 <th class="colLast" scope="row">
 <div class="block">Exceptions are thrown when txnAction is unsupported.</div>
 </th>
 </tr>
-<tr id="i448" class="altColor">
+<tr id="i447" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/TransactionCursor.html" title="interface in org.apache.pulsar.broker.transaction.buffer">TransactionCursor</a></td>
 <th class="colLast" scope="row">
 <div class="block">The transaction Cursor maintains the index of all transactions.</div>
 </th>
 </tr>
-<tr id="i449" class="rowColor">
+<tr id="i448" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/TransactionEntry.html" title="interface in org.apache.pulsar.broker.transaction.buffer">TransactionEntry</a></td>
 <th class="colLast" scope="row">
 <div class="block">A class represents an entry appended to a transaction.</div>
 </th>
 </tr>
-<tr id="i450" class="altColor">
+<tr id="i449" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/impl/TransactionEntryImpl.html" title="class in org.apache.pulsar.broker.transaction.buffer.impl">TransactionEntryImpl</a></td>
 <th class="colLast" scope="row">
 <div class="block">A simple implementation of <a href="org/apache/pulsar/broker/transaction/buffer/TransactionEntry.html" title="interface in org.apache.pulsar.broker.transaction.buffer"><code>TransactionEntry</code></a>.</div>
 </th>
 </tr>
-<tr id="i451" class="rowColor">
+<tr id="i450" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/exception/TransactionException.html" title="class in org.apache.pulsar.broker.transaction.exception">TransactionException</a></td>
 <th class="colLast" scope="row">
 <div class="block">The base exception class for the errors thrown from Transaction.</div>
 </th>
 </tr>
-<tr id="i452" class="altColor">
+<tr id="i451" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/exception/TransactionException.TransactionNotSealedException.html" title="class in org.apache.pulsar.broker.transaction.exception">TransactionException.TransactionNotSealedException</a></td>
 <th class="colLast" scope="row">
 <div class="block">Exception is thrown when opening a reader on a transaction that is not sealed yet.</div>
 </th>
 </tr>
-<tr id="i453" class="rowColor">
+<tr id="i452" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/exception/TransactionException.TransactionSealedException.html" title="class in org.apache.pulsar.broker.transaction.exception">TransactionException.TransactionSealedException</a></td>
 <th class="colLast" scope="row">
 <div class="block">Exception thrown if a transaction is already sealed.</div>
 </th>
 </tr>
-<tr id="i454" class="altColor">
+<tr id="i453" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/exception/TransactionException.TransactionStatusException.html" title="class in org.apache.pulsar.broker.transaction.exception">TransactionException.TransactionStatusException</a></td>
 <th class="colLast" scope="row">
 <div class="block">Exceptions are thrown when operations are applied to a transaction which is not in expected txn status.</div>
 </th>
 </tr>
-<tr id="i455" class="rowColor">
+<tr id="i454" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/buffer/TransactionMeta.html" title="interface in org.apache.pulsar.broker.transaction.buffer">TransactionMeta</a></td>
 <th class="colLast" scope="row">
 <div class="block">The metadata for the transaction in the transaction buffer.</div>
 </th>
 </tr>
-<tr id="i456" class="altColor">
+<tr id="i455" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/TransactionMetadataStoreService.html" title="class in org.apache.pulsar.broker">TransactionMetadataStoreService</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i457" class="rowColor">
+<tr id="i456" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/exception/pendingack/TransactionPendingAckException.html" title="class in org.apache.pulsar.broker.transaction.exception.pendingack">TransactionPendingAckException</a></td>
 <th class="colLast" scope="row">
 <div class="block">The base exception class for the errors thrown from Transaction Pending ACk.</div>
 </th>
 </tr>
-<tr id="i458" class="altColor">
+<tr id="i457" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/exception/pendingack/TransactionPendingAckException.TransactionPendingAckStoreProviderException.html" title="class in org.apache.pulsar.broker.transaction.exception.pendingack">TransactionPendingAckException.TransactionPendingAckStoreProviderException</a></td>
 <th class="colLast" scope="row">
 <div class="block">Transaction pending ack store provider exception.</div>
 </th>
 </tr>
-<tr id="i459" class="rowColor">
+<tr id="i458" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/pendingack/TransactionPendingAckStoreProvider.html" title="interface in org.apache.pulsar.broker.transaction.pendingack">TransactionPendingAckStoreProvider</a></td>
 <th class="colLast" scope="row">
 <div class="block">Provider of transaction pending ack store.</div>
 </th>
 </tr>
-<tr id="i460" class="altColor">
+<tr id="i459" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/recover/TransactionRecoverTrackerImpl.html" title="class in org.apache.pulsar.broker.transaction.recover">TransactionRecoverTrackerImpl</a></td>
 <th class="colLast" scope="row">
 <div class="block">The transaction recover tracker implementation <code>TransactionRecoverTracker</code>.</div>
 </th>
 </tr>
-<tr id="i461" class="rowColor">
+<tr id="i460" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v3/Transactions.html" title="class in org.apache.pulsar.broker.admin.v3">Transactions</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i462" class="altColor">
+<tr id="i461" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/impl/TransactionsBase.html" title="class in org.apache.pulsar.broker.admin.impl">TransactionsBase</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i463" class="rowColor">
+<tr id="i462" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/timeout/TransactionTimeoutTrackerFactoryImpl.html" title="class in org.apache.pulsar.broker.transaction.timeout">TransactionTimeoutTrackerFactoryImpl</a></td>
 <th class="colLast" scope="row">
 <div class="block">An timeout tracker factory implementation of <code>TransactionTimeoutTrackerFactory</code>.</div>
 </th>
 </tr>
-<tr id="i464" class="altColor">
+<tr id="i463" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/transaction/timeout/TransactionTimeoutTrackerImpl.html" title="class in org.apache.pulsar.broker.transaction.timeout">TransactionTimeoutTrackerImpl</a></td>
 <th class="colLast" scope="row">
 <div class="block">An timer-task implementation of <code>TransactionTimeoutTracker</code>.</div>
 </th>
 </tr>
-<tr id="i465" class="rowColor">
+<tr id="i464" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/service/TransportCnx.html" title="interface in org.apache.pulsar.broker.service">TransportCnx</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i466" class="altColor">
+<tr id="i465" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/compaction/TwoPhaseCompactor.html" title="class in org.apache.pulsar.compaction">TwoPhaseCompactor</a></td>
 <th class="colLast" scope="row">
 <div class="block">Compaction will go through the topic in two passes.</div>
 </th>
 </tr>
-<tr id="i467" class="rowColor">
+<tr id="i466" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/UniformLoadShedder.html" title="class in org.apache.pulsar.broker.loadbalance.impl">UniformLoadShedder</a></td>
 <th class="colLast" scope="row">
 <div class="block">This strategy tends to distribute load uniformly across all brokers.</div>
 </th>
 </tr>
-<tr id="i468" class="altColor">
+<tr id="i467" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/web/WebService.html" title="class in org.apache.pulsar.broker.web">WebService</a></td>
 <th class="colLast" scope="row">
 <div class="block">Web Service embedded into Pulsar.</div>
 </th>
 </tr>
-<tr id="i469" class="rowColor">
+<tr id="i468" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v2/Worker.html" title="class in org.apache.pulsar.broker.admin.v2">Worker</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i470" class="altColor">
+<tr id="i469" class="rowColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/admin/v2/WorkerStats.html" title="class in org.apache.pulsar.broker.admin.v2">WorkerStats</a></td>
 <th class="colLast" scope="row">&nbsp;</th>
 </tr>
-<tr id="i471" class="rowColor">
+<tr id="i470" class="altColor">
 <td class="colFirst"><a href="org/apache/pulsar/broker/loadbalance/impl/WRRPlacementStrategy.html" title="class in org.apache.pulsar.broker.loadbalance.impl">WRRPlacementStrategy</a></td>
 <th class="colLast" scope="row">
 <div class="block">This class implements PlacementStrategy based on Weighted Round Robin Algorithm.</div>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/allclasses.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/allclasses.html
index 487b4d8..ef21106 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/allclasses.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/allclasses.html
@@ -259,7 +259,6 @@
 <li><a href="org/apache/pulsar/broker/service/persistent/PersistentStreamingDispatcherMultipleConsumers.html" title="class in org.apache.pulsar.broker.service.persistent">PersistentStreamingDispatcherMultipleConsumers</a></li>
 <li><a href="org/apache/pulsar/broker/service/persistent/PersistentStreamingDispatcherSingleActiveConsumer.html" title="class in org.apache.pulsar.broker.service.persistent">PersistentStreamingDispatcherSingleActiveConsumer</a></li>
 <li><a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.html" title="class in org.apache.pulsar.broker.service.persistent">PersistentSubscription</a></li>
-<li><a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent">PersistentSubscription.DeleteTransactionMarkerState</a></li>
 <li><a href="org/apache/pulsar/broker/service/persistent/PersistentTopic.html" title="class in org.apache.pulsar.broker.service.persistent">PersistentTopic</a></li>
 <li><a href="org/apache/pulsar/broker/admin/v1/PersistentTopics.html" title="class in org.apache.pulsar.broker.admin.v1">PersistentTopics</a></li>
 <li><a href="org/apache/pulsar/broker/admin/v2/PersistentTopics.html" title="class in org.apache.pulsar.broker.admin.v2">PersistentTopics</a></li>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/index-all.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/index-all.html
index ce45c3e..01822db 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/index-all.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/index-all.html
@@ -2447,7 +2447,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/admin/v2/Namespaces.html#deleteDispatchRate(java.lang.String,java.lang.String)">deleteDispatchRate(String, String)</a></span> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v2">Namespaces</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/admin/impl/BrokersBase.html#deleteDynamicConfiguration(java.lang.String)">deleteDynamicConfiguration(String)</a></span> - Method in class org.apache.pulsar.broker.admin.impl.<a href="org/apache/pulsar/broker/admin/impl/BrokersBase.html" title="class in org.apache.pulsar.broker.admin.impl">BrokersBase</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/admin/impl/BrokersBase.html#deleteDynamicConfiguration(javax.ws.rs.container.AsyncResponse,java.lang.String)">deleteDynamicConfiguration(AsyncResponse, String)</a></span> - Method in class org.apache.pulsar.broker.admin.impl.<a href="org/apache/pulsar/broker/admin/impl/BrokersBase.html" title="class in org.apache.pulsar.broker.admin.impl">BrokersBase</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/persistent/PersistentReplicator.html#deleteFailed(org.apache.bookkeeper.mledger.ManagedLedgerException,java.lang.Object)">deleteFailed(ManagedLedgerException, Object)</a></span> - Method in class org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/persistent/PersistentReplicator.html" title="class in org.apache.pulsar.broker.service.persistent">PersistentReplicator</a></dt>
 <dd>&nbsp;</dd>
@@ -8622,8 +8622,6 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/schema/SchemaRegistryService.html#NO_SCHEMA_VERSION">NO_SCHEMA_VERSION</a></span> - Static variable in interface org.apache.pulsar.broker.service.schema.<a href="org/apache/pulsar/broker/service/schema/SchemaRegistryService.html" title="interface in org.apache.pulsar.broker.service.schema">SchemaRegistryService</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html#None">None</a></span> - org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent">PersistentSubscription.DeleteTransactionMarkerState</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/transaction/buffer/impl/TopicTransactionBufferState.State.html#None">None</a></span> - org.apache.pulsar.broker.transaction.buffer.impl.<a href="org/apache/pulsar/broker/transaction/buffer/impl/TopicTransactionBufferState.State.html" title="enum in org.apache.pulsar.broker.transaction.buffer.impl">TopicTransactionBufferState.State</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/transaction/pendingack/impl/PendingAckHandleState.State.html#None">None</a></span> - org.apache.pulsar.broker.transaction.pendingack.impl.<a href="org/apache/pulsar/broker/transaction/pendingack/impl/PendingAckHandleState.State.html" title="enum in org.apache.pulsar.broker.transaction.pendingack.impl">PendingAckHandleState.State</a></dt>
@@ -9497,8 +9495,6 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.html#%3Cinit%3E(org.apache.pulsar.broker.service.persistent.PersistentTopic,java.lang.String,org.apache.bookkeeper.mledger.ManagedCursor,boolean,java.util.Map)">PersistentSubscription(PersistentTopic, String, ManagedCursor, boolean, Map&lt;String, String&gt;)</a></span> - Constructor for class org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/pe [...]
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent"><span class="typeNameLink">PersistentSubscription.DeleteTransactionMarkerState</span></a> - Enum in <a href="org/apache/pulsar/broker/service/persistent/package-summary.html">org.apache.pulsar.broker.service.persistent</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/service/persistent/PersistentTopic.html" title="class in org.apache.pulsar.broker.service.persistent"><span class="typeNameLink">PersistentTopic</span></a> - Class in <a href="org/apache/pulsar/broker/service/persistent/package-summary.html">org.apache.pulsar.broker.service.persistent</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/persistent/PersistentTopic.html#%3Cinit%3E(java.lang.String,org.apache.bookkeeper.mledger.ManagedLedger,org.apache.pulsar.broker.service.BrokerService)">PersistentTopic(String, ManagedLedger, BrokerService)</a></span> - Constructor for class org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/persistent/PersistentTopic.html" title="class in org.apache.pulsar.broker.service.persist [...]
@@ -9551,8 +9547,6 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.html#preValidation(boolean)">preValidation(boolean)</a></span> - Method in class org.apache.pulsar.broker.admin.impl.<a href="org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.html" title="class in org.apache.pulsar.broker.admin.impl">PersistentTopicsBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html#Process">Process</a></span> - org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent">PersistentSubscription.DeleteTransactionMarkerState</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/web/ProcessHandlerFilter.html" title="class in org.apache.pulsar.broker.web"><span class="typeNameLink">ProcessHandlerFilter</span></a> - Class in <a href="org/apache/pulsar/broker/web/package-summary.html">org.apache.pulsar.broker.web</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/web/ProcessHandlerFilter.html#%3Cinit%3E(org.apache.pulsar.broker.PulsarService)">ProcessHandlerFilter(PulsarService)</a></span> - Constructor for class org.apache.pulsar.broker.web.<a href="org/apache/pulsar/broker/web/ProcessHandlerFilter.html" title="class in org.apache.pulsar.broker.web">ProcessHandlerFilter</a></dt>
@@ -13322,10 +13316,6 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
 <dd>
 <div class="block">Returns the enum constant of this type with the specified name.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html#valueOf(java.lang.String)">valueOf(String)</a></span> - Static method in enum org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent">PersistentSubscription.DeleteTransactionMarkerState</a></dt>
-<dd>
-<div class="block">Returns the enum constant of this type with the specified name.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/plugin/EntryFilter.FilterResult.html#valueOf(java.lang.String)">valueOf(String)</a></span> - Static method in enum org.apache.pulsar.broker.service.plugin.<a href="org/apache/pulsar/broker/service/plugin/EntryFilter.FilterResult.html" title="enum in org.apache.pulsar.broker.service.plugin">EntryFilter.FilterResult</a></dt>
 <dd>
 <div class="block">Returns the enum constant of this type with the specified name.</div>
@@ -13406,11 +13396,6 @@ the order they are declared.</div>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html#values()">values()</a></span> - Static method in enum org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent">PersistentSubscription.DeleteTransactionMarkerState</a></dt>
-<dd>
-<div class="block">Returns an array containing the constants of this enum type, in
-the order they are declared.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/plugin/EntryFilter.FilterResult.html#values()">values()</a></span> - Static method in enum org.apache.pulsar.broker.service.plugin.<a href="org/apache/pulsar/broker/service/plugin/EntryFilter.FilterResult.html" title="enum in org.apache.pulsar.broker.service.plugin">EntryFilter.FilterResult</a></dt>
 <dd>
 <div class="block">Returns an array containing the constants of this enum type, in
@@ -13458,8 +13443,6 @@ the order they are declared.</div>
 </a>
 <h2 class="title">W</h2>
 <dl>
-<dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html#Wait">Wait</a></span> - org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent">PersistentSubscription.DeleteTransactionMarkerState</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/broker/PulsarService.html#waitUntilClosed()">waitUntilClosed()</a></span> - Method in class org.apache.pulsar.broker.<a href="org/apache/pulsar/broker/PulsarService.html" title="class in org.apache.pulsar.broker">PulsarService</a></dt>
 <dd>
 <div class="block">Block until the service is finally closed.</div>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/member-search-index.js b/content/api/pulsar-broker/2.10.0-SNAPSHOT/member-search-index.js
index 4e0c8fa..b8ad9aa 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/member-search-index.js
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.pulsar.broker.transaction.pendingack.proto","c":"PendingAckOp","l":"ABORT"},{"p":"org.apache.pulsar.broker.transaction.pendingack.proto","c":"PendingAckOp","l":"ABORT_VALUE"},{"p":"org.apache.pulsar.broker.stats.prometheus","c":"AggregatedTransactionCoordinatorStats","l":"abortedCount"},{"p":"org.apache.pulsar.broker.transaction.buffer","c":"TransactionMeta","l":"abortTxn()"},{"p":"org.apache.pulsar.broker.transaction.pendingack","c":"PendingAckHandl [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.pulsar.broker.transaction.pendingack.proto","c":"PendingAckOp","l":"ABORT"},{"p":"org.apache.pulsar.broker.transaction.pendingack.proto","c":"PendingAckOp","l":"ABORT_VALUE"},{"p":"org.apache.pulsar.broker.stats.prometheus","c":"AggregatedTransactionCoordinatorStats","l":"abortedCount"},{"p":"org.apache.pulsar.broker.transaction.buffer","c":"TransactionMeta","l":"abortTxn()"},{"p":"org.apache.pulsar.broker.transaction.pendingack","c":"PendingAckHandl [...]
\ No newline at end of file
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/member-search-index.zip b/content/api/pulsar-broker/2.10.0-SNAPSHOT/member-search-index.zip
index 0cd97ac..2077c0d 100644
Binary files a/content/api/pulsar-broker/2.10.0-SNAPSHOT/member-search-index.zip and b/content/api/pulsar-broker/2.10.0-SNAPSHOT/member-search-index.zip differ
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokersBase.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokersBase.html
index d1f747a..a96ed33 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokersBase.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokersBase.html
@@ -233,7 +233,8 @@ extends <a href="../AdminResource.html" title="class in org.apache.pulsar.broker
 </tr>
 <tr id="i1" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deleteDynamicConfiguration(java.lang.String)">deleteDynamicConfiguration</a></span>&#8203;(java.lang.String&nbsp;configName)</code></th>
+<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deleteDynamicConfiguration(javax.ws.rs.container.AsyncResponse,java.lang.String)">deleteDynamicConfiguration</a></span>&#8203;(javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse,
+                          java.lang.String&nbsp;configName)</code></th>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr id="i2" class="altColor">
@@ -437,7 +438,7 @@ public&nbsp;void&nbsp;updateDynamicConfiguration&#8203;(@Suspended
                                        java.lang.String&nbsp;configValue)</pre>
 </li>
 </ul>
-<a id="deleteDynamicConfiguration(java.lang.String)">
+<a id="deleteDynamicConfiguration(javax.ws.rs.container.AsyncResponse,java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
@@ -445,13 +446,10 @@ public&nbsp;void&nbsp;updateDynamicConfiguration&#8203;(@Suspended
 <h4>deleteDynamicConfiguration</h4>
 <pre class="methodSignature">@DELETE
 @Path("/configuration/{configName}")
-public&nbsp;void&nbsp;deleteDynamicConfiguration&#8203;(@PathParam("configName")
-                                       java.lang.String&nbsp;configName)
-                                throws java.lang.Exception</pre>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>java.lang.Exception</code></dd>
-</dl>
+public&nbsp;void&nbsp;deleteDynamicConfiguration&#8203;(@Suspended
+                                       javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse,
+                                       @PathParam("configName")
+                                       java.lang.String&nbsp;configName)</pre>
 </li>
 </ul>
 <a id="getAllDynamicConfigurations()">
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Brokers.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Brokers.html
index 2f2fcfb..340cc36 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Brokers.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Brokers.html
@@ -214,7 +214,7 @@ extends <a href="../impl/BrokersBase.html" title="class in org.apache.pulsar.bro
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.impl.<a href="../impl/BrokersBase.html" title="class in org.apache.pulsar.broker.admin.impl">BrokersBase</a></h3>
-<code><a href="../impl/BrokersBase.html#backlogQuotaCheck(javax.ws.rs.container.AsyncResponse)">backlogQuotaCheck</a>, <a href="../impl/BrokersBase.html#deleteDynamicConfiguration(java.lang.String)">deleteDynamicConfiguration</a>, <a href="../impl/BrokersBase.html#getActiveBrokers(javax.ws.rs.container.AsyncResponse,java.lang.String)">getActiveBrokers</a>, <a href="../impl/BrokersBase.html#getAllDynamicConfigurations()">getAllDynamicConfigurations</a>, <a href="../impl/BrokersBase.html#g [...]
+<code><a href="../impl/BrokersBase.html#backlogQuotaCheck(javax.ws.rs.container.AsyncResponse)">backlogQuotaCheck</a>, <a href="../impl/BrokersBase.html#deleteDynamicConfiguration(javax.ws.rs.container.AsyncResponse,java.lang.String)">deleteDynamicConfiguration</a>, <a href="../impl/BrokersBase.html#getActiveBrokers(javax.ws.rs.container.AsyncResponse,java.lang.String)">getActiveBrokers</a>, <a href="../impl/BrokersBase.html#getAllDynamicConfigurations()">getAllDynamicConfigurations</a>, [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a id="methods.inherited.from.class.org.apache.pulsar.broker.admin.AdminResource">
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Brokers.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Brokers.html
index 75a2155..1d7c9c9 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Brokers.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Brokers.html
@@ -214,7 +214,7 @@ extends <a href="../impl/BrokersBase.html" title="class in org.apache.pulsar.bro
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.impl.<a href="../impl/BrokersBase.html" title="class in org.apache.pulsar.broker.admin.impl">BrokersBase</a></h3>
-<code><a href="../impl/BrokersBase.html#backlogQuotaCheck(javax.ws.rs.container.AsyncResponse)">backlogQuotaCheck</a>, <a href="../impl/BrokersBase.html#deleteDynamicConfiguration(java.lang.String)">deleteDynamicConfiguration</a>, <a href="../impl/BrokersBase.html#getActiveBrokers(javax.ws.rs.container.AsyncResponse,java.lang.String)">getActiveBrokers</a>, <a href="../impl/BrokersBase.html#getAllDynamicConfigurations()">getAllDynamicConfigurations</a>, <a href="../impl/BrokersBase.html#g [...]
+<code><a href="../impl/BrokersBase.html#backlogQuotaCheck(javax.ws.rs.container.AsyncResponse)">backlogQuotaCheck</a>, <a href="../impl/BrokersBase.html#deleteDynamicConfiguration(javax.ws.rs.container.AsyncResponse,java.lang.String)">deleteDynamicConfiguration</a>, <a href="../impl/BrokersBase.html#getActiveBrokers(javax.ws.rs.container.AsyncResponse,java.lang.String)">getActiveBrokers</a>, <a href="../impl/BrokersBase.html#getAllDynamicConfigurations()">getAllDynamicConfigurations</a>, [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a id="methods.inherited.from.class.org.apache.pulsar.broker.admin.AdminResource">
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/CompactorSubscription.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/CompactorSubscription.html
index 3160f16..c8d67cc 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/CompactorSubscription.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/CompactorSubscription.html
@@ -88,7 +88,7 @@ loadScripts(document, 'script');</script>
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
@@ -148,23 +148,6 @@ extends <a href="PersistentSubscription.html" title="class in org.apache.pulsar.
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<section role="region">
-<ul class="blockList">
-<li class="blockList"><a id="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<ul class="blockList">
-<li class="blockList"><a id="nested.classes.inherited.from.class.org.apache.pulsar.broker.service.persistent.PersistentSubscription">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.pulsar.broker.service.persistent.<a href="PersistentSubscription.html" title="class in org.apache.pulsar.broker.service.persistent">PersistentSubscription</a></h3>
-<code><a href="PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent">PersistentSubscription.DeleteTransactionMarkerState</a></code></li>
-</ul>
-</li>
-</ul>
-</section>
 <!-- =========== FIELD SUMMARY =========== -->
 <section role="region">
 <ul class="blockList">
@@ -356,7 +339,7 @@ extends <a href="PersistentSubscription.html" title="class in org.apache.pulsar.
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/PersistentSubscription.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/PersistentSubscription.html
index 8891a99..a8bcae2 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/PersistentSubscription.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/PersistentSubscription.html
@@ -88,7 +88,7 @@ loadScripts(document, 'script');</script>
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
@@ -148,29 +148,6 @@ implements <a href="../Subscription.html" title="interface in org.apache.pulsar.
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<section role="region">
-<ul class="blockList">
-<li class="blockList"><a id="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<table class="memberSummary">
-<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colSecond" scope="col">Class</th>
-<th class="colLast" scope="col">Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static class&nbsp;</code></td>
-<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent">PersistentSubscription.DeleteTransactionMarkerState</a></span></code></th>
-<td class="colLast">&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-</section>
 <!-- =========== FIELD SUMMARY =========== -->
 <section role="region">
 <ul class="blockList">
@@ -1418,7 +1395,7 @@ implements <a href="../Subscription.html" title="interface in org.apache.pulsar.
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-summary.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-summary.html
index 3c7ca00..5a814a1 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-summary.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-summary.html
@@ -240,10 +240,6 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
 <th class="colFirst" scope="row"><a href="PersistentDispatcherMultipleConsumers.ReadType.html" title="enum in org.apache.pulsar.broker.service.persistent">PersistentDispatcherMultipleConsumers.ReadType</a></th>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<th class="colFirst" scope="row"><a href="PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent">PersistentSubscription.DeleteTransactionMarkerState</a></th>
-<td class="colLast">&nbsp;</td>
-</tr>
 </tbody>
 </table>
 </li>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-tree.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-tree.html
index 91cdb2e..1ee20ac 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-tree.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-tree.html
@@ -184,7 +184,6 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
 <li class="circle">org.apache.pulsar.broker.service.persistent.<a href="DispatchRateLimiter.Type.html" title="enum in org.apache.pulsar.broker.service.persistent"><span class="typeNameLink">DispatchRateLimiter.Type</span></a></li>
 <li class="circle">org.apache.pulsar.broker.service.persistent.<a href="MessageDeduplication.MessageDupStatus.html" title="enum in org.apache.pulsar.broker.service.persistent"><span class="typeNameLink">MessageDeduplication.MessageDupStatus</span></a></li>
 <li class="circle">org.apache.pulsar.broker.service.persistent.<a href="PersistentDispatcherMultipleConsumers.ReadType.html" title="enum in org.apache.pulsar.broker.service.persistent"><span class="typeNameLink">PersistentDispatcherMultipleConsumers.ReadType</span></a></li>
-<li class="circle">org.apache.pulsar.broker.service.persistent.<a href="PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent"><span class="typeNameLink">PersistentSubscription.DeleteTransactionMarkerState</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-use.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-use.html
index afd8288..984be03 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-use.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/org/apache/pulsar/broker/service/persistent/package-use.html
@@ -242,24 +242,20 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<th class="colFirst" scope="row"><a href="class-use/PersistentSubscription.DeleteTransactionMarkerState.html#org.apache.pulsar.broker.service.persistent">PersistentSubscription.DeleteTransactionMarkerState</a></th>
-<td class="colLast">&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <th class="colFirst" scope="row"><a href="class-use/PersistentTopic.html#org.apache.pulsar.broker.service.persistent">PersistentTopic</a></th>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <th class="colFirst" scope="row"><a href="class-use/ReplicatedSubscriptionsController.html#org.apache.pulsar.broker.service.persistent">ReplicatedSubscriptionsController</a></th>
 <td class="colLast">
 <div class="block">Encapsulate all the logic of replicated subscriptions tracking for a given topic.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <th class="colFirst" scope="row"><a href="class-use/SubscribeRateLimiter.html#org.apache.pulsar.broker.service.persistent">SubscribeRateLimiter</a></th>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <th class="colFirst" scope="row"><a href="class-use/SubscribeRateLimiter.ConsumerIdentifier.html#org.apache.pulsar.broker.service.persistent">SubscribeRateLimiter.ConsumerIdentifier</a></th>
 <td class="colLast">&nbsp;</td>
 </tr>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/overview-summary.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/overview-summary.html
index de95b59..8ddfbe7 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/overview-summary.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/overview-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (11.0.11) on Tue Feb 08 18:36:42 UTC 2022 -->
+<!-- Generated by javadoc (11.0.11) on Thu Feb 10 00:15:50 UTC 2022 -->
 <title>Pulsar Broker 2.10.0-SNAPSHOT API</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <script type="text/javascript">window.location.replace('index.html')</script>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/overview-tree.html b/content/api/pulsar-broker/2.10.0-SNAPSHOT/overview-tree.html
index d161e1d..4523b7d 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/overview-tree.html
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/overview-tree.html
@@ -953,7 +953,6 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
 <li class="circle">org.apache.pulsar.broker.transaction.pendingack.impl.<a href="org/apache/pulsar/broker/transaction/pendingack/impl/PendingAckHandleState.State.html" title="enum in org.apache.pulsar.broker.transaction.pendingack.impl"><span class="typeNameLink">PendingAckHandleState.State</span></a></li>
 <li class="circle">org.apache.pulsar.broker.transaction.pendingack.proto.<a href="org/apache/pulsar/broker/transaction/pendingack/proto/PendingAckOp.html" title="enum in org.apache.pulsar.broker.transaction.pendingack.proto"><span class="typeNameLink">PendingAckOp</span></a></li>
 <li class="circle">org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.ReadType.html" title="enum in org.apache.pulsar.broker.service.persistent"><span class="typeNameLink">PersistentDispatcherMultipleConsumers.ReadType</span></a></li>
-<li class="circle">org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/persistent/PersistentSubscription.DeleteTransactionMarkerState.html" title="enum in org.apache.pulsar.broker.service.persistent"><span class="typeNameLink">PersistentSubscription.DeleteTransactionMarkerState</span></a></li>
 <li class="circle">org.apache.pulsar.broker.<a href="org/apache/pulsar/broker/PulsarService.State.html" title="enum in org.apache.pulsar.broker"><span class="typeNameLink">PulsarService.State</span></a></li>
 <li class="circle">org.apache.pulsar.broker.resourcegroup.<a href="org/apache/pulsar/broker/resourcegroup/ResourceGroup.ResourceGroupMonitoringClass.html" title="enum in org.apache.pulsar.broker.resourcegroup"><span class="typeNameLink">ResourceGroup.ResourceGroupMonitoringClass</span></a></li>
 <li class="circle">org.apache.pulsar.broker.resourcegroup.<a href="org/apache/pulsar/broker/resourcegroup/ResourceGroup.ResourceGroupRefTypes.html" title="enum in org.apache.pulsar.broker.resourcegroup"><span class="typeNameLink">ResourceGroup.ResourceGroupRefTypes</span></a></li>
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/package-search-index.zip b/content/api/pulsar-broker/2.10.0-SNAPSHOT/package-search-index.zip
index 6c85be6..28ff06a 100644
Binary files a/content/api/pulsar-broker/2.10.0-SNAPSHOT/package-search-index.zip and b/content/api/pulsar-broker/2.10.0-SNAPSHOT/package-search-index.zip differ
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/type-search-index.js b/content/api/pulsar-broker/2.10.0-SNAPSHOT/type-search-index.js
index fad99fc..b5cc8d0 100644
--- a/content/api/pulsar-broker/2.10.0-SNAPSHOT/type-search-index.js
+++ b/content/api/pulsar-broker/2.10.0-SNAPSHOT/type-search-index.js
@@ -1 +1 @@
-typeSearchIndex = [{"p":"org.apache.pulsar.broker.transaction.buffer.matadata","l":"AbortTxnMetadata"},{"p":"org.apache.pulsar.broker.service","l":"AbstractBaseDispatcher"},{"p":"org.apache.pulsar.broker.service","l":"AbstractDispatcherMultipleConsumers"},{"p":"org.apache.pulsar.broker.service","l":"AbstractDispatcherSingleActiveConsumer"},{"p":"org.apache.pulsar.broker.service","l":"AbstractReplicator"},{"p":"org.apache.pulsar.broker.service","l":"AbstractTopic"},{"p":"org.apache.pulsar [...]
\ No newline at end of file
+typeSearchIndex = [{"p":"org.apache.pulsar.broker.transaction.buffer.matadata","l":"AbortTxnMetadata"},{"p":"org.apache.pulsar.broker.service","l":"AbstractBaseDispatcher"},{"p":"org.apache.pulsar.broker.service","l":"AbstractDispatcherMultipleConsumers"},{"p":"org.apache.pulsar.broker.service","l":"AbstractDispatcherSingleActiveConsumer"},{"p":"org.apache.pulsar.broker.service","l":"AbstractReplicator"},{"p":"org.apache.pulsar.broker.service","l":"AbstractTopic"},{"p":"org.apache.pulsar [...]
\ No newline at end of file
diff --git a/content/api/pulsar-broker/2.10.0-SNAPSHOT/type-search-index.zip b/content/api/pulsar-broker/2.10.0-SNAPSHOT/type-search-index.zip
index 1165e63..309b35a 100644
Binary files a/content/api/pulsar-broker/2.10.0-SNAPSHOT/type-search-index.zip and b/content/api/pulsar-broker/2.10.0-SNAPSHOT/type-search-index.zip differ
diff --git a/content/api/pulsar-functions/2.10.0-SNAPSHOT/member-search-index.zip b/content/api/pulsar-functions/2.10.0-SNAPSHOT/member-search-index.zip
index b28974a..599c9a0 100644
Binary files a/content/api/pulsar-functions/2.10.0-SNAPSHOT/member-search-index.zip and b/content/api/pulsar-functions/2.10.0-SNAPSHOT/member-search-index.zip differ
diff --git a/content/api/pulsar-functions/2.10.0-SNAPSHOT/overview-summary.html b/content/api/pulsar-functions/2.10.0-SNAPSHOT/overview-summary.html
index ec5f801..0d33f81e 100644
--- a/content/api/pulsar-functions/2.10.0-SNAPSHOT/overview-summary.html
+++ b/content/api/pulsar-functions/2.10.0-SNAPSHOT/overview-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (11.0.11) on Tue Feb 08 18:36:30 UTC 2022 -->
+<!-- Generated by javadoc (11.0.11) on Thu Feb 10 00:15:36 UTC 2022 -->
 <title>Pulsar Functions :: API 2.10.0-SNAPSHOT API</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <script type="text/javascript">window.location.replace('index.html')</script>
diff --git a/content/api/pulsar-functions/2.10.0-SNAPSHOT/package-search-index.zip b/content/api/pulsar-functions/2.10.0-SNAPSHOT/package-search-index.zip
index 72eb7fc..b434839 100644
Binary files a/content/api/pulsar-functions/2.10.0-SNAPSHOT/package-search-index.zip and b/content/api/pulsar-functions/2.10.0-SNAPSHOT/package-search-index.zip differ
diff --git a/content/api/pulsar-functions/2.10.0-SNAPSHOT/type-search-index.zip b/content/api/pulsar-functions/2.10.0-SNAPSHOT/type-search-index.zip
index 7b4d331..66ecbcf 100644
Binary files a/content/api/pulsar-functions/2.10.0-SNAPSHOT/type-search-index.zip and b/content/api/pulsar-functions/2.10.0-SNAPSHOT/type-search-index.zip differ
diff --git a/content/api/python/2.10.0-SNAPSHOT/index.html b/content/api/python/2.10.0-SNAPSHOT/index.html
index bce7487..db48ccd 100644
--- a/content/api/python/2.10.0-SNAPSHOT/index.html
+++ b/content/api/python/2.10.0-SNAPSHOT/index.html
@@ -3787,7 +3787,7 @@ producers and consumers.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_producer">
-    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f4dd2611e50&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
+    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f88e6824e50&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
     </div>
     
 
@@ -4041,7 +4041,7 @@ batched into single batch message:
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_reader">
-    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f4dcab86350&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
+    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f88ded98350&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
     </div>
     
 
@@ -4258,7 +4258,7 @@ for ongoing operations to complete.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.subscribe">
-    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f4dcab86290&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
+    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f88ded98290&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
     </div>
     
 
diff --git a/content/api/python/index.html b/content/api/python/index.html
index bce7487..db48ccd 100644
--- a/content/api/python/index.html
+++ b/content/api/python/index.html
@@ -3787,7 +3787,7 @@ producers and consumers.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_producer">
-    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f4dd2611e50&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
+    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f88e6824e50&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
     </div>
     
 
@@ -4041,7 +4041,7 @@ batched into single batch message:
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_reader">
-    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f4dcab86350&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
+    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f88ded98350&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
     </div>
     
 
@@ -4258,7 +4258,7 @@ for ongoing operations to complete.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.subscribe">
-    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f4dcab86290&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
+    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f88ded98290&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
     </div>
     
 
diff --git a/content/docs/en/next/client-libraries-dotnet.html b/content/docs/en/next/client-libraries-dotnet.html
index a501a6b..eed12186 100644
--- a/content/docs/en/next/client-libraries-dotnet.html
+++ b/content/docs/en/next/client-libraries-dotnet.html
@@ -243,10 +243,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>Messages can be acknowledged individually or cumulatively. For details about message acknowledgement, see <a href="/docs/en/next/concepts-messaging#acknowledgement">acknowledgement</a>.</p>
 <ul>
 <li><p>Acknowledge messages individually.</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>Acknowledge messages cumulatively.</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/en/next/client-libraries-dotnet/index.html b/content/docs/en/next/client-libraries-dotnet/index.html
index a501a6b..eed12186 100644
--- a/content/docs/en/next/client-libraries-dotnet/index.html
+++ b/content/docs/en/next/client-libraries-dotnet/index.html
@@ -243,10 +243,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>Messages can be acknowledged individually or cumulatively. For details about message acknowledgement, see <a href="/docs/en/next/concepts-messaging#acknowledgement">acknowledgement</a>.</p>
 <ul>
 <li><p>Acknowledge messages individually.</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>Acknowledge messages cumulatively.</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/en/next/develop-binary-protocol.html b/content/docs/en/next/develop-binary-protocol.html
index 1598d16..d01adbd 100644
--- a/content/docs/en/next/develop-binary-protocol.html
+++ b/content/docs/en/next/develop-binary-protocol.html
@@ -283,9 +283,10 @@ specified by the client, if any.</li>
 </ul>
 <h5><a class="anchor" aria-hidden="true" id="command-send"></a><a href="#command-send" 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. [...]
 <p>Command <code>Send</code> is used to publish a new message within the context of an
-already existing producer. This command is used in a frame that includes command
-as well as message payload, for which the complete format is specified in the
-<a href="#payload-commands">payload commands</a> section.</p>
+already existing producer. If a producer has not yet been created for the
+connection, the broker will terminate the connection. This command is used
+in a frame that includes command as well as message payload, for which the
+complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/en/next/develop-binary-protocol/index.html b/content/docs/en/next/develop-binary-protocol/index.html
index 1598d16..d01adbd 100644
--- a/content/docs/en/next/develop-binary-protocol/index.html
+++ b/content/docs/en/next/develop-binary-protocol/index.html
@@ -283,9 +283,10 @@ specified by the client, if any.</li>
 </ul>
 <h5><a class="anchor" aria-hidden="true" id="command-send"></a><a href="#command-send" 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. [...]
 <p>Command <code>Send</code> is used to publish a new message within the context of an
-already existing producer. This command is used in a frame that includes command
-as well as message payload, for which the complete format is specified in the
-<a href="#payload-commands">payload commands</a> section.</p>
+already existing producer. If a producer has not yet been created for the
+connection, the broker will terminate the connection. This command is used
+in a frame that includes command as well as message payload, for which the
+complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/fr/next/administration-proxy.html b/content/docs/fr/next/administration-proxy.html
index 689dfc9..d4788a0 100644
--- a/content/docs/fr/next/administration-proxy.html
+++ b/content/docs/fr/next/administration-proxy.html
@@ -98,8 +98,8 @@
 <p>Note that if you do not use functions, you do not need to configure <code>functionWorkerWebServiceURL</code>.</p>
 <h3><a class="anchor" aria-hidden="true" id="use-service-discovery"></a><a href="#use-service-discovery" 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>Pulsar uses <a href="https://zookeeper.apache.org">ZooKeeper</a> for service discovery. To connect the proxy to ZooKeeper, specify the following in <code>conf/proxy.conf</code>.</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk-0,zk-1,zk-2</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk-0:2184,zk-remote:2184</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2181,my-zk-1:2181,my-zk-2:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2184,my-zk-remote:2184</span>
 </code></pre>
 <blockquote>
 <p>To use service discovery, you need to open the network ACLs, so the proxy can connects to the ZooKeeper nodes through the ZooKeeper client port (port <code>2181</code>) and the configuration store client port (port <code>2184</code>).</p>
diff --git a/content/docs/fr/next/administration-proxy/index.html b/content/docs/fr/next/administration-proxy/index.html
index 689dfc9..d4788a0 100644
--- a/content/docs/fr/next/administration-proxy/index.html
+++ b/content/docs/fr/next/administration-proxy/index.html
@@ -98,8 +98,8 @@
 <p>Note that if you do not use functions, you do not need to configure <code>functionWorkerWebServiceURL</code>.</p>
 <h3><a class="anchor" aria-hidden="true" id="use-service-discovery"></a><a href="#use-service-discovery" 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>Pulsar uses <a href="https://zookeeper.apache.org">ZooKeeper</a> for service discovery. To connect the proxy to ZooKeeper, specify the following in <code>conf/proxy.conf</code>.</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk-0,zk-1,zk-2</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk-0:2184,zk-remote:2184</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2181,my-zk-1:2181,my-zk-2:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2184,my-zk-remote:2184</span>
 </code></pre>
 <blockquote>
 <p>To use service discovery, you need to open the network ACLs, so the proxy can connects to the ZooKeeper nodes through the ZooKeeper client port (port <code>2181</code>) and the configuration store client port (port <code>2184</code>).</p>
diff --git a/content/docs/fr/next/client-libraries-cpp.html b/content/docs/fr/next/client-libraries-cpp.html
index 88e6e50..939ab17 100644
--- a/content/docs/fr/next/client-libraries-cpp.html
+++ b/content/docs/fr/next/client-libraries-cpp.html
@@ -315,90 +315,6 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <p>If you use TLS authentication, you need to add <code>ssl</code>, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
-<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
-<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
-<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    Message msg;
-    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
-    <span class="hljs-comment">// consume 100 messages</span>
-    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
-        consumer.receive(msg);
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
-            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-        consumer.acknowledge(msg);
-        ctr++;
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-}
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-    messagesReceived++;
-    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
-}
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setMessageListener(listener);
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
-    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
-        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="create-a-producer"></a><a href="#create-a-producer" 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- [...]
 <p>To use Pulsar as a producer, you need to create a producer on the C++ client. There are two main ways of using a producer: - <a href="#simple-blocking-example">Blocking style</a> : each call to <code>send</code> waits for an ack from the broker. - <a href="#non-blocking-example">Non-blocking asynchronous style</a> : <code>sendAsync</code> is called instead of <code>send</code> and a callback is supplied for when the ack is received from the broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="simple-blocking-example"></a><a href="#simple-blocking-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 [...]
@@ -502,6 +418,111 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 producerConf.setPartitionsRoutingMode(ProducerConfiguration::UseSinglePartition);
 producerConf.setLazyStartPartitionedProducers(<span class="hljs-literal">true</span>);
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" 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  [...]
+<p>Message <a href="/docs/fr/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<pre><code class="hljs css language-c++">ProducerConfiguration conf;
+conf.setBatchingEnabled(<span class="hljs-literal">false</span>);
+conf.setChunkingEnabled(<span class="hljs-literal">true</span>);
+Producer producer;
+client.createProducer(<span class="hljs-string">"my-topic"</span>, conf, producer);
+</code></pre>
+<blockquote>
+<p><strong>Note:</strong> To enable chunking, you need to disable batching (<code>setBatchingEnabled</code>=<code>false</code>) concurrently.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
+<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
+<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
+<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    Message msg;
+    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
+    <span class="hljs-comment">// consume 100 messages</span>
+    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
+        consumer.receive(msg);
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
+            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+        consumer.acknowledge(msg);
+        ctr++;
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+}
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+    messagesReceived++;
+    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
+}
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setMessageListener(listener);
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
+    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
+        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="configure-chunking"></a><a href="#configure-chunking" 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- [...]
+<p>You can limit the maximum number of chunked messages a consumer maintains concurrently by configuring the <code>setMaxPendingChunkedMessage</code> and <code>setAutoAckOldestChunkedMessageOnQueueFull</code> parameters. When the threshold is reached, the consumer drops pending messages by silently acknowledging them or asking the broker to redeliver them later.</p>
+<p>The following is an example of how to configure message chunking.</p>
+<pre><code class="hljs css language-c++">ConsumerConfiguration conf;
+conf.setAutoAckOldestChunkedMessageOnQueueFull(<span class="hljs-literal">true</span>);
+conf.setMaxPendingChunkedMessage(<span class="hljs-number">100</span>);
+Consumer consumer;
+client.subscribe(<span class="hljs-string">"my-topic"</span>, <span class="hljs-string">"my-sub"</span>, conf, consumer);
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="enable-authentication-in-connection-urls"></a><a href="#enable-authentication-in-connection-urls" 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  [...]
 <p>If you use TLS authentication when connecting to Pulsar, you need to add <code>ssl</code> in the connection URLs, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-cpp">ClientConfiguration config = ClientConfiguration();
@@ -555,7 +576,7 @@ client.subscribe(<span class="hljs-string">"topic-avro"</span>, <span class="hlj
 ​
 4. Create a consumer to receive a `User` instance.
 ​c++ ConsumerConfiguration consumerConf; consumerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); consumerConf.setSubscriptionInitialPosition(InitialPositionEarliest); Consumer consumer; client.subscribe(&quot;topic-protobuf&quot;, &quot;my-sub&quot;, consumerConf, consumer); Message msg; consumer.receive(msg); User user2; user2.ParseFromArray(msg.getData(), msg.getLength()); ```</code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/fr/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System requir [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/fr/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System requir [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/client-libraries-cpp/index.html b/content/docs/fr/next/client-libraries-cpp/index.html
index 88e6e50..939ab17 100644
--- a/content/docs/fr/next/client-libraries-cpp/index.html
+++ b/content/docs/fr/next/client-libraries-cpp/index.html
@@ -315,90 +315,6 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <p>If you use TLS authentication, you need to add <code>ssl</code>, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
-<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
-<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
-<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    Message msg;
-    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
-    <span class="hljs-comment">// consume 100 messages</span>
-    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
-        consumer.receive(msg);
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
-            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-        consumer.acknowledge(msg);
-        ctr++;
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-}
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-    messagesReceived++;
-    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
-}
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setMessageListener(listener);
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
-    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
-        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="create-a-producer"></a><a href="#create-a-producer" 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- [...]
 <p>To use Pulsar as a producer, you need to create a producer on the C++ client. There are two main ways of using a producer: - <a href="#simple-blocking-example">Blocking style</a> : each call to <code>send</code> waits for an ack from the broker. - <a href="#non-blocking-example">Non-blocking asynchronous style</a> : <code>sendAsync</code> is called instead of <code>send</code> and a callback is supplied for when the ack is received from the broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="simple-blocking-example"></a><a href="#simple-blocking-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 [...]
@@ -502,6 +418,111 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 producerConf.setPartitionsRoutingMode(ProducerConfiguration::UseSinglePartition);
 producerConf.setLazyStartPartitionedProducers(<span class="hljs-literal">true</span>);
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" 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  [...]
+<p>Message <a href="/docs/fr/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<pre><code class="hljs css language-c++">ProducerConfiguration conf;
+conf.setBatchingEnabled(<span class="hljs-literal">false</span>);
+conf.setChunkingEnabled(<span class="hljs-literal">true</span>);
+Producer producer;
+client.createProducer(<span class="hljs-string">"my-topic"</span>, conf, producer);
+</code></pre>
+<blockquote>
+<p><strong>Note:</strong> To enable chunking, you need to disable batching (<code>setBatchingEnabled</code>=<code>false</code>) concurrently.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
+<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
+<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
+<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    Message msg;
+    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
+    <span class="hljs-comment">// consume 100 messages</span>
+    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
+        consumer.receive(msg);
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
+            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+        consumer.acknowledge(msg);
+        ctr++;
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+}
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+    messagesReceived++;
+    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
+}
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setMessageListener(listener);
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
+    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
+        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="configure-chunking"></a><a href="#configure-chunking" 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- [...]
+<p>You can limit the maximum number of chunked messages a consumer maintains concurrently by configuring the <code>setMaxPendingChunkedMessage</code> and <code>setAutoAckOldestChunkedMessageOnQueueFull</code> parameters. When the threshold is reached, the consumer drops pending messages by silently acknowledging them or asking the broker to redeliver them later.</p>
+<p>The following is an example of how to configure message chunking.</p>
+<pre><code class="hljs css language-c++">ConsumerConfiguration conf;
+conf.setAutoAckOldestChunkedMessageOnQueueFull(<span class="hljs-literal">true</span>);
+conf.setMaxPendingChunkedMessage(<span class="hljs-number">100</span>);
+Consumer consumer;
+client.subscribe(<span class="hljs-string">"my-topic"</span>, <span class="hljs-string">"my-sub"</span>, conf, consumer);
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="enable-authentication-in-connection-urls"></a><a href="#enable-authentication-in-connection-urls" 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  [...]
 <p>If you use TLS authentication when connecting to Pulsar, you need to add <code>ssl</code> in the connection URLs, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-cpp">ClientConfiguration config = ClientConfiguration();
@@ -555,7 +576,7 @@ client.subscribe(<span class="hljs-string">"topic-avro"</span>, <span class="hlj
 ​
 4. Create a consumer to receive a `User` instance.
 ​c++ ConsumerConfiguration consumerConf; consumerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); consumerConf.setSubscriptionInitialPosition(InitialPositionEarliest); Consumer consumer; client.subscribe(&quot;topic-protobuf&quot;, &quot;my-sub&quot;, consumerConf, consumer); Message msg; consumer.receive(msg); User user2; user2.ParseFromArray(msg.getData(), msg.getLength()); ```</code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/fr/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System requir [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/fr/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System requir [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/client-libraries-dotnet.html b/content/docs/fr/next/client-libraries-dotnet.html
index e6e6aec..4ac31f8 100644
--- a/content/docs/fr/next/client-libraries-dotnet.html
+++ b/content/docs/fr/next/client-libraries-dotnet.html
@@ -243,10 +243,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>Messages can be acknowledged individually or cumulatively. For details about message acknowledgement, see <a href="/docs/fr/next/concepts-messaging#acknowledgement">acknowledgement</a>.</p>
 <ul>
 <li><p>Acknowledge messages individually.</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>Acknowledge messages cumulatively.</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/fr/next/client-libraries-dotnet/index.html b/content/docs/fr/next/client-libraries-dotnet/index.html
index e6e6aec..4ac31f8 100644
--- a/content/docs/fr/next/client-libraries-dotnet/index.html
+++ b/content/docs/fr/next/client-libraries-dotnet/index.html
@@ -243,10 +243,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>Messages can be acknowledged individually or cumulatively. For details about message acknowledgement, see <a href="/docs/fr/next/concepts-messaging#acknowledgement">acknowledgement</a>.</p>
 <ul>
 <li><p>Acknowledge messages individually.</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>Acknowledge messages cumulatively.</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/fr/next/client-libraries-websocket.html b/content/docs/fr/next/client-libraries-websocket.html
index 538da7b..1333fc4 100644
--- a/content/docs/fr/next/client-libraries-websocket.html
+++ b/content/docs/fr/next/client-libraries-websocket.html
@@ -92,12 +92,12 @@
 <h3><a class="anchor" aria-hidden="true" id="as-a-separate-component"></a><a href="#as-a-separate-component" 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 [...]
 <p>In this mode, the WebSocket service will be run from a Pulsar <a href="/docs/fr/next/reference-terminology#broker">broker</a> as a separate service. Configuration for this mode is handled in the <a href="/docs/fr/next/reference-configuration#websocket"><code>conf/websocket.conf</code></a> configuration file. You'll need to set <em>at least</em> the following parameters:</p>
 <ul>
-<li><a href="/docs/fr/next/reference-configuration#websocket-configurationStoreServers"><code>configurationStoreServers</code></a></li>
+<li><a href="/docs/fr/next/reference-configuration#websocket"><code>configurationMetadataStoreUrl</code></a></li>
 <li><a href="/docs/fr/next/reference-configuration#websocket-webServicePort"><code>webServicePort</code></a></li>
 <li><a href="/docs/fr/next/reference-configuration#websocket-clusterName"><code>clusterName</code></a></li>
 </ul>
 <p>Here's an example:</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
 <span class="hljs-attr">webServicePort</span>=<span class="hljs-string">8080</span>
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">my-cluster</span>
 </code></pre>
diff --git a/content/docs/fr/next/client-libraries-websocket/index.html b/content/docs/fr/next/client-libraries-websocket/index.html
index 538da7b..1333fc4 100644
--- a/content/docs/fr/next/client-libraries-websocket/index.html
+++ b/content/docs/fr/next/client-libraries-websocket/index.html
@@ -92,12 +92,12 @@
 <h3><a class="anchor" aria-hidden="true" id="as-a-separate-component"></a><a href="#as-a-separate-component" 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 [...]
 <p>In this mode, the WebSocket service will be run from a Pulsar <a href="/docs/fr/next/reference-terminology#broker">broker</a> as a separate service. Configuration for this mode is handled in the <a href="/docs/fr/next/reference-configuration#websocket"><code>conf/websocket.conf</code></a> configuration file. You'll need to set <em>at least</em> the following parameters:</p>
 <ul>
-<li><a href="/docs/fr/next/reference-configuration#websocket-configurationStoreServers"><code>configurationStoreServers</code></a></li>
+<li><a href="/docs/fr/next/reference-configuration#websocket"><code>configurationMetadataStoreUrl</code></a></li>
 <li><a href="/docs/fr/next/reference-configuration#websocket-webServicePort"><code>webServicePort</code></a></li>
 <li><a href="/docs/fr/next/reference-configuration#websocket-clusterName"><code>clusterName</code></a></li>
 </ul>
 <p>Here's an example:</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
 <span class="hljs-attr">webServicePort</span>=<span class="hljs-string">8080</span>
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">my-cluster</span>
 </code></pre>
diff --git a/content/docs/fr/next/deploy-bare-metal-multi-cluster.html b/content/docs/fr/next/deploy-bare-metal-multi-cluster.html
index 2e4a2b5..63da931 100644
--- a/content/docs/fr/next/deploy-bare-metal-multi-cluster.html
+++ b/content/docs/fr/next/deploy-bare-metal-multi-cluster.html
@@ -267,14 +267,14 @@ $ <span class="hljs-built_in">cd</span> apache-pulsar-2.9.1
 <p>Once you set up ZooKeeper, initialize cluster metadata, and spin up BookKeeper bookies, you can deploy brokers.</p>
 <h3><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-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-2-1 [...]
 <p>You can configure brokers using the <a href="/docs/fr/next/reference-configuration#broker"><code>conf/broker.conf</code></a> configuration file.</p>
-<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/fr/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> parameter to reflect the local quorum and the <a href="/docs/fr/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameter to reflect the [...]
+<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/fr/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> parameter to reflect the local quorum and the <a href="/docs/fr/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameter to reflect the configuration store quorum (although y [...]
 <p>You also need to specify the name of the <a href="/docs/fr/next/reference-terminology#cluster">cluster</a> to which the broker belongs using the <a href="/docs/fr/next/reference-configuration#broker-clusterName"><code>clusterName</code></a> parameter. In addition, you need to match the broker and web service ports provided when you initialize the metadata (especially when you use a different port from default) of the cluster.</p>
 <p>The following is an example configuration:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Local ZooKeeper servers</span>
-<span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 <span class="hljs-comment">
 # Configuration store quorum connection string.</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
 
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">us-west</span>
 <span class="hljs-comment">
diff --git a/content/docs/fr/next/deploy-bare-metal-multi-cluster/index.html b/content/docs/fr/next/deploy-bare-metal-multi-cluster/index.html
index 2e4a2b5..63da931 100644
--- a/content/docs/fr/next/deploy-bare-metal-multi-cluster/index.html
+++ b/content/docs/fr/next/deploy-bare-metal-multi-cluster/index.html
@@ -267,14 +267,14 @@ $ <span class="hljs-built_in">cd</span> apache-pulsar-2.9.1
 <p>Once you set up ZooKeeper, initialize cluster metadata, and spin up BookKeeper bookies, you can deploy brokers.</p>
 <h3><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-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-2-1 [...]
 <p>You can configure brokers using the <a href="/docs/fr/next/reference-configuration#broker"><code>conf/broker.conf</code></a> configuration file.</p>
-<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/fr/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> parameter to reflect the local quorum and the <a href="/docs/fr/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameter to reflect the [...]
+<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/fr/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> parameter to reflect the local quorum and the <a href="/docs/fr/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameter to reflect the configuration store quorum (although y [...]
 <p>You also need to specify the name of the <a href="/docs/fr/next/reference-terminology#cluster">cluster</a> to which the broker belongs using the <a href="/docs/fr/next/reference-configuration#broker-clusterName"><code>clusterName</code></a> parameter. In addition, you need to match the broker and web service ports provided when you initialize the metadata (especially when you use a different port from default) of the cluster.</p>
 <p>The following is an example configuration:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Local ZooKeeper servers</span>
-<span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 <span class="hljs-comment">
 # Configuration store quorum connection string.</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
 
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">us-west</span>
 <span class="hljs-comment">
diff --git a/content/docs/fr/next/deploy-bare-metal.html b/content/docs/fr/next/deploy-bare-metal.html
index 5e04dab..00603e8 100644
--- a/content/docs/fr/next/deploy-bare-metal.html
+++ b/content/docs/fr/next/deploy-bare-metal.html
@@ -335,9 +335,9 @@ $ <span class="hljs-built_in">echo</span> 1 &gt; data/zookeeper/myid
 <h2><a class="anchor" aria-hidden="true" id="deploy-pulsar-brokers"></a><a href="#deploy-pulsar-brokers" 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>Pulsar brokers are the last thing you need to deploy in your Pulsar cluster. Brokers handle Pulsar messages and provide the administrative interface of Pulsar. A good choice is to run <strong>3 brokers</strong>, one for each machine that already runs a BookKeeper bookie.</p>
 <h3><a class="anchor" aria-hidden="true" id="configure-brokers"></a><a href="#configure-brokers" 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- [...]
-<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/fr/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> and <a href="/docs/fr/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, [...]
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/fr/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> and <a href="/docs/fr/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, the <code>configurationMetadataStoreUr [...]
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
 <p>You also need to specify the cluster name (matching the name that you provided when you <a href="#initialize-cluster-metadata">initialize the metadata of the cluster</a>):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
diff --git a/content/docs/fr/next/deploy-bare-metal/index.html b/content/docs/fr/next/deploy-bare-metal/index.html
index 5e04dab..00603e8 100644
--- a/content/docs/fr/next/deploy-bare-metal/index.html
+++ b/content/docs/fr/next/deploy-bare-metal/index.html
@@ -335,9 +335,9 @@ $ <span class="hljs-built_in">echo</span> 1 &gt; data/zookeeper/myid
 <h2><a class="anchor" aria-hidden="true" id="deploy-pulsar-brokers"></a><a href="#deploy-pulsar-brokers" 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>Pulsar brokers are the last thing you need to deploy in your Pulsar cluster. Brokers handle Pulsar messages and provide the administrative interface of Pulsar. A good choice is to run <strong>3 brokers</strong>, one for each machine that already runs a BookKeeper bookie.</p>
 <h3><a class="anchor" aria-hidden="true" id="configure-brokers"></a><a href="#configure-brokers" 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- [...]
-<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/fr/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> and <a href="/docs/fr/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, [...]
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/fr/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> and <a href="/docs/fr/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, the <code>configurationMetadataStoreUr [...]
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
 <p>You also need to specify the cluster name (matching the name that you provided when you <a href="#initialize-cluster-metadata">initialize the metadata of the cluster</a>):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
diff --git a/content/docs/fr/next/develop-binary-protocol.html b/content/docs/fr/next/develop-binary-protocol.html
index 704040b..cb285de 100644
--- a/content/docs/fr/next/develop-binary-protocol.html
+++ b/content/docs/fr/next/develop-binary-protocol.html
@@ -230,7 +230,7 @@
 </code></pre>
 <p>Parameters: * <code>request_id</code> → Original id of the <code>CreateProducer</code> request * <code>producer_name</code> → Generated globally unique producer name or the name specified by the client, if any.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-send"></a><a href="#command-send" 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. [...]
-<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
+<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. If a producer has not yet been created for the connection, the broker will terminate the connection. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/fr/next/develop-binary-protocol/index.html b/content/docs/fr/next/develop-binary-protocol/index.html
index 704040b..cb285de 100644
--- a/content/docs/fr/next/develop-binary-protocol/index.html
+++ b/content/docs/fr/next/develop-binary-protocol/index.html
@@ -230,7 +230,7 @@
 </code></pre>
 <p>Parameters: * <code>request_id</code> → Original id of the <code>CreateProducer</code> request * <code>producer_name</code> → Generated globally unique producer name or the name specified by the client, if any.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-send"></a><a href="#command-send" 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. [...]
-<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
+<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. If a producer has not yet been created for the connection, the broker will terminate the connection. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/fr/next/reference-configuration.html b/content/docs/fr/next/reference-configuration.html
index 21ac1fe..4fe101e 100644
--- a/content/docs/fr/next/reference-configuration.html
+++ b/content/docs/fr/next/reference-configuration.html
@@ -209,7 +209,7 @@
 <p>If there are multiple listeners, separate them with commas.</p>
 <p><strong>Note</strong>: do not use this configuration with <code>advertisedAddress</code> and <code>brokerServicePort</code>. If the value of this configuration is empty, the broker uses <code>advertisedAddress</code> and <code>brokerServicePort</code>|/| |internalListenerName|Specify the internal listener name for the broker.</p>
 <p><strong>Note</strong>: the listener name must be contained in <code>advertisedListeners</code>.</p>
-<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
+<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
 <ul>
 <li><p>'producer_request_hold' Policy which holds producer's send request until the resource becomes available (or holding times out)</p></li>
 <li><p>'producer_exception' Policy which throws <code>javax.jms.ResourceAllocationException</code> to the producer</p></li>
@@ -218,7 +218,7 @@
 <li><p><code>delete_when_no_subscriptions</code>: delete the topic which has no subscriptions or active producers.</p>
 <ul>
 <li><p><code>delete_when_subscriptions_caught_up</code>: delete the topic whose subscriptions have no backlogs and which has no active producers or consumers. | <code>delete_when_no_subscriptions</code> | | brokerDeleteInactiveTopicsMaxInactiveDurationSeconds | Set the maximum duration for inactive topics. If it is not specified, the <code>brokerDeleteInactiveTopicsFrequencySeconds</code> parameter is adopted. | N/A | |forceDeleteTenantAllowed| Enable you to delete a tenant forcefully. | [...]
-<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
+<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
 <p>Setting this configuration to a value <strong>greater than 0</strong> deletes inactive subscriptions automatically.<br>
 Setting this configuration to <strong>0</strong> does not delete inactive subscriptions automatically.</p>
 <p>Since this configuration takes effect on all topics, if there is even one topic whose subscriptions should not be deleted automatically, you need to set it to 0.<br>
@@ -235,7 +235,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
     - `org.apache.pulsar.broker.loadbalance.impl.OverloadShedder`
     - `org.apache.pulsar.broker.loadbalance.impl.UniformLoadShedder`
       
-    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
+    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
     |haProxyProtocolEnabled | Enable or disable the [HAProxy](http://www.haproxy.org/) protocol. |false| | maxTopicsPerNamespace | The maximum number of persistent topics that can be created in the namespace. When the number of topics reaches this threshold, the broker rejects the request of creating a new topic, including the auto-created topics by the producer or consumer, until the number of connected consumers decreases. The default value 0 disables the check. | 0 | |subscriptionType [...]
       
     Available options are `NONE`, `LZ4`, `ZLIB`, `ZSTD`, and `SNAPPY`).   
@@ -264,6 +264,20 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
       
     Example  
     enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ### Deprecated Parameters
+    
+    The following parameters have been deprecated.
+    
+    | Name                                         | Description                                                                                                     | Default |
+    | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------- |
+    | backlogQuotaDefaultLimitGB                   | Use `backlogQuotaDefaultLimitBytes` instead.                                                                    | -1      |
+    | brokerServicePurgeInactiveFrequencyInSeconds | Use `brokerDeleteInactiveTopicsFrequencySeconds`.                                                               | 60      |
+    | tlsEnabled                                   | Use `webServicePortTls` and `brokerServicePortTls` instead.                                                     | false   |
+    | replicationTlsEnabled                        | Enable TLS when talking with other clusters to replicate messages. Use `brokerClientTlsEnabled` instead.        | false   |
+    | subscriptionKeySharedEnable                  | Whether to enable the Key_Shared subscription. Use `subscriptionTypesEnabled` instead.                          | true    |
+    | zookeeperServers                             | Zookeeper quorum connection string. Use `metadataStoreUrl` instead.                                             | N/A     |
+    | configurationStoreServers                    | Configuration store connection string (as a comma-separated list). Use `configurationMetadataStoreUrl` instead. | N/A     |
+    
     ## Client
     
     You can use the [`pulsar-client`](/docs/fr/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
@@ -337,7 +351,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
                                     
                                     | Name                                 | Description                            | Default |
                                     | ------------------------------------ | -------------------------------------- | ------- |
-                                    | configurationStoreServers            |                                        |         |
+                                    | configurationMetadataStoreUrl        |                                        |         |
                                     | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
                                     | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
                                     | serviceUrl                           |                                        |         |
diff --git a/content/docs/fr/next/reference-configuration/index.html b/content/docs/fr/next/reference-configuration/index.html
index 21ac1fe..4fe101e 100644
--- a/content/docs/fr/next/reference-configuration/index.html
+++ b/content/docs/fr/next/reference-configuration/index.html
@@ -209,7 +209,7 @@
 <p>If there are multiple listeners, separate them with commas.</p>
 <p><strong>Note</strong>: do not use this configuration with <code>advertisedAddress</code> and <code>brokerServicePort</code>. If the value of this configuration is empty, the broker uses <code>advertisedAddress</code> and <code>brokerServicePort</code>|/| |internalListenerName|Specify the internal listener name for the broker.</p>
 <p><strong>Note</strong>: the listener name must be contained in <code>advertisedListeners</code>.</p>
-<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
+<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
 <ul>
 <li><p>'producer_request_hold' Policy which holds producer's send request until the resource becomes available (or holding times out)</p></li>
 <li><p>'producer_exception' Policy which throws <code>javax.jms.ResourceAllocationException</code> to the producer</p></li>
@@ -218,7 +218,7 @@
 <li><p><code>delete_when_no_subscriptions</code>: delete the topic which has no subscriptions or active producers.</p>
 <ul>
 <li><p><code>delete_when_subscriptions_caught_up</code>: delete the topic whose subscriptions have no backlogs and which has no active producers or consumers. | <code>delete_when_no_subscriptions</code> | | brokerDeleteInactiveTopicsMaxInactiveDurationSeconds | Set the maximum duration for inactive topics. If it is not specified, the <code>brokerDeleteInactiveTopicsFrequencySeconds</code> parameter is adopted. | N/A | |forceDeleteTenantAllowed| Enable you to delete a tenant forcefully. | [...]
-<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
+<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
 <p>Setting this configuration to a value <strong>greater than 0</strong> deletes inactive subscriptions automatically.<br>
 Setting this configuration to <strong>0</strong> does not delete inactive subscriptions automatically.</p>
 <p>Since this configuration takes effect on all topics, if there is even one topic whose subscriptions should not be deleted automatically, you need to set it to 0.<br>
@@ -235,7 +235,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
     - `org.apache.pulsar.broker.loadbalance.impl.OverloadShedder`
     - `org.apache.pulsar.broker.loadbalance.impl.UniformLoadShedder`
       
-    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
+    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
     |haProxyProtocolEnabled | Enable or disable the [HAProxy](http://www.haproxy.org/) protocol. |false| | maxTopicsPerNamespace | The maximum number of persistent topics that can be created in the namespace. When the number of topics reaches this threshold, the broker rejects the request of creating a new topic, including the auto-created topics by the producer or consumer, until the number of connected consumers decreases. The default value 0 disables the check. | 0 | |subscriptionType [...]
       
     Available options are `NONE`, `LZ4`, `ZLIB`, `ZSTD`, and `SNAPPY`).   
@@ -264,6 +264,20 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
       
     Example  
     enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ### Deprecated Parameters
+    
+    The following parameters have been deprecated.
+    
+    | Name                                         | Description                                                                                                     | Default |
+    | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------- |
+    | backlogQuotaDefaultLimitGB                   | Use `backlogQuotaDefaultLimitBytes` instead.                                                                    | -1      |
+    | brokerServicePurgeInactiveFrequencyInSeconds | Use `brokerDeleteInactiveTopicsFrequencySeconds`.                                                               | 60      |
+    | tlsEnabled                                   | Use `webServicePortTls` and `brokerServicePortTls` instead.                                                     | false   |
+    | replicationTlsEnabled                        | Enable TLS when talking with other clusters to replicate messages. Use `brokerClientTlsEnabled` instead.        | false   |
+    | subscriptionKeySharedEnable                  | Whether to enable the Key_Shared subscription. Use `subscriptionTypesEnabled` instead.                          | true    |
+    | zookeeperServers                             | Zookeeper quorum connection string. Use `metadataStoreUrl` instead.                                             | N/A     |
+    | configurationStoreServers                    | Configuration store connection string (as a comma-separated list). Use `configurationMetadataStoreUrl` instead. | N/A     |
+    
     ## Client
     
     You can use the [`pulsar-client`](/docs/fr/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
@@ -337,7 +351,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
                                     
                                     | Name                                 | Description                            | Default |
                                     | ------------------------------------ | -------------------------------------- | ------- |
-                                    | configurationStoreServers            |                                        |         |
+                                    | configurationMetadataStoreUrl        |                                        |         |
                                     | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
                                     | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
                                     | serviceUrl                           |                                        |         |
diff --git a/content/docs/ja/next/administration-proxy.html b/content/docs/ja/next/administration-proxy.html
index 8feee9a..bfb7f75 100644
--- a/content/docs/ja/next/administration-proxy.html
+++ b/content/docs/ja/next/administration-proxy.html
@@ -98,8 +98,8 @@
 <p>Note that if you do not use functions, you do not need to configure <code>functionWorkerWebServiceURL</code>.</p>
 <h3><a class="anchor" aria-hidden="true" id="use-service-discovery"></a><a href="#use-service-discovery" 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>Pulsar uses <a href="https://zookeeper.apache.org">ZooKeeper</a> for service discovery. To connect the proxy to ZooKeeper, specify the following in <code>conf/proxy.conf</code>.</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk-0,zk-1,zk-2</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk-0:2184,zk-remote:2184</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2181,my-zk-1:2181,my-zk-2:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2184,my-zk-remote:2184</span>
 </code></pre>
 <blockquote>
 <p>To use service discovery, you need to open the network ACLs, so the proxy can connects to the ZooKeeper nodes through the ZooKeeper client port (port <code>2181</code>) and the configuration store client port (port <code>2184</code>).</p>
diff --git a/content/docs/ja/next/administration-proxy/index.html b/content/docs/ja/next/administration-proxy/index.html
index 8feee9a..bfb7f75 100644
--- a/content/docs/ja/next/administration-proxy/index.html
+++ b/content/docs/ja/next/administration-proxy/index.html
@@ -98,8 +98,8 @@
 <p>Note that if you do not use functions, you do not need to configure <code>functionWorkerWebServiceURL</code>.</p>
 <h3><a class="anchor" aria-hidden="true" id="use-service-discovery"></a><a href="#use-service-discovery" 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>Pulsar uses <a href="https://zookeeper.apache.org">ZooKeeper</a> for service discovery. To connect the proxy to ZooKeeper, specify the following in <code>conf/proxy.conf</code>.</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk-0,zk-1,zk-2</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk-0:2184,zk-remote:2184</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2181,my-zk-1:2181,my-zk-2:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2184,my-zk-remote:2184</span>
 </code></pre>
 <blockquote>
 <p>To use service discovery, you need to open the network ACLs, so the proxy can connects to the ZooKeeper nodes through the ZooKeeper client port (port <code>2181</code>) and the configuration store client port (port <code>2184</code>).</p>
diff --git a/content/docs/ja/next/client-libraries-cpp.html b/content/docs/ja/next/client-libraries-cpp.html
index 6f8c50f..39b07b7 100644
--- a/content/docs/ja/next/client-libraries-cpp.html
+++ b/content/docs/ja/next/client-libraries-cpp.html
@@ -315,90 +315,6 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <p>If you use TLS authentication, you need to add <code>ssl</code>, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
-<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
-<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
-<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    Message msg;
-    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
-    <span class="hljs-comment">// consume 100 messages</span>
-    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
-        consumer.receive(msg);
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
-            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-        consumer.acknowledge(msg);
-        ctr++;
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-}
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-    messagesReceived++;
-    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
-}
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setMessageListener(listener);
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
-    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
-        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="create-a-producer"></a><a href="#create-a-producer" 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- [...]
 <p>To use Pulsar as a producer, you need to create a producer on the C++ client. There are two main ways of using a producer: - <a href="#simple-blocking-example">Blocking style</a> : each call to <code>send</code> waits for an ack from the broker. - <a href="#non-blocking-example">Non-blocking asynchronous style</a> : <code>sendAsync</code> is called instead of <code>send</code> and a callback is supplied for when the ack is received from the broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="simple-blocking-example"></a><a href="#simple-blocking-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 [...]
@@ -502,6 +418,111 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 producerConf.setPartitionsRoutingMode(ProducerConfiguration::UseSinglePartition);
 producerConf.setLazyStartPartitionedProducers(<span class="hljs-literal">true</span>);
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" 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  [...]
+<p>Message <a href="/docs/ja/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<pre><code class="hljs css language-c++">ProducerConfiguration conf;
+conf.setBatchingEnabled(<span class="hljs-literal">false</span>);
+conf.setChunkingEnabled(<span class="hljs-literal">true</span>);
+Producer producer;
+client.createProducer(<span class="hljs-string">"my-topic"</span>, conf, producer);
+</code></pre>
+<blockquote>
+<p><strong>Note:</strong> To enable chunking, you need to disable batching (<code>setBatchingEnabled</code>=<code>false</code>) concurrently.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
+<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
+<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
+<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    Message msg;
+    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
+    <span class="hljs-comment">// consume 100 messages</span>
+    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
+        consumer.receive(msg);
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
+            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+        consumer.acknowledge(msg);
+        ctr++;
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+}
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+    messagesReceived++;
+    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
+}
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setMessageListener(listener);
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
+    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
+        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="configure-chunking"></a><a href="#configure-chunking" 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- [...]
+<p>You can limit the maximum number of chunked messages a consumer maintains concurrently by configuring the <code>setMaxPendingChunkedMessage</code> and <code>setAutoAckOldestChunkedMessageOnQueueFull</code> parameters. When the threshold is reached, the consumer drops pending messages by silently acknowledging them or asking the broker to redeliver them later.</p>
+<p>The following is an example of how to configure message chunking.</p>
+<pre><code class="hljs css language-c++">ConsumerConfiguration conf;
+conf.setAutoAckOldestChunkedMessageOnQueueFull(<span class="hljs-literal">true</span>);
+conf.setMaxPendingChunkedMessage(<span class="hljs-number">100</span>);
+Consumer consumer;
+client.subscribe(<span class="hljs-string">"my-topic"</span>, <span class="hljs-string">"my-sub"</span>, conf, consumer);
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="enable-authentication-in-connection-urls"></a><a href="#enable-authentication-in-connection-urls" 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  [...]
 <p>If you use TLS authentication when connecting to Pulsar, you need to add <code>ssl</code> in the connection URLs, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-cpp">ClientConfiguration config = ClientConfiguration();
@@ -555,7 +576,7 @@ client.subscribe(<span class="hljs-string">"topic-avro"</span>, <span class="hlj
 ​
 4. Create a consumer to receive a `User` instance.
 ​c++ ConsumerConfiguration consumerConf; consumerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); consumerConf.setSubscriptionInitialPosition(InitialPositionEarliest); Consumer consumer; client.subscribe(&quot;topic-protobuf&quot;, &quot;my-sub&quot;, consumerConf, consumer); Message msg; consumer.receive(msg); User user2; user2.ParseFromArray(msg.getData(), msg.getLength()); ```</code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/ja/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#システム要件">システム要件</a></li><li><a href [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/ja/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#システム要件">システム要件</a></li><li><a href [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/client-libraries-cpp/index.html b/content/docs/ja/next/client-libraries-cpp/index.html
index 6f8c50f..39b07b7 100644
--- a/content/docs/ja/next/client-libraries-cpp/index.html
+++ b/content/docs/ja/next/client-libraries-cpp/index.html
@@ -315,90 +315,6 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <p>If you use TLS authentication, you need to add <code>ssl</code>, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
-<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
-<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
-<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    Message msg;
-    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
-    <span class="hljs-comment">// consume 100 messages</span>
-    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
-        consumer.receive(msg);
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
-            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-        consumer.acknowledge(msg);
-        ctr++;
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-}
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-    messagesReceived++;
-    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
-}
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setMessageListener(listener);
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
-    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
-        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="create-a-producer"></a><a href="#create-a-producer" 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- [...]
 <p>To use Pulsar as a producer, you need to create a producer on the C++ client. There are two main ways of using a producer: - <a href="#simple-blocking-example">Blocking style</a> : each call to <code>send</code> waits for an ack from the broker. - <a href="#non-blocking-example">Non-blocking asynchronous style</a> : <code>sendAsync</code> is called instead of <code>send</code> and a callback is supplied for when the ack is received from the broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="simple-blocking-example"></a><a href="#simple-blocking-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 [...]
@@ -502,6 +418,111 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 producerConf.setPartitionsRoutingMode(ProducerConfiguration::UseSinglePartition);
 producerConf.setLazyStartPartitionedProducers(<span class="hljs-literal">true</span>);
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" 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  [...]
+<p>Message <a href="/docs/ja/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<pre><code class="hljs css language-c++">ProducerConfiguration conf;
+conf.setBatchingEnabled(<span class="hljs-literal">false</span>);
+conf.setChunkingEnabled(<span class="hljs-literal">true</span>);
+Producer producer;
+client.createProducer(<span class="hljs-string">"my-topic"</span>, conf, producer);
+</code></pre>
+<blockquote>
+<p><strong>Note:</strong> To enable chunking, you need to disable batching (<code>setBatchingEnabled</code>=<code>false</code>) concurrently.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
+<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
+<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
+<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    Message msg;
+    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
+    <span class="hljs-comment">// consume 100 messages</span>
+    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
+        consumer.receive(msg);
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
+            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+        consumer.acknowledge(msg);
+        ctr++;
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+}
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+    messagesReceived++;
+    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
+}
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setMessageListener(listener);
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
+    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
+        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="configure-chunking"></a><a href="#configure-chunking" 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- [...]
+<p>You can limit the maximum number of chunked messages a consumer maintains concurrently by configuring the <code>setMaxPendingChunkedMessage</code> and <code>setAutoAckOldestChunkedMessageOnQueueFull</code> parameters. When the threshold is reached, the consumer drops pending messages by silently acknowledging them or asking the broker to redeliver them later.</p>
+<p>The following is an example of how to configure message chunking.</p>
+<pre><code class="hljs css language-c++">ConsumerConfiguration conf;
+conf.setAutoAckOldestChunkedMessageOnQueueFull(<span class="hljs-literal">true</span>);
+conf.setMaxPendingChunkedMessage(<span class="hljs-number">100</span>);
+Consumer consumer;
+client.subscribe(<span class="hljs-string">"my-topic"</span>, <span class="hljs-string">"my-sub"</span>, conf, consumer);
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="enable-authentication-in-connection-urls"></a><a href="#enable-authentication-in-connection-urls" 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  [...]
 <p>If you use TLS authentication when connecting to Pulsar, you need to add <code>ssl</code> in the connection URLs, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-cpp">ClientConfiguration config = ClientConfiguration();
@@ -555,7 +576,7 @@ client.subscribe(<span class="hljs-string">"topic-avro"</span>, <span class="hlj
 ​
 4. Create a consumer to receive a `User` instance.
 ​c++ ConsumerConfiguration consumerConf; consumerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); consumerConf.setSubscriptionInitialPosition(InitialPositionEarliest); Consumer consumer; client.subscribe(&quot;topic-protobuf&quot;, &quot;my-sub&quot;, consumerConf, consumer); Message msg; consumer.receive(msg); User user2; user2.ParseFromArray(msg.getData(), msg.getLength()); ```</code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/ja/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#システム要件">システム要件</a></li><li><a href [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/ja/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#システム要件">システム要件</a></li><li><a href [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/client-libraries-dotnet.html b/content/docs/ja/next/client-libraries-dotnet.html
index a443b15..f256eb8 100644
--- a/content/docs/ja/next/client-libraries-dotnet.html
+++ b/content/docs/ja/next/client-libraries-dotnet.html
@@ -243,10 +243,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>Messages can be acknowledged individually or cumulatively. For details about message acknowledgement, see <a href="/docs/ja/next/concepts-messaging#acknowledgement">acknowledgement</a>.</p>
 <ul>
 <li><p>Acknowledge messages individually.</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>Acknowledge messages cumulatively.</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/ja/next/client-libraries-dotnet/index.html b/content/docs/ja/next/client-libraries-dotnet/index.html
index a443b15..f256eb8 100644
--- a/content/docs/ja/next/client-libraries-dotnet/index.html
+++ b/content/docs/ja/next/client-libraries-dotnet/index.html
@@ -243,10 +243,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>Messages can be acknowledged individually or cumulatively. For details about message acknowledgement, see <a href="/docs/ja/next/concepts-messaging#acknowledgement">acknowledgement</a>.</p>
 <ul>
 <li><p>Acknowledge messages individually.</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>Acknowledge messages cumulatively.</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/ja/next/client-libraries-websocket.html b/content/docs/ja/next/client-libraries-websocket.html
index f2f77e7..008e93a 100644
--- a/content/docs/ja/next/client-libraries-websocket.html
+++ b/content/docs/ja/next/client-libraries-websocket.html
@@ -92,12 +92,12 @@
 <h3><a class="anchor" aria-hidden="true" id="as-a-separate-component"></a><a href="#as-a-separate-component" 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 [...]
 <p>In this mode, the WebSocket service will be run from a Pulsar <a href="/docs/ja/next/reference-terminology#broker">broker</a> as a separate service. Configuration for this mode is handled in the <a href="/docs/ja/next/reference-configuration#websocket"><code>conf/websocket.conf</code></a> configuration file. You'll need to set <em>at least</em> the following parameters:</p>
 <ul>
-<li><a href="/docs/ja/next/reference-configuration#websocket-configurationStoreServers"><code>configurationStoreServers</code></a></li>
+<li><a href="/docs/ja/next/reference-configuration#websocket"><code>configurationMetadataStoreUrl</code></a></li>
 <li><a href="/docs/ja/next/reference-configuration#websocket-webServicePort"><code>webServicePort</code></a></li>
 <li><a href="/docs/ja/next/reference-configuration#websocket-clusterName"><code>clusterName</code></a></li>
 </ul>
 <p>Here's an example:</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
 <span class="hljs-attr">webServicePort</span>=<span class="hljs-string">8080</span>
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">my-cluster</span>
 </code></pre>
diff --git a/content/docs/ja/next/client-libraries-websocket/index.html b/content/docs/ja/next/client-libraries-websocket/index.html
index f2f77e7..008e93a 100644
--- a/content/docs/ja/next/client-libraries-websocket/index.html
+++ b/content/docs/ja/next/client-libraries-websocket/index.html
@@ -92,12 +92,12 @@
 <h3><a class="anchor" aria-hidden="true" id="as-a-separate-component"></a><a href="#as-a-separate-component" 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 [...]
 <p>In this mode, the WebSocket service will be run from a Pulsar <a href="/docs/ja/next/reference-terminology#broker">broker</a> as a separate service. Configuration for this mode is handled in the <a href="/docs/ja/next/reference-configuration#websocket"><code>conf/websocket.conf</code></a> configuration file. You'll need to set <em>at least</em> the following parameters:</p>
 <ul>
-<li><a href="/docs/ja/next/reference-configuration#websocket-configurationStoreServers"><code>configurationStoreServers</code></a></li>
+<li><a href="/docs/ja/next/reference-configuration#websocket"><code>configurationMetadataStoreUrl</code></a></li>
 <li><a href="/docs/ja/next/reference-configuration#websocket-webServicePort"><code>webServicePort</code></a></li>
 <li><a href="/docs/ja/next/reference-configuration#websocket-clusterName"><code>clusterName</code></a></li>
 </ul>
 <p>Here's an example:</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
 <span class="hljs-attr">webServicePort</span>=<span class="hljs-string">8080</span>
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">my-cluster</span>
 </code></pre>
diff --git a/content/docs/ja/next/deploy-bare-metal-multi-cluster.html b/content/docs/ja/next/deploy-bare-metal-multi-cluster.html
index bfc5d32..587022d 100644
--- a/content/docs/ja/next/deploy-bare-metal-multi-cluster.html
+++ b/content/docs/ja/next/deploy-bare-metal-multi-cluster.html
@@ -267,14 +267,14 @@ $ <span class="hljs-built_in">cd</span> apache-pulsar-2.9.1
 <p>Once you set up ZooKeeper, initialize cluster metadata, and spin up BookKeeper bookies, you can deploy brokers.</p>
 <h3><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-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-2-1 [...]
 <p>You can configure brokers using the <a href="/docs/ja/next/reference-configuration#broker"><code>conf/broker.conf</code></a> configuration file.</p>
-<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/ja/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> parameter to reflect the local quorum and the <a href="/docs/ja/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameter to reflect the [...]
+<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/ja/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> parameter to reflect the local quorum and the <a href="/docs/ja/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameter to reflect the configuration store quorum (although y [...]
 <p>You also need to specify the name of the <a href="/docs/ja/next/reference-terminology#cluster">cluster</a> to which the broker belongs using the <a href="/docs/ja/next/reference-configuration#broker-clusterName"><code>clusterName</code></a> parameter. In addition, you need to match the broker and web service ports provided when you initialize the metadata (especially when you use a different port from default) of the cluster.</p>
 <p>The following is an example configuration:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Local ZooKeeper servers</span>
-<span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 <span class="hljs-comment">
 # Configuration store quorum connection string.</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
 
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">us-west</span>
 <span class="hljs-comment">
diff --git a/content/docs/ja/next/deploy-bare-metal-multi-cluster/index.html b/content/docs/ja/next/deploy-bare-metal-multi-cluster/index.html
index bfc5d32..587022d 100644
--- a/content/docs/ja/next/deploy-bare-metal-multi-cluster/index.html
+++ b/content/docs/ja/next/deploy-bare-metal-multi-cluster/index.html
@@ -267,14 +267,14 @@ $ <span class="hljs-built_in">cd</span> apache-pulsar-2.9.1
 <p>Once you set up ZooKeeper, initialize cluster metadata, and spin up BookKeeper bookies, you can deploy brokers.</p>
 <h3><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-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-2-1 [...]
 <p>You can configure brokers using the <a href="/docs/ja/next/reference-configuration#broker"><code>conf/broker.conf</code></a> configuration file.</p>
-<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/ja/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> parameter to reflect the local quorum and the <a href="/docs/ja/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameter to reflect the [...]
+<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/ja/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> parameter to reflect the local quorum and the <a href="/docs/ja/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameter to reflect the configuration store quorum (although y [...]
 <p>You also need to specify the name of the <a href="/docs/ja/next/reference-terminology#cluster">cluster</a> to which the broker belongs using the <a href="/docs/ja/next/reference-configuration#broker-clusterName"><code>clusterName</code></a> parameter. In addition, you need to match the broker and web service ports provided when you initialize the metadata (especially when you use a different port from default) of the cluster.</p>
 <p>The following is an example configuration:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Local ZooKeeper servers</span>
-<span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 <span class="hljs-comment">
 # Configuration store quorum connection string.</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
 
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">us-west</span>
 <span class="hljs-comment">
diff --git a/content/docs/ja/next/deploy-bare-metal.html b/content/docs/ja/next/deploy-bare-metal.html
index 91c2560..b5fd626 100644
--- a/content/docs/ja/next/deploy-bare-metal.html
+++ b/content/docs/ja/next/deploy-bare-metal.html
@@ -335,9 +335,9 @@ $ <span class="hljs-built_in">echo</span> 1 &gt; data/zookeeper/myid
 <h2><a class="anchor" aria-hidden="true" id="deploy-pulsar-brokers"></a><a href="#deploy-pulsar-brokers" 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>Pulsar brokers are the last thing you need to deploy in your Pulsar cluster. Brokers handle Pulsar messages and provide the administrative interface of Pulsar. A good choice is to run <strong>3 brokers</strong>, one for each machine that already runs a BookKeeper bookie.</p>
 <h3><a class="anchor" aria-hidden="true" id="configure-brokers"></a><a href="#configure-brokers" 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- [...]
-<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/ja/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> and <a href="/docs/ja/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, [...]
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/ja/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> and <a href="/docs/ja/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, the <code>configurationMetadataStoreUr [...]
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
 <p>You also need to specify the cluster name (matching the name that you provided when you <a href="#initialize-cluster-metadata">initialize the metadata of the cluster</a>):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
diff --git a/content/docs/ja/next/deploy-bare-metal/index.html b/content/docs/ja/next/deploy-bare-metal/index.html
index 91c2560..b5fd626 100644
--- a/content/docs/ja/next/deploy-bare-metal/index.html
+++ b/content/docs/ja/next/deploy-bare-metal/index.html
@@ -335,9 +335,9 @@ $ <span class="hljs-built_in">echo</span> 1 &gt; data/zookeeper/myid
 <h2><a class="anchor" aria-hidden="true" id="deploy-pulsar-brokers"></a><a href="#deploy-pulsar-brokers" 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>Pulsar brokers are the last thing you need to deploy in your Pulsar cluster. Brokers handle Pulsar messages and provide the administrative interface of Pulsar. A good choice is to run <strong>3 brokers</strong>, one for each machine that already runs a BookKeeper bookie.</p>
 <h3><a class="anchor" aria-hidden="true" id="configure-brokers"></a><a href="#configure-brokers" 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- [...]
-<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/ja/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> and <a href="/docs/ja/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, [...]
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/ja/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> and <a href="/docs/ja/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, the <code>configurationMetadataStoreUr [...]
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
 <p>You also need to specify the cluster name (matching the name that you provided when you <a href="#initialize-cluster-metadata">initialize the metadata of the cluster</a>):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
diff --git a/content/docs/ja/next/develop-binary-protocol.html b/content/docs/ja/next/develop-binary-protocol.html
index 0f39aed..62aae39 100644
--- a/content/docs/ja/next/develop-binary-protocol.html
+++ b/content/docs/ja/next/develop-binary-protocol.html
@@ -230,7 +230,7 @@
 </code></pre>
 <p>Parameters: * <code>request_id</code> → Original id of the <code>CreateProducer</code> request * <code>producer_name</code> → Generated globally unique producer name or the name specified by the client, if any.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-send"></a><a href="#command-send" 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. [...]
-<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
+<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. If a producer has not yet been created for the connection, the broker will terminate the connection. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/ja/next/develop-binary-protocol/index.html b/content/docs/ja/next/develop-binary-protocol/index.html
index 0f39aed..62aae39 100644
--- a/content/docs/ja/next/develop-binary-protocol/index.html
+++ b/content/docs/ja/next/develop-binary-protocol/index.html
@@ -230,7 +230,7 @@
 </code></pre>
 <p>Parameters: * <code>request_id</code> → Original id of the <code>CreateProducer</code> request * <code>producer_name</code> → Generated globally unique producer name or the name specified by the client, if any.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-send"></a><a href="#command-send" 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. [...]
-<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
+<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. If a producer has not yet been created for the connection, the broker will terminate the connection. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/ja/next/reference-configuration.html b/content/docs/ja/next/reference-configuration.html
index 09cc7b1..7d33e7f 100644
--- a/content/docs/ja/next/reference-configuration.html
+++ b/content/docs/ja/next/reference-configuration.html
@@ -209,7 +209,7 @@
 <p>If there are multiple listeners, separate them with commas.</p>
 <p><strong>Note</strong>: do not use this configuration with <code>advertisedAddress</code> and <code>brokerServicePort</code>. If the value of this configuration is empty, the broker uses <code>advertisedAddress</code> and <code>brokerServicePort</code>|/| |internalListenerName|Specify the internal listener name for the broker.</p>
 <p><strong>Note</strong>: the listener name must be contained in <code>advertisedListeners</code>.</p>
-<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
+<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
 <ul>
 <li><p>'producer_request_hold' Policy which holds producer's send request until the resource becomes available (or holding times out)</p></li>
 <li><p>'producer_exception' Policy which throws <code>javax.jms.ResourceAllocationException</code> to the producer</p></li>
@@ -218,7 +218,7 @@
 <li><p><code>delete_when_no_subscriptions</code>: delete the topic which has no subscriptions or active producers.</p>
 <ul>
 <li><p><code>delete_when_subscriptions_caught_up</code>: delete the topic whose subscriptions have no backlogs and which has no active producers or consumers. | <code>delete_when_no_subscriptions</code> | | brokerDeleteInactiveTopicsMaxInactiveDurationSeconds | Set the maximum duration for inactive topics. If it is not specified, the <code>brokerDeleteInactiveTopicsFrequencySeconds</code> parameter is adopted. | N/A | |forceDeleteTenantAllowed| Enable you to delete a tenant forcefully. | [...]
-<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
+<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
 <p>Setting this configuration to a value <strong>greater than 0</strong> deletes inactive subscriptions automatically.<br>
 Setting this configuration to <strong>0</strong> does not delete inactive subscriptions automatically.</p>
 <p>Since this configuration takes effect on all topics, if there is even one topic whose subscriptions should not be deleted automatically, you need to set it to 0.<br>
@@ -235,7 +235,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
     - `org.apache.pulsar.broker.loadbalance.impl.OverloadShedder`
     - `org.apache.pulsar.broker.loadbalance.impl.UniformLoadShedder`
       
-    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
+    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
     |haProxyProtocolEnabled | Enable or disable the [HAProxy](http://www.haproxy.org/) protocol. |false| | maxTopicsPerNamespace | The maximum number of persistent topics that can be created in the namespace. When the number of topics reaches this threshold, the broker rejects the request of creating a new topic, including the auto-created topics by the producer or consumer, until the number of connected consumers decreases. The default value 0 disables the check. | 0 | |subscriptionType [...]
       
     Available options are `NONE`, `LZ4`, `ZLIB`, `ZSTD`, and `SNAPPY`).   
@@ -264,6 +264,20 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
       
     Example  
     enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ### Deprecated Parameters
+    
+    The following parameters have been deprecated.
+    
+    | Name                                         | Description                                                                                                     | Default |
+    | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------- |
+    | backlogQuotaDefaultLimitGB                   | Use `backlogQuotaDefaultLimitBytes` instead.                                                                    | -1      |
+    | brokerServicePurgeInactiveFrequencyInSeconds | Use `brokerDeleteInactiveTopicsFrequencySeconds`.                                                               | 60      |
+    | tlsEnabled                                   | Use `webServicePortTls` and `brokerServicePortTls` instead.                                                     | false   |
+    | replicationTlsEnabled                        | Enable TLS when talking with other clusters to replicate messages. Use `brokerClientTlsEnabled` instead.        | false   |
+    | subscriptionKeySharedEnable                  | Whether to enable the Key_Shared subscription. Use `subscriptionTypesEnabled` instead.                          | true    |
+    | zookeeperServers                             | Zookeeper quorum connection string. Use `metadataStoreUrl` instead.                                             | N/A     |
+    | configurationStoreServers                    | Configuration store connection string (as a comma-separated list). Use `configurationMetadataStoreUrl` instead. | N/A     |
+    
     ## Client
     
     You can use the [`pulsar-client`](/docs/ja/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
@@ -337,7 +351,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
                                     
                                     | Name                                 | Description                            | Default |
                                     | ------------------------------------ | -------------------------------------- | ------- |
-                                    | configurationStoreServers            |                                        |         |
+                                    | configurationMetadataStoreUrl        |                                        |         |
                                     | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
                                     | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
                                     | serviceUrl                           |                                        |         |
diff --git a/content/docs/ja/next/reference-configuration/index.html b/content/docs/ja/next/reference-configuration/index.html
index 09cc7b1..7d33e7f 100644
--- a/content/docs/ja/next/reference-configuration/index.html
+++ b/content/docs/ja/next/reference-configuration/index.html
@@ -209,7 +209,7 @@
 <p>If there are multiple listeners, separate them with commas.</p>
 <p><strong>Note</strong>: do not use this configuration with <code>advertisedAddress</code> and <code>brokerServicePort</code>. If the value of this configuration is empty, the broker uses <code>advertisedAddress</code> and <code>brokerServicePort</code>|/| |internalListenerName|Specify the internal listener name for the broker.</p>
 <p><strong>Note</strong>: the listener name must be contained in <code>advertisedListeners</code>.</p>
-<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
+<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
 <ul>
 <li><p>'producer_request_hold' Policy which holds producer's send request until the resource becomes available (or holding times out)</p></li>
 <li><p>'producer_exception' Policy which throws <code>javax.jms.ResourceAllocationException</code> to the producer</p></li>
@@ -218,7 +218,7 @@
 <li><p><code>delete_when_no_subscriptions</code>: delete the topic which has no subscriptions or active producers.</p>
 <ul>
 <li><p><code>delete_when_subscriptions_caught_up</code>: delete the topic whose subscriptions have no backlogs and which has no active producers or consumers. | <code>delete_when_no_subscriptions</code> | | brokerDeleteInactiveTopicsMaxInactiveDurationSeconds | Set the maximum duration for inactive topics. If it is not specified, the <code>brokerDeleteInactiveTopicsFrequencySeconds</code> parameter is adopted. | N/A | |forceDeleteTenantAllowed| Enable you to delete a tenant forcefully. | [...]
-<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
+<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
 <p>Setting this configuration to a value <strong>greater than 0</strong> deletes inactive subscriptions automatically.<br>
 Setting this configuration to <strong>0</strong> does not delete inactive subscriptions automatically.</p>
 <p>Since this configuration takes effect on all topics, if there is even one topic whose subscriptions should not be deleted automatically, you need to set it to 0.<br>
@@ -235,7 +235,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
     - `org.apache.pulsar.broker.loadbalance.impl.OverloadShedder`
     - `org.apache.pulsar.broker.loadbalance.impl.UniformLoadShedder`
       
-    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
+    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
     |haProxyProtocolEnabled | Enable or disable the [HAProxy](http://www.haproxy.org/) protocol. |false| | maxTopicsPerNamespace | The maximum number of persistent topics that can be created in the namespace. When the number of topics reaches this threshold, the broker rejects the request of creating a new topic, including the auto-created topics by the producer or consumer, until the number of connected consumers decreases. The default value 0 disables the check. | 0 | |subscriptionType [...]
       
     Available options are `NONE`, `LZ4`, `ZLIB`, `ZSTD`, and `SNAPPY`).   
@@ -264,6 +264,20 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
       
     Example  
     enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ### Deprecated Parameters
+    
+    The following parameters have been deprecated.
+    
+    | Name                                         | Description                                                                                                     | Default |
+    | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------- |
+    | backlogQuotaDefaultLimitGB                   | Use `backlogQuotaDefaultLimitBytes` instead.                                                                    | -1      |
+    | brokerServicePurgeInactiveFrequencyInSeconds | Use `brokerDeleteInactiveTopicsFrequencySeconds`.                                                               | 60      |
+    | tlsEnabled                                   | Use `webServicePortTls` and `brokerServicePortTls` instead.                                                     | false   |
+    | replicationTlsEnabled                        | Enable TLS when talking with other clusters to replicate messages. Use `brokerClientTlsEnabled` instead.        | false   |
+    | subscriptionKeySharedEnable                  | Whether to enable the Key_Shared subscription. Use `subscriptionTypesEnabled` instead.                          | true    |
+    | zookeeperServers                             | Zookeeper quorum connection string. Use `metadataStoreUrl` instead.                                             | N/A     |
+    | configurationStoreServers                    | Configuration store connection string (as a comma-separated list). Use `configurationMetadataStoreUrl` instead. | N/A     |
+    
     ## Client
     
     You can use the [`pulsar-client`](/docs/ja/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
@@ -337,7 +351,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
                                     
                                     | Name                                 | Description                            | Default |
                                     | ------------------------------------ | -------------------------------------- | ------- |
-                                    | configurationStoreServers            |                                        |         |
+                                    | configurationMetadataStoreUrl        |                                        |         |
                                     | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
                                     | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
                                     | serviceUrl                           |                                        |         |
diff --git a/content/docs/ko/next/administration-proxy.html b/content/docs/ko/next/administration-proxy.html
index f0296a8..649a794 100644
--- a/content/docs/ko/next/administration-proxy.html
+++ b/content/docs/ko/next/administration-proxy.html
@@ -98,8 +98,8 @@
 <p>Note that if you do not use functions, you do not need to configure <code>functionWorkerWebServiceURL</code>.</p>
 <h3><a class="anchor" aria-hidden="true" id="use-service-discovery"></a><a href="#use-service-discovery" 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>Pulsar uses <a href="https://zookeeper.apache.org">ZooKeeper</a> for service discovery. To connect the proxy to ZooKeeper, specify the following in <code>conf/proxy.conf</code>.</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk-0,zk-1,zk-2</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk-0:2184,zk-remote:2184</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2181,my-zk-1:2181,my-zk-2:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2184,my-zk-remote:2184</span>
 </code></pre>
 <blockquote>
 <p>To use service discovery, you need to open the network ACLs, so the proxy can connects to the ZooKeeper nodes through the ZooKeeper client port (port <code>2181</code>) and the configuration store client port (port <code>2184</code>).</p>
diff --git a/content/docs/ko/next/administration-proxy/index.html b/content/docs/ko/next/administration-proxy/index.html
index f0296a8..649a794 100644
--- a/content/docs/ko/next/administration-proxy/index.html
+++ b/content/docs/ko/next/administration-proxy/index.html
@@ -98,8 +98,8 @@
 <p>Note that if you do not use functions, you do not need to configure <code>functionWorkerWebServiceURL</code>.</p>
 <h3><a class="anchor" aria-hidden="true" id="use-service-discovery"></a><a href="#use-service-discovery" 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>Pulsar uses <a href="https://zookeeper.apache.org">ZooKeeper</a> for service discovery. To connect the proxy to ZooKeeper, specify the following in <code>conf/proxy.conf</code>.</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk-0,zk-1,zk-2</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk-0:2184,zk-remote:2184</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2181,my-zk-1:2181,my-zk-2:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2184,my-zk-remote:2184</span>
 </code></pre>
 <blockquote>
 <p>To use service discovery, you need to open the network ACLs, so the proxy can connects to the ZooKeeper nodes through the ZooKeeper client port (port <code>2181</code>) and the configuration store client port (port <code>2184</code>).</p>
diff --git a/content/docs/ko/next/client-libraries-cpp.html b/content/docs/ko/next/client-libraries-cpp.html
index 96363d9..38480d9 100644
--- a/content/docs/ko/next/client-libraries-cpp.html
+++ b/content/docs/ko/next/client-libraries-cpp.html
@@ -315,90 +315,6 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <p>If you use TLS authentication, you need to add <code>ssl</code>, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
-<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
-<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
-<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    Message msg;
-    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
-    <span class="hljs-comment">// consume 100 messages</span>
-    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
-        consumer.receive(msg);
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
-            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-        consumer.acknowledge(msg);
-        ctr++;
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-}
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-    messagesReceived++;
-    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
-}
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setMessageListener(listener);
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
-    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
-        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="create-a-producer"></a><a href="#create-a-producer" 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- [...]
 <p>To use Pulsar as a producer, you need to create a producer on the C++ client. There are two main ways of using a producer: - <a href="#simple-blocking-example">Blocking style</a> : each call to <code>send</code> waits for an ack from the broker. - <a href="#non-blocking-example">Non-blocking asynchronous style</a> : <code>sendAsync</code> is called instead of <code>send</code> and a callback is supplied for when the ack is received from the broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="simple-blocking-example"></a><a href="#simple-blocking-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 [...]
@@ -502,6 +418,111 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 producerConf.setPartitionsRoutingMode(ProducerConfiguration::UseSinglePartition);
 producerConf.setLazyStartPartitionedProducers(<span class="hljs-literal">true</span>);
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" 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  [...]
+<p>Message <a href="/docs/ko/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<pre><code class="hljs css language-c++">ProducerConfiguration conf;
+conf.setBatchingEnabled(<span class="hljs-literal">false</span>);
+conf.setChunkingEnabled(<span class="hljs-literal">true</span>);
+Producer producer;
+client.createProducer(<span class="hljs-string">"my-topic"</span>, conf, producer);
+</code></pre>
+<blockquote>
+<p><strong>Note:</strong> To enable chunking, you need to disable batching (<code>setBatchingEnabled</code>=<code>false</code>) concurrently.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
+<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
+<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
+<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    Message msg;
+    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
+    <span class="hljs-comment">// consume 100 messages</span>
+    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
+        consumer.receive(msg);
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
+            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+        consumer.acknowledge(msg);
+        ctr++;
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+}
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+    messagesReceived++;
+    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
+}
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setMessageListener(listener);
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
+    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
+        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="configure-chunking"></a><a href="#configure-chunking" 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- [...]
+<p>You can limit the maximum number of chunked messages a consumer maintains concurrently by configuring the <code>setMaxPendingChunkedMessage</code> and <code>setAutoAckOldestChunkedMessageOnQueueFull</code> parameters. When the threshold is reached, the consumer drops pending messages by silently acknowledging them or asking the broker to redeliver them later.</p>
+<p>The following is an example of how to configure message chunking.</p>
+<pre><code class="hljs css language-c++">ConsumerConfiguration conf;
+conf.setAutoAckOldestChunkedMessageOnQueueFull(<span class="hljs-literal">true</span>);
+conf.setMaxPendingChunkedMessage(<span class="hljs-number">100</span>);
+Consumer consumer;
+client.subscribe(<span class="hljs-string">"my-topic"</span>, <span class="hljs-string">"my-sub"</span>, conf, consumer);
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="enable-authentication-in-connection-urls"></a><a href="#enable-authentication-in-connection-urls" 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  [...]
 <p>If you use TLS authentication when connecting to Pulsar, you need to add <code>ssl</code> in the connection URLs, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-cpp">ClientConfiguration config = ClientConfiguration();
@@ -555,7 +576,7 @@ client.subscribe(<span class="hljs-string">"topic-avro"</span>, <span class="hlj
 ​
 4. Create a consumer to receive a `User` instance.
 ​c++ ConsumerConfiguration consumerConf; consumerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); consumerConf.setSubscriptionInitialPosition(InitialPositionEarliest); Consumer consumer; client.subscribe(&quot;topic-protobuf&quot;, &quot;my-sub&quot;, consumerConf, consumer); Message msg; consumer.receive(msg); User user2; user2.ParseFromArray(msg.getData(), msg.getLength()); ```</code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/ko/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System requir [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/ko/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System requir [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ko/next/client-libraries-cpp/index.html b/content/docs/ko/next/client-libraries-cpp/index.html
index 96363d9..38480d9 100644
--- a/content/docs/ko/next/client-libraries-cpp/index.html
+++ b/content/docs/ko/next/client-libraries-cpp/index.html
@@ -315,90 +315,6 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <p>If you use TLS authentication, you need to add <code>ssl</code>, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
-<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
-<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
-<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    Message msg;
-    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
-    <span class="hljs-comment">// consume 100 messages</span>
-    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
-        consumer.receive(msg);
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
-            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-        consumer.acknowledge(msg);
-        ctr++;
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-}
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-    messagesReceived++;
-    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
-}
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setMessageListener(listener);
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
-    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
-        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="create-a-producer"></a><a href="#create-a-producer" 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- [...]
 <p>To use Pulsar as a producer, you need to create a producer on the C++ client. There are two main ways of using a producer: - <a href="#simple-blocking-example">Blocking style</a> : each call to <code>send</code> waits for an ack from the broker. - <a href="#non-blocking-example">Non-blocking asynchronous style</a> : <code>sendAsync</code> is called instead of <code>send</code> and a callback is supplied for when the ack is received from the broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="simple-blocking-example"></a><a href="#simple-blocking-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 [...]
@@ -502,6 +418,111 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 producerConf.setPartitionsRoutingMode(ProducerConfiguration::UseSinglePartition);
 producerConf.setLazyStartPartitionedProducers(<span class="hljs-literal">true</span>);
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" 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  [...]
+<p>Message <a href="/docs/ko/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<pre><code class="hljs css language-c++">ProducerConfiguration conf;
+conf.setBatchingEnabled(<span class="hljs-literal">false</span>);
+conf.setChunkingEnabled(<span class="hljs-literal">true</span>);
+Producer producer;
+client.createProducer(<span class="hljs-string">"my-topic"</span>, conf, producer);
+</code></pre>
+<blockquote>
+<p><strong>Note:</strong> To enable chunking, you need to disable batching (<code>setBatchingEnabled</code>=<code>false</code>) concurrently.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
+<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
+<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
+<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    Message msg;
+    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
+    <span class="hljs-comment">// consume 100 messages</span>
+    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
+        consumer.receive(msg);
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
+            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+        consumer.acknowledge(msg);
+        ctr++;
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+}
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+    messagesReceived++;
+    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
+}
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setMessageListener(listener);
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
+    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
+        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="configure-chunking"></a><a href="#configure-chunking" 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- [...]
+<p>You can limit the maximum number of chunked messages a consumer maintains concurrently by configuring the <code>setMaxPendingChunkedMessage</code> and <code>setAutoAckOldestChunkedMessageOnQueueFull</code> parameters. When the threshold is reached, the consumer drops pending messages by silently acknowledging them or asking the broker to redeliver them later.</p>
+<p>The following is an example of how to configure message chunking.</p>
+<pre><code class="hljs css language-c++">ConsumerConfiguration conf;
+conf.setAutoAckOldestChunkedMessageOnQueueFull(<span class="hljs-literal">true</span>);
+conf.setMaxPendingChunkedMessage(<span class="hljs-number">100</span>);
+Consumer consumer;
+client.subscribe(<span class="hljs-string">"my-topic"</span>, <span class="hljs-string">"my-sub"</span>, conf, consumer);
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="enable-authentication-in-connection-urls"></a><a href="#enable-authentication-in-connection-urls" 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  [...]
 <p>If you use TLS authentication when connecting to Pulsar, you need to add <code>ssl</code> in the connection URLs, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-cpp">ClientConfiguration config = ClientConfiguration();
@@ -555,7 +576,7 @@ client.subscribe(<span class="hljs-string">"topic-avro"</span>, <span class="hlj
 ​
 4. Create a consumer to receive a `User` instance.
 ​c++ ConsumerConfiguration consumerConf; consumerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); consumerConf.setSubscriptionInitialPosition(InitialPositionEarliest); Consumer consumer; client.subscribe(&quot;topic-protobuf&quot;, &quot;my-sub&quot;, consumerConf, consumer); Message msg; consumer.receive(msg); User user2; user2.ParseFromArray(msg.getData(), msg.getLength()); ```</code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/ko/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System requir [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/ko/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System requir [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ko/next/client-libraries-dotnet.html b/content/docs/ko/next/client-libraries-dotnet.html
index 7ca5b0a..2fde80e 100644
--- a/content/docs/ko/next/client-libraries-dotnet.html
+++ b/content/docs/ko/next/client-libraries-dotnet.html
@@ -243,10 +243,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>Messages can be acknowledged individually or cumulatively. For details about message acknowledgement, see <a href="/docs/ko/next/concepts-messaging#acknowledgement">acknowledgement</a>.</p>
 <ul>
 <li><p>Acknowledge messages individually.</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>Acknowledge messages cumulatively.</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/ko/next/client-libraries-dotnet/index.html b/content/docs/ko/next/client-libraries-dotnet/index.html
index 7ca5b0a..2fde80e 100644
--- a/content/docs/ko/next/client-libraries-dotnet/index.html
+++ b/content/docs/ko/next/client-libraries-dotnet/index.html
@@ -243,10 +243,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>Messages can be acknowledged individually or cumulatively. For details about message acknowledgement, see <a href="/docs/ko/next/concepts-messaging#acknowledgement">acknowledgement</a>.</p>
 <ul>
 <li><p>Acknowledge messages individually.</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>Acknowledge messages cumulatively.</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/ko/next/client-libraries-websocket.html b/content/docs/ko/next/client-libraries-websocket.html
index 8133f6d..b4a5e12 100644
--- a/content/docs/ko/next/client-libraries-websocket.html
+++ b/content/docs/ko/next/client-libraries-websocket.html
@@ -92,12 +92,12 @@
 <h3><a class="anchor" aria-hidden="true" id="as-a-separate-component"></a><a href="#as-a-separate-component" 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 [...]
 <p>In this mode, the WebSocket service will be run from a Pulsar <a href="/docs/ko/next/reference-terminology#broker">broker</a> as a separate service. Configuration for this mode is handled in the <a href="/docs/ko/next/reference-configuration#websocket"><code>conf/websocket.conf</code></a> configuration file. You'll need to set <em>at least</em> the following parameters:</p>
 <ul>
-<li><a href="/docs/ko/next/reference-configuration#websocket-configurationStoreServers"><code>configurationStoreServers</code></a></li>
+<li><a href="/docs/ko/next/reference-configuration#websocket"><code>configurationMetadataStoreUrl</code></a></li>
 <li><a href="/docs/ko/next/reference-configuration#websocket-webServicePort"><code>webServicePort</code></a></li>
 <li><a href="/docs/ko/next/reference-configuration#websocket-clusterName"><code>clusterName</code></a></li>
 </ul>
 <p>Here's an example:</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
 <span class="hljs-attr">webServicePort</span>=<span class="hljs-string">8080</span>
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">my-cluster</span>
 </code></pre>
diff --git a/content/docs/ko/next/client-libraries-websocket/index.html b/content/docs/ko/next/client-libraries-websocket/index.html
index 8133f6d..b4a5e12 100644
--- a/content/docs/ko/next/client-libraries-websocket/index.html
+++ b/content/docs/ko/next/client-libraries-websocket/index.html
@@ -92,12 +92,12 @@
 <h3><a class="anchor" aria-hidden="true" id="as-a-separate-component"></a><a href="#as-a-separate-component" 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 [...]
 <p>In this mode, the WebSocket service will be run from a Pulsar <a href="/docs/ko/next/reference-terminology#broker">broker</a> as a separate service. Configuration for this mode is handled in the <a href="/docs/ko/next/reference-configuration#websocket"><code>conf/websocket.conf</code></a> configuration file. You'll need to set <em>at least</em> the following parameters:</p>
 <ul>
-<li><a href="/docs/ko/next/reference-configuration#websocket-configurationStoreServers"><code>configurationStoreServers</code></a></li>
+<li><a href="/docs/ko/next/reference-configuration#websocket"><code>configurationMetadataStoreUrl</code></a></li>
 <li><a href="/docs/ko/next/reference-configuration#websocket-webServicePort"><code>webServicePort</code></a></li>
 <li><a href="/docs/ko/next/reference-configuration#websocket-clusterName"><code>clusterName</code></a></li>
 </ul>
 <p>Here's an example:</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
 <span class="hljs-attr">webServicePort</span>=<span class="hljs-string">8080</span>
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">my-cluster</span>
 </code></pre>
diff --git a/content/docs/ko/next/deploy-bare-metal-multi-cluster.html b/content/docs/ko/next/deploy-bare-metal-multi-cluster.html
index 6d1c08e..7fb101c 100644
--- a/content/docs/ko/next/deploy-bare-metal-multi-cluster.html
+++ b/content/docs/ko/next/deploy-bare-metal-multi-cluster.html
@@ -267,14 +267,14 @@ $ <span class="hljs-built_in">cd</span> apache-pulsar-2.9.1
 <p>Once you set up ZooKeeper, initialize cluster metadata, and spin up BookKeeper bookies, you can deploy brokers.</p>
 <h3><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-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-2-1 [...]
 <p>You can configure brokers using the <a href="/docs/ko/next/reference-configuration#broker"><code>conf/broker.conf</code></a> configuration file.</p>
-<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/ko/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> parameter to reflect the local quorum and the <a href="/docs/ko/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameter to reflect the [...]
+<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/ko/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> parameter to reflect the local quorum and the <a href="/docs/ko/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameter to reflect the configuration store quorum (although y [...]
 <p>You also need to specify the name of the <a href="/docs/ko/next/reference-terminology#cluster">cluster</a> to which the broker belongs using the <a href="/docs/ko/next/reference-configuration#broker-clusterName"><code>clusterName</code></a> parameter. In addition, you need to match the broker and web service ports provided when you initialize the metadata (especially when you use a different port from default) of the cluster.</p>
 <p>The following is an example configuration:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Local ZooKeeper servers</span>
-<span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 <span class="hljs-comment">
 # Configuration store quorum connection string.</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
 
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">us-west</span>
 <span class="hljs-comment">
diff --git a/content/docs/ko/next/deploy-bare-metal-multi-cluster/index.html b/content/docs/ko/next/deploy-bare-metal-multi-cluster/index.html
index 6d1c08e..7fb101c 100644
--- a/content/docs/ko/next/deploy-bare-metal-multi-cluster/index.html
+++ b/content/docs/ko/next/deploy-bare-metal-multi-cluster/index.html
@@ -267,14 +267,14 @@ $ <span class="hljs-built_in">cd</span> apache-pulsar-2.9.1
 <p>Once you set up ZooKeeper, initialize cluster metadata, and spin up BookKeeper bookies, you can deploy brokers.</p>
 <h3><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-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-2-1 [...]
 <p>You can configure brokers using the <a href="/docs/ko/next/reference-configuration#broker"><code>conf/broker.conf</code></a> configuration file.</p>
-<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/ko/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> parameter to reflect the local quorum and the <a href="/docs/ko/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameter to reflect the [...]
+<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/ko/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> parameter to reflect the local quorum and the <a href="/docs/ko/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameter to reflect the configuration store quorum (although y [...]
 <p>You also need to specify the name of the <a href="/docs/ko/next/reference-terminology#cluster">cluster</a> to which the broker belongs using the <a href="/docs/ko/next/reference-configuration#broker-clusterName"><code>clusterName</code></a> parameter. In addition, you need to match the broker and web service ports provided when you initialize the metadata (especially when you use a different port from default) of the cluster.</p>
 <p>The following is an example configuration:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Local ZooKeeper servers</span>
-<span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 <span class="hljs-comment">
 # Configuration store quorum connection string.</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
 
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">us-west</span>
 <span class="hljs-comment">
diff --git a/content/docs/ko/next/deploy-bare-metal.html b/content/docs/ko/next/deploy-bare-metal.html
index 05412d0..06c769c 100644
--- a/content/docs/ko/next/deploy-bare-metal.html
+++ b/content/docs/ko/next/deploy-bare-metal.html
@@ -335,9 +335,9 @@ $ <span class="hljs-built_in">echo</span> 1 &gt; data/zookeeper/myid
 <h2><a class="anchor" aria-hidden="true" id="deploy-pulsar-brokers"></a><a href="#deploy-pulsar-brokers" 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>Pulsar brokers are the last thing you need to deploy in your Pulsar cluster. Brokers handle Pulsar messages and provide the administrative interface of Pulsar. A good choice is to run <strong>3 brokers</strong>, one for each machine that already runs a BookKeeper bookie.</p>
 <h3><a class="anchor" aria-hidden="true" id="configure-brokers"></a><a href="#configure-brokers" 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- [...]
-<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/ko/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> and <a href="/docs/ko/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, [...]
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/ko/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> and <a href="/docs/ko/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, the <code>configurationMetadataStoreUr [...]
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
 <p>You also need to specify the cluster name (matching the name that you provided when you <a href="#initialize-cluster-metadata">initialize the metadata of the cluster</a>):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
diff --git a/content/docs/ko/next/deploy-bare-metal/index.html b/content/docs/ko/next/deploy-bare-metal/index.html
index 05412d0..06c769c 100644
--- a/content/docs/ko/next/deploy-bare-metal/index.html
+++ b/content/docs/ko/next/deploy-bare-metal/index.html
@@ -335,9 +335,9 @@ $ <span class="hljs-built_in">echo</span> 1 &gt; data/zookeeper/myid
 <h2><a class="anchor" aria-hidden="true" id="deploy-pulsar-brokers"></a><a href="#deploy-pulsar-brokers" 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>Pulsar brokers are the last thing you need to deploy in your Pulsar cluster. Brokers handle Pulsar messages and provide the administrative interface of Pulsar. A good choice is to run <strong>3 brokers</strong>, one for each machine that already runs a BookKeeper bookie.</p>
 <h3><a class="anchor" aria-hidden="true" id="configure-brokers"></a><a href="#configure-brokers" 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- [...]
-<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/ko/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> and <a href="/docs/ko/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, [...]
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/ko/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> and <a href="/docs/ko/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, the <code>configurationMetadataStoreUr [...]
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
 <p>You also need to specify the cluster name (matching the name that you provided when you <a href="#initialize-cluster-metadata">initialize the metadata of the cluster</a>):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
diff --git a/content/docs/ko/next/develop-binary-protocol.html b/content/docs/ko/next/develop-binary-protocol.html
index f81783d..d276b6c 100644
--- a/content/docs/ko/next/develop-binary-protocol.html
+++ b/content/docs/ko/next/develop-binary-protocol.html
@@ -230,7 +230,7 @@
 </code></pre>
 <p>Parameters: * <code>request_id</code> → Original id of the <code>CreateProducer</code> request * <code>producer_name</code> → Generated globally unique producer name or the name specified by the client, if any.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-send"></a><a href="#command-send" 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. [...]
-<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
+<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. If a producer has not yet been created for the connection, the broker will terminate the connection. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/ko/next/develop-binary-protocol/index.html b/content/docs/ko/next/develop-binary-protocol/index.html
index f81783d..d276b6c 100644
--- a/content/docs/ko/next/develop-binary-protocol/index.html
+++ b/content/docs/ko/next/develop-binary-protocol/index.html
@@ -230,7 +230,7 @@
 </code></pre>
 <p>Parameters: * <code>request_id</code> → Original id of the <code>CreateProducer</code> request * <code>producer_name</code> → Generated globally unique producer name or the name specified by the client, if any.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-send"></a><a href="#command-send" 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. [...]
-<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
+<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. If a producer has not yet been created for the connection, the broker will terminate the connection. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/ko/next/reference-configuration.html b/content/docs/ko/next/reference-configuration.html
index 2608690..789ef52 100644
--- a/content/docs/ko/next/reference-configuration.html
+++ b/content/docs/ko/next/reference-configuration.html
@@ -209,7 +209,7 @@
 <p>If there are multiple listeners, separate them with commas.</p>
 <p><strong>Note</strong>: do not use this configuration with <code>advertisedAddress</code> and <code>brokerServicePort</code>. If the value of this configuration is empty, the broker uses <code>advertisedAddress</code> and <code>brokerServicePort</code>|/| |internalListenerName|Specify the internal listener name for the broker.</p>
 <p><strong>Note</strong>: the listener name must be contained in <code>advertisedListeners</code>.</p>
-<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
+<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
 <ul>
 <li><p>'producer_request_hold' Policy which holds producer's send request until the resource becomes available (or holding times out)</p></li>
 <li><p>'producer_exception' Policy which throws <code>javax.jms.ResourceAllocationException</code> to the producer</p></li>
@@ -218,7 +218,7 @@
 <li><p><code>delete_when_no_subscriptions</code>: delete the topic which has no subscriptions or active producers.</p>
 <ul>
 <li><p><code>delete_when_subscriptions_caught_up</code>: delete the topic whose subscriptions have no backlogs and which has no active producers or consumers. | <code>delete_when_no_subscriptions</code> | | brokerDeleteInactiveTopicsMaxInactiveDurationSeconds | Set the maximum duration for inactive topics. If it is not specified, the <code>brokerDeleteInactiveTopicsFrequencySeconds</code> parameter is adopted. | N/A | |forceDeleteTenantAllowed| Enable you to delete a tenant forcefully. | [...]
-<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
+<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
 <p>Setting this configuration to a value <strong>greater than 0</strong> deletes inactive subscriptions automatically.<br>
 Setting this configuration to <strong>0</strong> does not delete inactive subscriptions automatically.</p>
 <p>Since this configuration takes effect on all topics, if there is even one topic whose subscriptions should not be deleted automatically, you need to set it to 0.<br>
@@ -235,7 +235,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
     - `org.apache.pulsar.broker.loadbalance.impl.OverloadShedder`
     - `org.apache.pulsar.broker.loadbalance.impl.UniformLoadShedder`
       
-    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
+    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
     |haProxyProtocolEnabled | Enable or disable the [HAProxy](http://www.haproxy.org/) protocol. |false| | maxTopicsPerNamespace | The maximum number of persistent topics that can be created in the namespace. When the number of topics reaches this threshold, the broker rejects the request of creating a new topic, including the auto-created topics by the producer or consumer, until the number of connected consumers decreases. The default value 0 disables the check. | 0 | |subscriptionType [...]
       
     Available options are `NONE`, `LZ4`, `ZLIB`, `ZSTD`, and `SNAPPY`).   
@@ -264,6 +264,20 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
       
     Example  
     enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ### Deprecated Parameters
+    
+    The following parameters have been deprecated.
+    
+    | Name                                         | Description                                                                                                     | Default |
+    | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------- |
+    | backlogQuotaDefaultLimitGB                   | Use `backlogQuotaDefaultLimitBytes` instead.                                                                    | -1      |
+    | brokerServicePurgeInactiveFrequencyInSeconds | Use `brokerDeleteInactiveTopicsFrequencySeconds`.                                                               | 60      |
+    | tlsEnabled                                   | Use `webServicePortTls` and `brokerServicePortTls` instead.                                                     | false   |
+    | replicationTlsEnabled                        | Enable TLS when talking with other clusters to replicate messages. Use `brokerClientTlsEnabled` instead.        | false   |
+    | subscriptionKeySharedEnable                  | Whether to enable the Key_Shared subscription. Use `subscriptionTypesEnabled` instead.                          | true    |
+    | zookeeperServers                             | Zookeeper quorum connection string. Use `metadataStoreUrl` instead.                                             | N/A     |
+    | configurationStoreServers                    | Configuration store connection string (as a comma-separated list). Use `configurationMetadataStoreUrl` instead. | N/A     |
+    
     ## Client
     
     You can use the [`pulsar-client`](/docs/ko/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
@@ -337,7 +351,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
                                     
                                     | Name                                 | Description                            | Default |
                                     | ------------------------------------ | -------------------------------------- | ------- |
-                                    | configurationStoreServers            |                                        |         |
+                                    | configurationMetadataStoreUrl        |                                        |         |
                                     | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
                                     | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
                                     | serviceUrl                           |                                        |         |
diff --git a/content/docs/ko/next/reference-configuration/index.html b/content/docs/ko/next/reference-configuration/index.html
index 2608690..789ef52 100644
--- a/content/docs/ko/next/reference-configuration/index.html
+++ b/content/docs/ko/next/reference-configuration/index.html
@@ -209,7 +209,7 @@
 <p>If there are multiple listeners, separate them with commas.</p>
 <p><strong>Note</strong>: do not use this configuration with <code>advertisedAddress</code> and <code>brokerServicePort</code>. If the value of this configuration is empty, the broker uses <code>advertisedAddress</code> and <code>brokerServicePort</code>|/| |internalListenerName|Specify the internal listener name for the broker.</p>
 <p><strong>Note</strong>: the listener name must be contained in <code>advertisedListeners</code>.</p>
-<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
+<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
 <ul>
 <li><p>'producer_request_hold' Policy which holds producer's send request until the resource becomes available (or holding times out)</p></li>
 <li><p>'producer_exception' Policy which throws <code>javax.jms.ResourceAllocationException</code> to the producer</p></li>
@@ -218,7 +218,7 @@
 <li><p><code>delete_when_no_subscriptions</code>: delete the topic which has no subscriptions or active producers.</p>
 <ul>
 <li><p><code>delete_when_subscriptions_caught_up</code>: delete the topic whose subscriptions have no backlogs and which has no active producers or consumers. | <code>delete_when_no_subscriptions</code> | | brokerDeleteInactiveTopicsMaxInactiveDurationSeconds | Set the maximum duration for inactive topics. If it is not specified, the <code>brokerDeleteInactiveTopicsFrequencySeconds</code> parameter is adopted. | N/A | |forceDeleteTenantAllowed| Enable you to delete a tenant forcefully. | [...]
-<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
+<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
 <p>Setting this configuration to a value <strong>greater than 0</strong> deletes inactive subscriptions automatically.<br>
 Setting this configuration to <strong>0</strong> does not delete inactive subscriptions automatically.</p>
 <p>Since this configuration takes effect on all topics, if there is even one topic whose subscriptions should not be deleted automatically, you need to set it to 0.<br>
@@ -235,7 +235,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
     - `org.apache.pulsar.broker.loadbalance.impl.OverloadShedder`
     - `org.apache.pulsar.broker.loadbalance.impl.UniformLoadShedder`
       
-    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
+    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
     |haProxyProtocolEnabled | Enable or disable the [HAProxy](http://www.haproxy.org/) protocol. |false| | maxTopicsPerNamespace | The maximum number of persistent topics that can be created in the namespace. When the number of topics reaches this threshold, the broker rejects the request of creating a new topic, including the auto-created topics by the producer or consumer, until the number of connected consumers decreases. The default value 0 disables the check. | 0 | |subscriptionType [...]
       
     Available options are `NONE`, `LZ4`, `ZLIB`, `ZSTD`, and `SNAPPY`).   
@@ -264,6 +264,20 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
       
     Example  
     enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ### Deprecated Parameters
+    
+    The following parameters have been deprecated.
+    
+    | Name                                         | Description                                                                                                     | Default |
+    | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------- |
+    | backlogQuotaDefaultLimitGB                   | Use `backlogQuotaDefaultLimitBytes` instead.                                                                    | -1      |
+    | brokerServicePurgeInactiveFrequencyInSeconds | Use `brokerDeleteInactiveTopicsFrequencySeconds`.                                                               | 60      |
+    | tlsEnabled                                   | Use `webServicePortTls` and `brokerServicePortTls` instead.                                                     | false   |
+    | replicationTlsEnabled                        | Enable TLS when talking with other clusters to replicate messages. Use `brokerClientTlsEnabled` instead.        | false   |
+    | subscriptionKeySharedEnable                  | Whether to enable the Key_Shared subscription. Use `subscriptionTypesEnabled` instead.                          | true    |
+    | zookeeperServers                             | Zookeeper quorum connection string. Use `metadataStoreUrl` instead.                                             | N/A     |
+    | configurationStoreServers                    | Configuration store connection string (as a comma-separated list). Use `configurationMetadataStoreUrl` instead. | N/A     |
+    
     ## Client
     
     You can use the [`pulsar-client`](/docs/ko/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
@@ -337,7 +351,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
                                     
                                     | Name                                 | Description                            | Default |
                                     | ------------------------------------ | -------------------------------------- | ------- |
-                                    | configurationStoreServers            |                                        |         |
+                                    | configurationMetadataStoreUrl        |                                        |         |
                                     | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
                                     | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
                                     | serviceUrl                           |                                        |         |
diff --git a/content/docs/zh-CN/next/administration-proxy.html b/content/docs/zh-CN/next/administration-proxy.html
index 40b5f08..a0f4899 100644
--- a/content/docs/zh-CN/next/administration-proxy.html
+++ b/content/docs/zh-CN/next/administration-proxy.html
@@ -99,8 +99,8 @@
 <p>注意:如果不使用 Pulsar Functions,则不需要配置 <code>functionWorkerWebServiceURL</code>。</p>
 <h3><a class="anchor" aria-hidden="true" id="使用服务发现"></a><a href="#使用服务发现" 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. [...]
 <p>Pulsar uses <a href="https://zookeeper.apache.org">ZooKeeper</a> for service discovery. To connect the proxy to ZooKeeper, specify the following in <code>conf/proxy.conf</code>.</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk-0,zk-1,zk-2</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk-0:2184,zk-remote:2184</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2181,my-zk-1:2181,my-zk-2:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2184,my-zk-remote:2184</span>
 </code></pre>
 <blockquote>
 <p>要使用服务发现,必须开启网络 ACL,proxy 通过端口 <code>2181</code>(本地 ZooKeeper 集群)或 <code>2184</code>(配置存储集群)连接到 ZooKeeper 节点。</p>
diff --git a/content/docs/zh-CN/next/administration-proxy/index.html b/content/docs/zh-CN/next/administration-proxy/index.html
index 40b5f08..a0f4899 100644
--- a/content/docs/zh-CN/next/administration-proxy/index.html
+++ b/content/docs/zh-CN/next/administration-proxy/index.html
@@ -99,8 +99,8 @@
 <p>注意:如果不使用 Pulsar Functions,则不需要配置 <code>functionWorkerWebServiceURL</code>。</p>
 <h3><a class="anchor" aria-hidden="true" id="使用服务发现"></a><a href="#使用服务发现" 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. [...]
 <p>Pulsar uses <a href="https://zookeeper.apache.org">ZooKeeper</a> for service discovery. To connect the proxy to ZooKeeper, specify the following in <code>conf/proxy.conf</code>.</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk-0,zk-1,zk-2</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk-0:2184,zk-remote:2184</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2181,my-zk-1:2181,my-zk-2:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2184,my-zk-remote:2184</span>
 </code></pre>
 <blockquote>
 <p>要使用服务发现,必须开启网络 ACL,proxy 通过端口 <code>2181</code>(本地 ZooKeeper 集群)或 <code>2184</code>(配置存储集群)连接到 ZooKeeper 节点。</p>
diff --git a/content/docs/zh-CN/next/client-libraries-cpp.html b/content/docs/zh-CN/next/client-libraries-cpp.html
index 9edab13..a077f65 100644
--- a/content/docs/zh-CN/next/client-libraries-cpp.html
+++ b/content/docs/zh-CN/next/client-libraries-cpp.html
@@ -316,94 +316,10 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <p>如果您使用 TLS 身份验证,您需要添加 <code>ssl</code>,默认端口是 <code>6651</code>。 以下是一个例子。</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="创建一个-consumer"></a><a href="#创建一个-consumer" 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 [...]
-<p>若要使用 Pulsar 作为 consumer,您需要在 C++ 客户端创建一个 consumer。 有两种使用消费者的主要方式: -<a href=“#blocking-example”>阻塞模式</a>:同步调用<code>receive(msg)</code>。 - <a href="#consumer-with-a-message-listener">无阻塞模式</a> (基于事件) 风格:使用消息监听器。</p>
-<h3><a class="anchor" aria-hidden="true" id="阻塞示例"></a><a href="#阻塞示例" 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>这种方法的好处就是代码简单。 只需不断调用 <code>receive(msg)</code> 阻塞直到收到消息。</p>
-<p>此示例在最早的偏移量开始订阅并消费100条消息。</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    Message msg;
-    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
-    <span class="hljs-comment">// consume 100 messages</span>
-    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
-        consumer.receive(msg);
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
-            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-        consumer.acknowledge(msg);
-        ctr++;
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h3><a class="anchor" aria-hidden="true" id="消息监听器"></a><a href="#消息监听器" 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.09 [...]
-<p>你可以不运行循环阻塞方式,而选择调用基于事件的消息监听方式来接收每一条消息。</p>
-<p>此示例在最早的偏移量开始订阅并消费100条消息。</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-}
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-    messagesReceived++;
-    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
-}
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setMessageListener(listener);
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
-    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
-        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="创建一个-producer"></a><a href="#创建一个-producer" 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 [...]
-<p>若要使用 Pulsar 作为 producer,您需要在 C++ 客户端创建一个 producer。 使用生产者有两种主要方式: - <a href="#simple-blocking-example">阻塞模式</a> : 每次调用 <code>发送</code> 都需要等待 broker端的确认答复。 - <a href="#non-blocking-example">无阻挡异步方式</a> : 调用 <code>sendAsync</code> 而不是 <code>send</code> 并当 broker 返回 ack 时会收到回调 。</p>
+<h2><a class="anchor" aria-hidden="true" id="create-a-producer"></a><a href="#create-a-producer" 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- [...]
+<p>To use Pulsar as a producer, you need to create a producer on the C++ client. There are two main ways of using a producer: - <a href="#simple-blocking-example">Blocking style</a> : each call to <code>send</code> waits for an ack from the broker. - <a href="#non-blocking-example">Non-blocking asynchronous style</a> : <code>sendAsync</code> is called instead of <code>send</code> and a callback is supplied for when the ack is received from the broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="简单的阻塞示例"></a><a href="#简单的阻塞示例" 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- [...]
-<p>此示例使用阻止方式发送 100 条消息。 虽然简单,但它不会产生高吞吐量,因为它在发送下一条消息之前等待每个 ack 返回。</p>
+<p>This example sends 100 messages using the blocking style. While simple, it does not produce high throughput as it waits for each ack to come back before sending the next message.</p>
 <pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
 <span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
 
@@ -443,7 +359,7 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <h3><a class="anchor" aria-hidden="true" id="非阻塞示例"></a><a href="#非阻塞示例" 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.09 [...]
 <p>此示例使用非阻塞方式发送100条消息并使用 <code>sendAsync</code> 代替 <code>send</code> 。 这使得生产者可以并行发送多条消息,从而提高吞吐量。</p>
 <p>生产者配置<code>blockIfQueueFull</code>在这里很有用,可以避免传出发送请求的内部队列已满时出现<code>ResultProducerQueueIsFull</code>错误。 一旦内部队列已满, <code>sendAsync</code> 就会变成阻塞,使您的代码变得更加简单。</p>
-<p>如果没有这个配置,结果代码 <code>ResultProducerQueueIsFull</code> 将会传给回调函数。 您必须决定如何处理(重试、丢弃等)。</p>
+<p>Without this configuration, the result code <code>ResultProducerQueueIsFull</code> is passed to the callback. You must decide how to deal with that (retry, discard etc).</p>
 <pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
 <span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
 
@@ -496,15 +412,120 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="分区主题和懒惰生产者"></a><a href="#分区主题和懒惰生产者" 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 [...]
 <p>在扩展 Pulsar 主题时,您可以将主题配置成数百个分区。 同样,您也可以扩展您的生产者,从数百个到数千个生产者。 这可能会给 Pulsar brokers 带来一些压力,因为当你在分区主题上创建生产者时,内部会为每个分区创建一个内部生产者,这涉及到每个分区与 brokers 的通信。 因此,对于一个有1000个分区和1000个生产者的主题,它最终在生产者应用程序之间创建了1,000,000个内部生产者,每个生产者应用程序都必须与 broker 通信,以确定它应该连接到哪个 broker ,然后执行连接握手。</p>
-<p>您可以通过执行以下操作来减少由于大量分区和多个生产者组合而造成的影响: - 使用 SinglePartition 分区路由模式(这确保所有消息只发送到单个随机选择的分区)。 - 使用 non-keyed 消息(当消息被哈希时,路由基于键的哈希值,因此消息最终会被发送到多个分区)。 - 使用惰性生产者(这确保只有在消息需要路由到分区时才需要创建内部生产者)</p>
+<p>You can reduce the load caused by this combination of a large number of partitions and many producers by doing the following: - use SinglePartition partition routing mode (this ensures that all messages are only sent to a single, randomly selected partition) - use non-keyed messages (when messages are keyed, routing is based on the hash of the key and so messages will end up being sent to multiple partitions) - use lazy producers (this ensures that an internal producer is only created [...]
 <p>通过我们上面的例子,这将1000个生产者应用程序的内部生产者数量从1000000减少到了1000。</p>
-<p>注意发送的第一条消息可能会有额外的延迟。如果设置较低的发送超时,如果初始连接握手完成较慢时可能会超时。</p>
+<p>Note that there can be extra latency for the first message sent. If you set a low send timeout, this timeout could be reached if the initial connection handshake is slow to complete.</p>
 <pre><code class="hljs css language-c++">ProducerConfiguration producerConf;
 producerConf.setPartitionsRoutingMode(ProducerConfiguration::UseSinglePartition);
 producerConf.setLazyStartPartitionedProducers(<span class="hljs-literal">true</span>);
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" 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  [...]
+<p>Message <a href="/docs/zh-CN/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<pre><code class="hljs css language-c++">ProducerConfiguration conf;
+conf.setBatchingEnabled(<span class="hljs-literal">false</span>);
+conf.setChunkingEnabled(<span class="hljs-literal">true</span>);
+Producer producer;
+client.createProducer(<span class="hljs-string">"my-topic"</span>, conf, producer);
+</code></pre>
+<blockquote>
+<p><strong>Note:</strong> To enable chunking, you need to disable batching (<code>setBatchingEnabled</code>=<code>false</code>) concurrently.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
+<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
+<h3><a class="anchor" aria-hidden="true" id="阻塞示例"></a><a href="#阻塞示例" 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>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
+<p>此示例在最早的偏移量开始订阅并消费100条消息。</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    Message msg;
+    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
+    <span class="hljs-comment">// consume 100 messages</span>
+    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
+        consumer.receive(msg);
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
+            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+        consumer.acknowledge(msg);
+        ctr++;
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="消息监听器"></a><a href="#消息监听器" 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.09 [...]
+<p>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
+<p>此示例在最早的偏移量开始订阅并消费100条消息。</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+}
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+    messagesReceived++;
+    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
+}
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setMessageListener(listener);
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
+    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
+        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="configure-chunking"></a><a href="#configure-chunking" 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- [...]
+<p>You can limit the maximum number of chunked messages a consumer maintains concurrently by configuring the <code>setMaxPendingChunkedMessage</code> and <code>setAutoAckOldestChunkedMessageOnQueueFull</code> parameters. When the threshold is reached, the consumer drops pending messages by silently acknowledging them or asking the broker to redeliver them later.</p>
+<p>The following is an example of how to configure message chunking.</p>
+<pre><code class="hljs css language-c++">ConsumerConfiguration conf;
+conf.setAutoAckOldestChunkedMessageOnQueueFull(<span class="hljs-literal">true</span>);
+conf.setMaxPendingChunkedMessage(<span class="hljs-number">100</span>);
+Consumer consumer;
+client.subscribe(<span class="hljs-string">"my-topic"</span>, <span class="hljs-string">"my-sub"</span>, conf, consumer);
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="启用连接-url-的身份验证"></a><a href="#启用连接-url-的身份验证" 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- [...]
-<p>如果您连接到 Pulsar 时使用 TLS 身份验证, 您需要在连接 URL 中添加 <code>ssl</code> ,默认端口是 <code>6651</code>。 以下是一个例子。</p>
+<p>If you use TLS authentication when connecting to Pulsar, you need to add <code>ssl</code> in the connection URLs, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-cpp">ClientConfiguration config = ClientConfiguration();
 config.setUseTls(<span class="hljs-literal">true</span>);
 config.setTlsTrustCertsFilePath(<span class="hljs-string">"/path/to/cacert.pem"</span>);
@@ -514,9 +535,9 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-<p>如需完整的示例,请参阅 <a href="https://github.com/apache/pulsar/tree/master/pulsar-client-cpp/examples">C++ 客户端示例</a>。</p>
+<p>For complete examples, refer to <a href="https://github.com/apache/pulsar/tree/master/pulsar-client-cpp/examples">C++ client examples</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="schema"></a><a href="#schema" 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. [...]
-<p>本节描述了一些示例关于结构的示例。欲了解更多有关结构的信息,请参阅 <a href="/docs/zh-CN/next/schema-get-started">Pulsar schema</a>。</p>
+<p>This section describes some examples about schema. For more information about schema, see <a href="/docs/zh-CN/next/schema-get-started">Pulsar schema</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="avro-模式"></a><a href="#avro-模式" 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- [...]
 <ul>
 <li><p>下面的示例演示如何使用 Avro schema 创建一个 producer。</p>
@@ -539,14 +560,25 @@ client.subscribe(<span class="hljs-string">"topic-avro"</span>, <span class="hlj
 </code></pre></li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="protobufnative-模式"></a><a href="#protobufnative-模式" 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- [...]
-<p>下面的示例演示如何使用 ProtobufNative 模式创建生产者和消费者。 1. 使用 Protobuf3 生成 <code>User</code> 类。</p>
-<pre><code class="hljs">&gt; **注意**  
-&gt; 你需要使用 Protobuf3 或者最新版本.
+<p>The following example shows how to create a producer and a consumer with a ProtobufNative schema. ​ 1. Generate the <code>User</code> class using Protobuf3.</p>
+<pre><code class="hljs">&gt; **Note**  
+&gt; You need to use Protobuf3 or later versions.
 </code></pre>
 <p>​ ```protobuf syntax = &quot;proto3&quot;;</p>
-<p>message User { string name = 1; int32 age = 2; } <code>2. 在你的源代码中包含 `ProtobufNativeSchema.h` 。确保你的项目中添加了Protobuf 依赖关系。</code>c++ #include &lt;pulsar/ProtobufNativeSchema.h&gt; <code>3. 创建一个生产者来发送一个 `User` 实例。</code>c++ ProducerConfiguration producerConf; producerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); Producer producer; client.createProducer(&quot;topic-protobuf&quot;, producerConf, producer); User user; user.set_name(&quot;my-name&quot;); user.set_age(10);  [...]
+<p>message User { string name = 1; int32 age = 2; }</p>
+<pre><code class="hljs">​
+2. Include the `ProtobufNativeSchema.h` in your source code. Ensure the Protobuf dependency has been added to your project.
+​c++ #include &lt;pulsar/ProtobufNativeSchema.h&gt; 
+
+​
+3. Create a producer to send a `User` instance.
+​c++ ProducerConfiguration producerConf; producerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); Producer producer; client.createProducer(&quot;topic-protobuf&quot;, producerConf, producer); User user; user.set_name(&quot;my-name&quot;); user.set_age(10); std::string content; user.SerializeToString(&amp;content); producer.send(MessageBuilder().setContent(content).build()); 
+
+​
+4. Create a consumer to receive a `User` instance.
+​c++ ConsumerConfiguration consumerConf; consumerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); consumerConf.setSubscriptionInitialPosition(InitialPositionEarliest); Consumer consumer; client.subscribe(&quot;topic-protobuf&quot;, &quot;my-sub&quot;, consumerConf, consumer); Message msg; consumer.receive(msg); User user2; user2.ParseFromArray(msg.getData(), msg.getLength()); ```</code></pre>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/next/client-libraries-node"><span>Node.js
-</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#支持的平台">支持的平台</a></li><li><a href="#系统要求">系统要求</a></li><li><a href="#linux">Linux</a><ul class="toc-headings"><li><a href="#编译">编译</a></li><li><a href="#安装依赖项">安装依赖项</a></li><li><a href="#安装-rpm">安装 RPM</a></li><li><a href="#安装-debian">安装 Debian</a></li><li><a href="#编译-1">编译</a></li></ul></li><li><a href="#macos">MacOS</a><ul class="toc-headings"><li><a href="#编译-2 [...]
+</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#支持的平台">支持的平台</a></li><li><a href="#系统要求">系统要求</a></li><li><a href="#linux">Linux</a><ul class="toc-headings"><li><a href="#编译">编译</a></li><li><a href="#安装依赖项">安装依赖项</a></li><li><a href="#安装-rpm">安装 RPM</a></li><li><a href="#安装-debian">安装 Debian</a></li><li><a href="#编译-1">编译</a></li></ul></li><li><a href="#macos">MacOS</a><ul class="toc-headings"><li><a href="#编译-2 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/client-libraries-cpp/index.html b/content/docs/zh-CN/next/client-libraries-cpp/index.html
index 9edab13..a077f65 100644
--- a/content/docs/zh-CN/next/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/next/client-libraries-cpp/index.html
@@ -316,94 +316,10 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <p>如果您使用 TLS 身份验证,您需要添加 <code>ssl</code>,默认端口是 <code>6651</code>。 以下是一个例子。</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="创建一个-consumer"></a><a href="#创建一个-consumer" 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 [...]
-<p>若要使用 Pulsar 作为 consumer,您需要在 C++ 客户端创建一个 consumer。 有两种使用消费者的主要方式: -<a href=“#blocking-example”>阻塞模式</a>:同步调用<code>receive(msg)</code>。 - <a href="#consumer-with-a-message-listener">无阻塞模式</a> (基于事件) 风格:使用消息监听器。</p>
-<h3><a class="anchor" aria-hidden="true" id="阻塞示例"></a><a href="#阻塞示例" 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>这种方法的好处就是代码简单。 只需不断调用 <code>receive(msg)</code> 阻塞直到收到消息。</p>
-<p>此示例在最早的偏移量开始订阅并消费100条消息。</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    Message msg;
-    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
-    <span class="hljs-comment">// consume 100 messages</span>
-    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
-        consumer.receive(msg);
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
-            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-        consumer.acknowledge(msg);
-        ctr++;
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h3><a class="anchor" aria-hidden="true" id="消息监听器"></a><a href="#消息监听器" 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.09 [...]
-<p>你可以不运行循环阻塞方式,而选择调用基于事件的消息监听方式来接收每一条消息。</p>
-<p>此示例在最早的偏移量开始订阅并消费100条消息。</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-}
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-    messagesReceived++;
-    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
-}
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setMessageListener(listener);
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
-    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
-        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="创建一个-producer"></a><a href="#创建一个-producer" 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 [...]
-<p>若要使用 Pulsar 作为 producer,您需要在 C++ 客户端创建一个 producer。 使用生产者有两种主要方式: - <a href="#simple-blocking-example">阻塞模式</a> : 每次调用 <code>发送</code> 都需要等待 broker端的确认答复。 - <a href="#non-blocking-example">无阻挡异步方式</a> : 调用 <code>sendAsync</code> 而不是 <code>send</code> 并当 broker 返回 ack 时会收到回调 。</p>
+<h2><a class="anchor" aria-hidden="true" id="create-a-producer"></a><a href="#create-a-producer" 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- [...]
+<p>To use Pulsar as a producer, you need to create a producer on the C++ client. There are two main ways of using a producer: - <a href="#simple-blocking-example">Blocking style</a> : each call to <code>send</code> waits for an ack from the broker. - <a href="#non-blocking-example">Non-blocking asynchronous style</a> : <code>sendAsync</code> is called instead of <code>send</code> and a callback is supplied for when the ack is received from the broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="简单的阻塞示例"></a><a href="#简单的阻塞示例" 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- [...]
-<p>此示例使用阻止方式发送 100 条消息。 虽然简单,但它不会产生高吞吐量,因为它在发送下一条消息之前等待每个 ack 返回。</p>
+<p>This example sends 100 messages using the blocking style. While simple, it does not produce high throughput as it waits for each ack to come back before sending the next message.</p>
 <pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
 <span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
 
@@ -443,7 +359,7 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <h3><a class="anchor" aria-hidden="true" id="非阻塞示例"></a><a href="#非阻塞示例" 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.09 [...]
 <p>此示例使用非阻塞方式发送100条消息并使用 <code>sendAsync</code> 代替 <code>send</code> 。 这使得生产者可以并行发送多条消息,从而提高吞吐量。</p>
 <p>生产者配置<code>blockIfQueueFull</code>在这里很有用,可以避免传出发送请求的内部队列已满时出现<code>ResultProducerQueueIsFull</code>错误。 一旦内部队列已满, <code>sendAsync</code> 就会变成阻塞,使您的代码变得更加简单。</p>
-<p>如果没有这个配置,结果代码 <code>ResultProducerQueueIsFull</code> 将会传给回调函数。 您必须决定如何处理(重试、丢弃等)。</p>
+<p>Without this configuration, the result code <code>ResultProducerQueueIsFull</code> is passed to the callback. You must decide how to deal with that (retry, discard etc).</p>
 <pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
 <span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
 
@@ -496,15 +412,120 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="分区主题和懒惰生产者"></a><a href="#分区主题和懒惰生产者" 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 [...]
 <p>在扩展 Pulsar 主题时,您可以将主题配置成数百个分区。 同样,您也可以扩展您的生产者,从数百个到数千个生产者。 这可能会给 Pulsar brokers 带来一些压力,因为当你在分区主题上创建生产者时,内部会为每个分区创建一个内部生产者,这涉及到每个分区与 brokers 的通信。 因此,对于一个有1000个分区和1000个生产者的主题,它最终在生产者应用程序之间创建了1,000,000个内部生产者,每个生产者应用程序都必须与 broker 通信,以确定它应该连接到哪个 broker ,然后执行连接握手。</p>
-<p>您可以通过执行以下操作来减少由于大量分区和多个生产者组合而造成的影响: - 使用 SinglePartition 分区路由模式(这确保所有消息只发送到单个随机选择的分区)。 - 使用 non-keyed 消息(当消息被哈希时,路由基于键的哈希值,因此消息最终会被发送到多个分区)。 - 使用惰性生产者(这确保只有在消息需要路由到分区时才需要创建内部生产者)</p>
+<p>You can reduce the load caused by this combination of a large number of partitions and many producers by doing the following: - use SinglePartition partition routing mode (this ensures that all messages are only sent to a single, randomly selected partition) - use non-keyed messages (when messages are keyed, routing is based on the hash of the key and so messages will end up being sent to multiple partitions) - use lazy producers (this ensures that an internal producer is only created [...]
 <p>通过我们上面的例子,这将1000个生产者应用程序的内部生产者数量从1000000减少到了1000。</p>
-<p>注意发送的第一条消息可能会有额外的延迟。如果设置较低的发送超时,如果初始连接握手完成较慢时可能会超时。</p>
+<p>Note that there can be extra latency for the first message sent. If you set a low send timeout, this timeout could be reached if the initial connection handshake is slow to complete.</p>
 <pre><code class="hljs css language-c++">ProducerConfiguration producerConf;
 producerConf.setPartitionsRoutingMode(ProducerConfiguration::UseSinglePartition);
 producerConf.setLazyStartPartitionedProducers(<span class="hljs-literal">true</span>);
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" 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  [...]
+<p>Message <a href="/docs/zh-CN/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<pre><code class="hljs css language-c++">ProducerConfiguration conf;
+conf.setBatchingEnabled(<span class="hljs-literal">false</span>);
+conf.setChunkingEnabled(<span class="hljs-literal">true</span>);
+Producer producer;
+client.createProducer(<span class="hljs-string">"my-topic"</span>, conf, producer);
+</code></pre>
+<blockquote>
+<p><strong>Note:</strong> To enable chunking, you need to disable batching (<code>setBatchingEnabled</code>=<code>false</code>) concurrently.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
+<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
+<h3><a class="anchor" aria-hidden="true" id="阻塞示例"></a><a href="#阻塞示例" 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>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
+<p>此示例在最早的偏移量开始订阅并消费100条消息。</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    Message msg;
+    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
+    <span class="hljs-comment">// consume 100 messages</span>
+    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
+        consumer.receive(msg);
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
+            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+        consumer.acknowledge(msg);
+        ctr++;
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="消息监听器"></a><a href="#消息监听器" 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.09 [...]
+<p>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
+<p>此示例在最早的偏移量开始订阅并消费100条消息。</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+}
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+    messagesReceived++;
+    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
+}
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setMessageListener(listener);
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
+    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
+        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="configure-chunking"></a><a href="#configure-chunking" 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- [...]
+<p>You can limit the maximum number of chunked messages a consumer maintains concurrently by configuring the <code>setMaxPendingChunkedMessage</code> and <code>setAutoAckOldestChunkedMessageOnQueueFull</code> parameters. When the threshold is reached, the consumer drops pending messages by silently acknowledging them or asking the broker to redeliver them later.</p>
+<p>The following is an example of how to configure message chunking.</p>
+<pre><code class="hljs css language-c++">ConsumerConfiguration conf;
+conf.setAutoAckOldestChunkedMessageOnQueueFull(<span class="hljs-literal">true</span>);
+conf.setMaxPendingChunkedMessage(<span class="hljs-number">100</span>);
+Consumer consumer;
+client.subscribe(<span class="hljs-string">"my-topic"</span>, <span class="hljs-string">"my-sub"</span>, conf, consumer);
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="启用连接-url-的身份验证"></a><a href="#启用连接-url-的身份验证" 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- [...]
-<p>如果您连接到 Pulsar 时使用 TLS 身份验证, 您需要在连接 URL 中添加 <code>ssl</code> ,默认端口是 <code>6651</code>。 以下是一个例子。</p>
+<p>If you use TLS authentication when connecting to Pulsar, you need to add <code>ssl</code> in the connection URLs, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-cpp">ClientConfiguration config = ClientConfiguration();
 config.setUseTls(<span class="hljs-literal">true</span>);
 config.setTlsTrustCertsFilePath(<span class="hljs-string">"/path/to/cacert.pem"</span>);
@@ -514,9 +535,9 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-<p>如需完整的示例,请参阅 <a href="https://github.com/apache/pulsar/tree/master/pulsar-client-cpp/examples">C++ 客户端示例</a>。</p>
+<p>For complete examples, refer to <a href="https://github.com/apache/pulsar/tree/master/pulsar-client-cpp/examples">C++ client examples</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="schema"></a><a href="#schema" 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. [...]
-<p>本节描述了一些示例关于结构的示例。欲了解更多有关结构的信息,请参阅 <a href="/docs/zh-CN/next/schema-get-started">Pulsar schema</a>。</p>
+<p>This section describes some examples about schema. For more information about schema, see <a href="/docs/zh-CN/next/schema-get-started">Pulsar schema</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="avro-模式"></a><a href="#avro-模式" 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- [...]
 <ul>
 <li><p>下面的示例演示如何使用 Avro schema 创建一个 producer。</p>
@@ -539,14 +560,25 @@ client.subscribe(<span class="hljs-string">"topic-avro"</span>, <span class="hlj
 </code></pre></li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="protobufnative-模式"></a><a href="#protobufnative-模式" 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- [...]
-<p>下面的示例演示如何使用 ProtobufNative 模式创建生产者和消费者。 1. 使用 Protobuf3 生成 <code>User</code> 类。</p>
-<pre><code class="hljs">&gt; **注意**  
-&gt; 你需要使用 Protobuf3 或者最新版本.
+<p>The following example shows how to create a producer and a consumer with a ProtobufNative schema. ​ 1. Generate the <code>User</code> class using Protobuf3.</p>
+<pre><code class="hljs">&gt; **Note**  
+&gt; You need to use Protobuf3 or later versions.
 </code></pre>
 <p>​ ```protobuf syntax = &quot;proto3&quot;;</p>
-<p>message User { string name = 1; int32 age = 2; } <code>2. 在你的源代码中包含 `ProtobufNativeSchema.h` 。确保你的项目中添加了Protobuf 依赖关系。</code>c++ #include &lt;pulsar/ProtobufNativeSchema.h&gt; <code>3. 创建一个生产者来发送一个 `User` 实例。</code>c++ ProducerConfiguration producerConf; producerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); Producer producer; client.createProducer(&quot;topic-protobuf&quot;, producerConf, producer); User user; user.set_name(&quot;my-name&quot;); user.set_age(10);  [...]
+<p>message User { string name = 1; int32 age = 2; }</p>
+<pre><code class="hljs">​
+2. Include the `ProtobufNativeSchema.h` in your source code. Ensure the Protobuf dependency has been added to your project.
+​c++ #include &lt;pulsar/ProtobufNativeSchema.h&gt; 
+
+​
+3. Create a producer to send a `User` instance.
+​c++ ProducerConfiguration producerConf; producerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); Producer producer; client.createProducer(&quot;topic-protobuf&quot;, producerConf, producer); User user; user.set_name(&quot;my-name&quot;); user.set_age(10); std::string content; user.SerializeToString(&amp;content); producer.send(MessageBuilder().setContent(content).build()); 
+
+​
+4. Create a consumer to receive a `User` instance.
+​c++ ConsumerConfiguration consumerConf; consumerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); consumerConf.setSubscriptionInitialPosition(InitialPositionEarliest); Consumer consumer; client.subscribe(&quot;topic-protobuf&quot;, &quot;my-sub&quot;, consumerConf, consumer); Message msg; consumer.receive(msg); User user2; user2.ParseFromArray(msg.getData(), msg.getLength()); ```</code></pre>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/next/client-libraries-node"><span>Node.js
-</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#支持的平台">支持的平台</a></li><li><a href="#系统要求">系统要求</a></li><li><a href="#linux">Linux</a><ul class="toc-headings"><li><a href="#编译">编译</a></li><li><a href="#安装依赖项">安装依赖项</a></li><li><a href="#安装-rpm">安装 RPM</a></li><li><a href="#安装-debian">安装 Debian</a></li><li><a href="#编译-1">编译</a></li></ul></li><li><a href="#macos">MacOS</a><ul class="toc-headings"><li><a href="#编译-2 [...]
+</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#支持的平台">支持的平台</a></li><li><a href="#系统要求">系统要求</a></li><li><a href="#linux">Linux</a><ul class="toc-headings"><li><a href="#编译">编译</a></li><li><a href="#安装依赖项">安装依赖项</a></li><li><a href="#安装-rpm">安装 RPM</a></li><li><a href="#安装-debian">安装 Debian</a></li><li><a href="#编译-1">编译</a></li></ul></li><li><a href="#macos">MacOS</a><ul class="toc-headings"><li><a href="#编译-2 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/client-libraries-dotnet.html b/content/docs/zh-CN/next/client-libraries-dotnet.html
index 35dadb8..834558c 100644
--- a/content/docs/zh-CN/next/client-libraries-dotnet.html
+++ b/content/docs/zh-CN/next/client-libraries-dotnet.html
@@ -244,10 +244,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>消息可以是逐个确认,也可以累积一起确认。 关于消息确认的详情,请参阅 <a href="/docs/zh-CN/next/concepts-messaging#acknowledgement">消息确认</a> 章节。</p>
 <ul>
 <li><p>逐条确认消息。</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>累积确认消息。</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/zh-CN/next/client-libraries-dotnet/index.html b/content/docs/zh-CN/next/client-libraries-dotnet/index.html
index 35dadb8..834558c 100644
--- a/content/docs/zh-CN/next/client-libraries-dotnet/index.html
+++ b/content/docs/zh-CN/next/client-libraries-dotnet/index.html
@@ -244,10 +244,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>消息可以是逐个确认,也可以累积一起确认。 关于消息确认的详情,请参阅 <a href="/docs/zh-CN/next/concepts-messaging#acknowledgement">消息确认</a> 章节。</p>
 <ul>
 <li><p>逐条确认消息。</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>累积确认消息。</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/zh-CN/next/client-libraries-websocket.html b/content/docs/zh-CN/next/client-libraries-websocket.html
index af990a9..1722564 100644
--- a/content/docs/zh-CN/next/client-libraries-websocket.html
+++ b/content/docs/zh-CN/next/client-libraries-websocket.html
@@ -93,12 +93,12 @@
 <h3><a class="anchor" aria-hidden="true" id="作为一个独立的组件"></a><a href="#作为一个独立的组件" 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>在这种模式下,WebSocket 会作为单独的服务在 Pulsar <a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> 上运行。 运行此模式,需在 <a href="/docs/zh-CN/next/reference-configuration#websocket"><code>conf/websocket.conf</code></a> 文件中进行配置。 <em>至少</em>需要设置以下参数:</p>
 <ul>
-<li><a href="/docs/zh-CN/next/reference-configuration#websocket-configurationStoreServers"><code>configurationStoreServers</code></a></li>
+<li><a href="/docs/zh-CN/next/reference-configuration#websocket"><code>configurationMetadataStoreUrl</code></a></li>
 <li><a href="/docs/zh-CN/next/reference-configuration#websocket-webServicePort"><code>webServicePort</code></a></li>
 <li><a href="/docs/zh-CN/next/reference-configuration#websocket-clusterName"><code>clusterName</code></a></li>
 </ul>
 <p>下面是一个示例:</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
 <span class="hljs-attr">webServicePort</span>=<span class="hljs-string">8080</span>
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">my-cluster</span>
 </code></pre>
diff --git a/content/docs/zh-CN/next/client-libraries-websocket/index.html b/content/docs/zh-CN/next/client-libraries-websocket/index.html
index af990a9..1722564 100644
--- a/content/docs/zh-CN/next/client-libraries-websocket/index.html
+++ b/content/docs/zh-CN/next/client-libraries-websocket/index.html
@@ -93,12 +93,12 @@
 <h3><a class="anchor" aria-hidden="true" id="作为一个独立的组件"></a><a href="#作为一个独立的组件" 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>在这种模式下,WebSocket 会作为单独的服务在 Pulsar <a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> 上运行。 运行此模式,需在 <a href="/docs/zh-CN/next/reference-configuration#websocket"><code>conf/websocket.conf</code></a> 文件中进行配置。 <em>至少</em>需要设置以下参数:</p>
 <ul>
-<li><a href="/docs/zh-CN/next/reference-configuration#websocket-configurationStoreServers"><code>configurationStoreServers</code></a></li>
+<li><a href="/docs/zh-CN/next/reference-configuration#websocket"><code>configurationMetadataStoreUrl</code></a></li>
 <li><a href="/docs/zh-CN/next/reference-configuration#websocket-webServicePort"><code>webServicePort</code></a></li>
 <li><a href="/docs/zh-CN/next/reference-configuration#websocket-clusterName"><code>clusterName</code></a></li>
 </ul>
 <p>下面是一个示例:</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
 <span class="hljs-attr">webServicePort</span>=<span class="hljs-string">8080</span>
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">my-cluster</span>
 </code></pre>
diff --git a/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster.html b/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster.html
index 28c4f6c..0542540 100644
--- a/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster.html
+++ b/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster.html
@@ -268,14 +268,14 @@ $ <span class="hljs-built_in">cd</span> apache-pulsar-2.9.1
 <p>一旦部署了 Zookeeper,初始化了集群元数据,部署了 Bookeeper bookies 后,你就能开始部署 broker了。</p>
 <h3><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-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-2-1 [...]
 <p>你能够通过<a href="/docs/zh-CN/next/reference-configuration#broker"><code>conf/broker.conf</code></a>配置文件配置broker。</p>
-<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. 必须确保<a href="/docs/zh-CN/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a>设置为本地 zookeeper 集群的地址,确保<a href="/docs/zh-CN/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a>设置为配置存储集群的地址(即使配置存储集群和本地的 Zookeeper 集群是同一个,也需要配置该选项)。</p>
+<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> parameter to reflect the local quorum and the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameter to reflect the configuration store quorum (alth [...]
 <p>You also need to specify the name of the <a href="/docs/zh-CN/next/reference-terminology#cluster">cluster</a> to which the broker belongs using the <a href="/docs/zh-CN/next/reference-configuration#broker-clusterName"><code>clusterName</code></a> parameter. 此外,broker 和 web 服务的端口必须和初始化集群元数据时指定的端口是一样的(特别是当你使用了和默认值不同的端口的时候)。</p>
 <p>下面是一个示例配置:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Local ZooKeeper servers</span>
-<span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 <span class="hljs-comment">
 # Configuration store quorum connection string.</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
 
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">us-west</span>
 <span class="hljs-comment">
diff --git a/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster/index.html b/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster/index.html
index 28c4f6c..0542540 100644
--- a/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster/index.html
+++ b/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster/index.html
@@ -268,14 +268,14 @@ $ <span class="hljs-built_in">cd</span> apache-pulsar-2.9.1
 <p>一旦部署了 Zookeeper,初始化了集群元数据,部署了 Bookeeper bookies 后,你就能开始部署 broker了。</p>
 <h3><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-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-2-1 [...]
 <p>你能够通过<a href="/docs/zh-CN/next/reference-configuration#broker"><code>conf/broker.conf</code></a>配置文件配置broker。</p>
-<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. 必须确保<a href="/docs/zh-CN/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a>设置为本地 zookeeper 集群的地址,确保<a href="/docs/zh-CN/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a>设置为配置存储集群的地址(即使配置存储集群和本地的 Zookeeper 集群是同一个,也需要配置该选项)。</p>
+<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> parameter to reflect the local quorum and the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameter to reflect the configuration store quorum (alth [...]
 <p>You also need to specify the name of the <a href="/docs/zh-CN/next/reference-terminology#cluster">cluster</a> to which the broker belongs using the <a href="/docs/zh-CN/next/reference-configuration#broker-clusterName"><code>clusterName</code></a> parameter. 此外,broker 和 web 服务的端口必须和初始化集群元数据时指定的端口是一样的(特别是当你使用了和默认值不同的端口的时候)。</p>
 <p>下面是一个示例配置:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Local ZooKeeper servers</span>
-<span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 <span class="hljs-comment">
 # Configuration store quorum connection string.</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
 
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">us-west</span>
 <span class="hljs-comment">
diff --git a/content/docs/zh-CN/next/deploy-bare-metal.html b/content/docs/zh-CN/next/deploy-bare-metal.html
index bf91e74..380767f 100644
--- a/content/docs/zh-CN/next/deploy-bare-metal.html
+++ b/content/docs/zh-CN/next/deploy-bare-metal.html
@@ -336,9 +336,9 @@ $ <span class="hljs-built_in">echo</span> 1 &gt; data/zookeeper/myid
 <h2><a class="anchor" aria-hidden="true" id="部署-pulsar-broker"></a><a href="#部署-pulsar-broker" 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. [...]
 <p>Pulsar brokers are the last thing you need to deploy in your Pulsar cluster. Broker 用来处理 Pulsar 消息,并且提供管理Pulsar的接口。 一个好的选择是运行 <strong>3 个 broker</strong>,每个 broker 已经运行了 Bookkeeper bookie。</p>
 <h3><a class="anchor" aria-hidden="true" id="配置-broker"></a><a href="#配置-broker" 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>Broker 配置中有一些非常重要的参数,这些参数可以确保每个Broker 连接到已部署的 ZooKeeper 集群。 需要确认 <a href="/docs/zh-CN/next/reference-configuration#broker-zookeeperServers"> <code>zookeeperServers</code></a> 和 <a href="/docs/zh-CN/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> 配置项的值是正确的。 在当前情况下,由于只有一个集群,没有单独用来存储配置的 Zookeeper 集群,那么配置项<code>configurationStoreServers</code>和<code>zookeeperServers</code> 是一样的值。</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<p>Broker 配置中有一些非常重要的参数,这些参数可以确保每个Broker 连接到已部署的 ZooKeeper 集群。 Ensure that the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> and <a href="/docs/zh-CN/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, the <code>configurationMetadataStoreUrl</code> point to the same <code>metadataStoreUrl</code>.</p>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
 <p>你必须配置集群的名字( <a href="#initialize-cluster-metadata">初始化集群元数据</a> 提供的集群名字必须和这个配置项匹配):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
diff --git a/content/docs/zh-CN/next/deploy-bare-metal/index.html b/content/docs/zh-CN/next/deploy-bare-metal/index.html
index bf91e74..380767f 100644
--- a/content/docs/zh-CN/next/deploy-bare-metal/index.html
+++ b/content/docs/zh-CN/next/deploy-bare-metal/index.html
@@ -336,9 +336,9 @@ $ <span class="hljs-built_in">echo</span> 1 &gt; data/zookeeper/myid
 <h2><a class="anchor" aria-hidden="true" id="部署-pulsar-broker"></a><a href="#部署-pulsar-broker" 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. [...]
 <p>Pulsar brokers are the last thing you need to deploy in your Pulsar cluster. Broker 用来处理 Pulsar 消息,并且提供管理Pulsar的接口。 一个好的选择是运行 <strong>3 个 broker</strong>,每个 broker 已经运行了 Bookkeeper bookie。</p>
 <h3><a class="anchor" aria-hidden="true" id="配置-broker"></a><a href="#配置-broker" 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>Broker 配置中有一些非常重要的参数,这些参数可以确保每个Broker 连接到已部署的 ZooKeeper 集群。 需要确认 <a href="/docs/zh-CN/next/reference-configuration#broker-zookeeperServers"> <code>zookeeperServers</code></a> 和 <a href="/docs/zh-CN/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> 配置项的值是正确的。 在当前情况下,由于只有一个集群,没有单独用来存储配置的 Zookeeper 集群,那么配置项<code>configurationStoreServers</code>和<code>zookeeperServers</code> 是一样的值。</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<p>Broker 配置中有一些非常重要的参数,这些参数可以确保每个Broker 连接到已部署的 ZooKeeper 集群。 Ensure that the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> and <a href="/docs/zh-CN/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, the <code>configurationMetadataStoreUrl</code> point to the same <code>metadataStoreUrl</code>.</p>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
 <p>你必须配置集群的名字( <a href="#initialize-cluster-metadata">初始化集群元数据</a> 提供的集群名字必须和这个配置项匹配):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
diff --git a/content/docs/zh-CN/next/develop-binary-protocol.html b/content/docs/zh-CN/next/develop-binary-protocol.html
index 7d414c8..0379e9c 100644
--- a/content/docs/zh-CN/next/develop-binary-protocol.html
+++ b/content/docs/zh-CN/next/develop-binary-protocol.html
@@ -231,7 +231,7 @@
 </code></pre>
 <p>参数: * <code>request_id</code> → <code>创建生产者</code> 时指定的请求ID; * <code>producer_name</code> → 生成的全局唯一的生产者名称或者客户端指定的名称(如果有的话)</p>
 <h5><a class="anchor" aria-hidden="true" id="发送命令"></a><a href="#发送命令" 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>命令 <code>Send</code> 是给一个已经存在的生产者在上下文中发布新的消息的。 此命令用在消息帧中,此消息帧包含了该命令及消息的有效载荷。<a href="#payload-commands">payload commands</a>包含了完整的命令格式。</p>
+<p>命令 <code>Send</code> 是给一个已经存在的生产者在上下文中发布新的消息的。 If a producer has not yet been created for the connection, the broker will terminate the connection. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/zh-CN/next/develop-binary-protocol/index.html b/content/docs/zh-CN/next/develop-binary-protocol/index.html
index 7d414c8..0379e9c 100644
--- a/content/docs/zh-CN/next/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/next/develop-binary-protocol/index.html
@@ -231,7 +231,7 @@
 </code></pre>
 <p>参数: * <code>request_id</code> → <code>创建生产者</code> 时指定的请求ID; * <code>producer_name</code> → 生成的全局唯一的生产者名称或者客户端指定的名称(如果有的话)</p>
 <h5><a class="anchor" aria-hidden="true" id="发送命令"></a><a href="#发送命令" 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>命令 <code>Send</code> 是给一个已经存在的生产者在上下文中发布新的消息的。 此命令用在消息帧中,此消息帧包含了该命令及消息的有效载荷。<a href="#payload-commands">payload commands</a>包含了完整的命令格式。</p>
+<p>命令 <code>Send</code> 是给一个已经存在的生产者在上下文中发布新的消息的。 If a producer has not yet been created for the connection, the broker will terminate the connection. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/zh-CN/next/reference-configuration.html b/content/docs/zh-CN/next/reference-configuration.html
index 04c7a49..a807d32 100644
--- a/content/docs/zh-CN/next/reference-configuration.html
+++ b/content/docs/zh-CN/next/reference-configuration.html
@@ -210,7 +210,7 @@
 <p>If there are multiple listeners, separate them with commas.</p>
 <p><strong>Note</strong>: do not use this configuration with <code>advertisedAddress</code> and <code>brokerServicePort</code>. If the value of this configuration is empty, the broker uses <code>advertisedAddress</code> and <code>brokerServicePort</code>|/| |internalListenerName|Specify the internal listener name for the broker.</p>
 <p><strong>Note</strong>: the listener name must be contained in <code>advertisedListeners</code>.</p>
-<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
+<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
 <ul>
 <li><p>'producer_request_hold' Policy which holds producer's send request until the resource becomes available (or holding times out)</p></li>
 <li><p>'producer_exception' Policy which throws <code>javax.jms.ResourceAllocationException</code> to the producer</p></li>
@@ -219,7 +219,7 @@
 <li><p><code>delete_when_no_subscriptions</code>: 删除没有订阅或活动生产者的主题。</p>
 <ul>
 <li><p><code>delete_when_subscriptions_caught_up</code>: delete the topic whose subscriptions have no backlogs and which has no active producers or consumers. | <code>delete_when_no_subscriptions</code> | | brokerDeleteInactiveTopicsMaxInactiveDurationSeconds | Set the maximum duration for inactive topics. If it is not specified, the <code>brokerDeleteInactiveTopicsFrequencySeconds</code> parameter is adopted. | N/A | |forceDeleteTenantAllowed| Enable you to delete a tenant forcefully. | [...]
-<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
+<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
 <p>Setting this configuration to a value <strong>greater than 0</strong> deletes inactive subscriptions automatically.<br>
 Setting this configuration to <strong>0</strong> does not delete inactive subscriptions automatically.</p>
 <p>Since this configuration takes effect on all topics, if there is even one topic whose subscriptions should not be deleted automatically, you need to set it to 0.<br>
@@ -236,7 +236,7 @@ Instead, you can set a subscription expiration time for each <strong>命名空
     - `org.apache.pulsar.broker.loadbalance.impl.OverloadShedder`
     - `org.apache.pulsar.broker.loadbalance.impl.UniformLoadShedder`
       
-    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
+    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
     |haProxyProtocolEnabled | Enable or disable the [HAProxy](http://www.haproxy.org/) protocol. |false| | maxTopicsPerNamespace | The maximum number of persistent topics that can be created in the namespace. When the number of topics reaches this threshold, the broker rejects the request of creating a new topic, including the auto-created topics by the producer or consumer, until the number of connected consumers decreases. The default value 0 disables the check. | 0 | |subscriptionType [...]
       
     Available options are `NONE`, `LZ4`, `ZLIB`, `ZSTD`, and `SNAPPY`).   
@@ -265,11 +265,25 @@ Instead, you can set a subscription expiration time for each <strong>命名空
       
     示例  
     enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ### Deprecated Parameters
+    
+    The following parameters have been deprecated.
+    
+    | 配置项                                          | 说明                                                                                                              | 默认值   |
+    | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ----- |
+    | backlogQuotaDefaultLimitGB                   | Use `backlogQuotaDefaultLimitBytes` instead.                                                                    | -1    |
+    | brokerServicePurgeInactiveFrequencyInSeconds | Use `brokerDeleteInactiveTopicsFrequencySeconds`.                                                               | 60    |
+    | tlsEnabled                                   | Use `webServicePortTls` and `brokerServicePortTls` instead.                                                     | false |
+    | replicationTlsEnabled                        | Enable TLS when talking with other clusters to replicate messages. Use `brokerClientTlsEnabled` instead.        | false |
+    | subscriptionKeySharedEnable                  | Whether to enable the Key_Shared subscription. Use `subscriptionTypesEnabled` instead.                          | true  |
+    | zookeeperServers                             | Zookeeper quorum connection string. Use `metadataStoreUrl` instead.                                             | N/A   |
+    | configurationStoreServers                    | Configuration store connection string (as a comma-separated list). Use `configurationMetadataStoreUrl` instead. | N/A   |
+    
     ## Client
     
     You can use the [`pulsar-client`](/docs/zh-CN/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
     
-    TLS TrustStore 类型配置。 
+    TLS TrustStore type configuration. 
     
     - JKS 
         - PKCS12&lt;/td&gt; 
@@ -338,7 +352,7 @@ Instead, you can set a subscription expiration time for each <strong>命名空
                                     
                                     | 配置项                                  | 说明                  | 默认值     |
                                     | ------------------------------------ | ------------------- | ------- |
-                                    | configurationStoreServers            |                     |         |
+                                    | configurationMetadataStoreUrl        |                     |         |
                                     | zooKeeperSessionTimeoutMillis        |                     | 30000   |
                                     | zooKeeperCacheExpirySeconds          | ZooKeeper 缓存过期时间(秒) | 300     |
                                     | serviceUrl                           |                     |         |
diff --git a/content/docs/zh-CN/next/reference-configuration/index.html b/content/docs/zh-CN/next/reference-configuration/index.html
index 04c7a49..a807d32 100644
--- a/content/docs/zh-CN/next/reference-configuration/index.html
+++ b/content/docs/zh-CN/next/reference-configuration/index.html
@@ -210,7 +210,7 @@
 <p>If there are multiple listeners, separate them with commas.</p>
 <p><strong>Note</strong>: do not use this configuration with <code>advertisedAddress</code> and <code>brokerServicePort</code>. If the value of this configuration is empty, the broker uses <code>advertisedAddress</code> and <code>brokerServicePort</code>|/| |internalListenerName|Specify the internal listener name for the broker.</p>
 <p><strong>Note</strong>: the listener name must be contained in <code>advertisedListeners</code>.</p>
-<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
+<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
 <ul>
 <li><p>'producer_request_hold' Policy which holds producer's send request until the resource becomes available (or holding times out)</p></li>
 <li><p>'producer_exception' Policy which throws <code>javax.jms.ResourceAllocationException</code> to the producer</p></li>
@@ -219,7 +219,7 @@
 <li><p><code>delete_when_no_subscriptions</code>: 删除没有订阅或活动生产者的主题。</p>
 <ul>
 <li><p><code>delete_when_subscriptions_caught_up</code>: delete the topic whose subscriptions have no backlogs and which has no active producers or consumers. | <code>delete_when_no_subscriptions</code> | | brokerDeleteInactiveTopicsMaxInactiveDurationSeconds | Set the maximum duration for inactive topics. If it is not specified, the <code>brokerDeleteInactiveTopicsFrequencySeconds</code> parameter is adopted. | N/A | |forceDeleteTenantAllowed| Enable you to delete a tenant forcefully. | [...]
-<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
+<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
 <p>Setting this configuration to a value <strong>greater than 0</strong> deletes inactive subscriptions automatically.<br>
 Setting this configuration to <strong>0</strong> does not delete inactive subscriptions automatically.</p>
 <p>Since this configuration takes effect on all topics, if there is even one topic whose subscriptions should not be deleted automatically, you need to set it to 0.<br>
@@ -236,7 +236,7 @@ Instead, you can set a subscription expiration time for each <strong>命名空
     - `org.apache.pulsar.broker.loadbalance.impl.OverloadShedder`
     - `org.apache.pulsar.broker.loadbalance.impl.UniformLoadShedder`
       
-    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
+    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
     |haProxyProtocolEnabled | Enable or disable the [HAProxy](http://www.haproxy.org/) protocol. |false| | maxTopicsPerNamespace | The maximum number of persistent topics that can be created in the namespace. When the number of topics reaches this threshold, the broker rejects the request of creating a new topic, including the auto-created topics by the producer or consumer, until the number of connected consumers decreases. The default value 0 disables the check. | 0 | |subscriptionType [...]
       
     Available options are `NONE`, `LZ4`, `ZLIB`, `ZSTD`, and `SNAPPY`).   
@@ -265,11 +265,25 @@ Instead, you can set a subscription expiration time for each <strong>命名空
       
     示例  
     enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ### Deprecated Parameters
+    
+    The following parameters have been deprecated.
+    
+    | 配置项                                          | 说明                                                                                                              | 默认值   |
+    | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ----- |
+    | backlogQuotaDefaultLimitGB                   | Use `backlogQuotaDefaultLimitBytes` instead.                                                                    | -1    |
+    | brokerServicePurgeInactiveFrequencyInSeconds | Use `brokerDeleteInactiveTopicsFrequencySeconds`.                                                               | 60    |
+    | tlsEnabled                                   | Use `webServicePortTls` and `brokerServicePortTls` instead.                                                     | false |
+    | replicationTlsEnabled                        | Enable TLS when talking with other clusters to replicate messages. Use `brokerClientTlsEnabled` instead.        | false |
+    | subscriptionKeySharedEnable                  | Whether to enable the Key_Shared subscription. Use `subscriptionTypesEnabled` instead.                          | true  |
+    | zookeeperServers                             | Zookeeper quorum connection string. Use `metadataStoreUrl` instead.                                             | N/A   |
+    | configurationStoreServers                    | Configuration store connection string (as a comma-separated list). Use `configurationMetadataStoreUrl` instead. | N/A   |
+    
     ## Client
     
     You can use the [`pulsar-client`](/docs/zh-CN/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
     
-    TLS TrustStore 类型配置。 
+    TLS TrustStore type configuration. 
     
     - JKS 
         - PKCS12&lt;/td&gt; 
@@ -338,7 +352,7 @@ Instead, you can set a subscription expiration time for each <strong>命名空
                                     
                                     | 配置项                                  | 说明                  | 默认值     |
                                     | ------------------------------------ | ------------------- | ------- |
-                                    | configurationStoreServers            |                     |         |
+                                    | configurationMetadataStoreUrl        |                     |         |
                                     | zooKeeperSessionTimeoutMillis        |                     | 30000   |
                                     | zooKeeperCacheExpirySeconds          | ZooKeeper 缓存过期时间(秒) | 300     |
                                     | serviceUrl                           |                     |         |
diff --git a/content/docs/zh-TW/next/administration-proxy.html b/content/docs/zh-TW/next/administration-proxy.html
index ba8d1a0..3a55460 100644
--- a/content/docs/zh-TW/next/administration-proxy.html
+++ b/content/docs/zh-TW/next/administration-proxy.html
@@ -98,8 +98,8 @@
 <p>Note that if you do not use functions, you do not need to configure <code>functionWorkerWebServiceURL</code>.</p>
 <h3><a class="anchor" aria-hidden="true" id="use-service-discovery"></a><a href="#use-service-discovery" 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>Pulsar uses <a href="https://zookeeper.apache.org">ZooKeeper</a> for service discovery. To connect the proxy to ZooKeeper, specify the following in <code>conf/proxy.conf</code>.</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk-0,zk-1,zk-2</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk-0:2184,zk-remote:2184</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2181,my-zk-1:2181,my-zk-2:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2184,my-zk-remote:2184</span>
 </code></pre>
 <blockquote>
 <p>To use service discovery, you need to open the network ACLs, so the proxy can connects to the ZooKeeper nodes through the ZooKeeper client port (port <code>2181</code>) and the configuration store client port (port <code>2184</code>).</p>
diff --git a/content/docs/zh-TW/next/administration-proxy/index.html b/content/docs/zh-TW/next/administration-proxy/index.html
index ba8d1a0..3a55460 100644
--- a/content/docs/zh-TW/next/administration-proxy/index.html
+++ b/content/docs/zh-TW/next/administration-proxy/index.html
@@ -98,8 +98,8 @@
 <p>Note that if you do not use functions, you do not need to configure <code>functionWorkerWebServiceURL</code>.</p>
 <h3><a class="anchor" aria-hidden="true" id="use-service-discovery"></a><a href="#use-service-discovery" 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>Pulsar uses <a href="https://zookeeper.apache.org">ZooKeeper</a> for service discovery. To connect the proxy to ZooKeeper, specify the following in <code>conf/proxy.conf</code>.</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk-0,zk-1,zk-2</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk-0:2184,zk-remote:2184</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2181,my-zk-1:2181,my-zk-2:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">my-zk-0:2184,my-zk-remote:2184</span>
 </code></pre>
 <blockquote>
 <p>To use service discovery, you need to open the network ACLs, so the proxy can connects to the ZooKeeper nodes through the ZooKeeper client port (port <code>2181</code>) and the configuration store client port (port <code>2184</code>).</p>
diff --git a/content/docs/zh-TW/next/client-libraries-cpp.html b/content/docs/zh-TW/next/client-libraries-cpp.html
index 218a689..f672c91 100644
--- a/content/docs/zh-TW/next/client-libraries-cpp.html
+++ b/content/docs/zh-TW/next/client-libraries-cpp.html
@@ -315,90 +315,6 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <p>If you use TLS authentication, you need to add <code>ssl</code>, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
-<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
-<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
-<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    Message msg;
-    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
-    <span class="hljs-comment">// consume 100 messages</span>
-    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
-        consumer.receive(msg);
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
-            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-        consumer.acknowledge(msg);
-        ctr++;
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-}
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-    messagesReceived++;
-    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
-}
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setMessageListener(listener);
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
-    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
-        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="create-a-producer"></a><a href="#create-a-producer" 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- [...]
 <p>To use Pulsar as a producer, you need to create a producer on the C++ client. There are two main ways of using a producer: - <a href="#simple-blocking-example">Blocking style</a> : each call to <code>send</code> waits for an ack from the broker. - <a href="#non-blocking-example">Non-blocking asynchronous style</a> : <code>sendAsync</code> is called instead of <code>send</code> and a callback is supplied for when the ack is received from the broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="simple-blocking-example"></a><a href="#simple-blocking-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 [...]
@@ -502,6 +418,111 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 producerConf.setPartitionsRoutingMode(ProducerConfiguration::UseSinglePartition);
 producerConf.setLazyStartPartitionedProducers(<span class="hljs-literal">true</span>);
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" 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  [...]
+<p>Message <a href="/docs/zh-TW/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<pre><code class="hljs css language-c++">ProducerConfiguration conf;
+conf.setBatchingEnabled(<span class="hljs-literal">false</span>);
+conf.setChunkingEnabled(<span class="hljs-literal">true</span>);
+Producer producer;
+client.createProducer(<span class="hljs-string">"my-topic"</span>, conf, producer);
+</code></pre>
+<blockquote>
+<p><strong>Note:</strong> To enable chunking, you need to disable batching (<code>setBatchingEnabled</code>=<code>false</code>) concurrently.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
+<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
+<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
+<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    Message msg;
+    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
+    <span class="hljs-comment">// consume 100 messages</span>
+    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
+        consumer.receive(msg);
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
+            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+        consumer.acknowledge(msg);
+        ctr++;
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+}
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+    messagesReceived++;
+    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
+}
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setMessageListener(listener);
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
+    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
+        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="configure-chunking"></a><a href="#configure-chunking" 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- [...]
+<p>You can limit the maximum number of chunked messages a consumer maintains concurrently by configuring the <code>setMaxPendingChunkedMessage</code> and <code>setAutoAckOldestChunkedMessageOnQueueFull</code> parameters. When the threshold is reached, the consumer drops pending messages by silently acknowledging them or asking the broker to redeliver them later.</p>
+<p>The following is an example of how to configure message chunking.</p>
+<pre><code class="hljs css language-c++">ConsumerConfiguration conf;
+conf.setAutoAckOldestChunkedMessageOnQueueFull(<span class="hljs-literal">true</span>);
+conf.setMaxPendingChunkedMessage(<span class="hljs-number">100</span>);
+Consumer consumer;
+client.subscribe(<span class="hljs-string">"my-topic"</span>, <span class="hljs-string">"my-sub"</span>, conf, consumer);
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="enable-authentication-in-connection-urls"></a><a href="#enable-authentication-in-connection-urls" 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  [...]
 <p>If you use TLS authentication when connecting to Pulsar, you need to add <code>ssl</code> in the connection URLs, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-cpp">ClientConfiguration config = ClientConfiguration();
@@ -555,7 +576,7 @@ client.subscribe(<span class="hljs-string">"topic-avro"</span>, <span class="hlj
 ​
 4. Create a consumer to receive a `User` instance.
 ​c++ ConsumerConfiguration consumerConf; consumerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); consumerConf.setSubscriptionInitialPosition(InitialPositionEarliest); Consumer consumer; client.subscribe(&quot;topic-protobuf&quot;, &quot;my-sub&quot;, consumerConf, consumer); Message msg; consumer.receive(msg); User user2; user2.ParseFromArray(msg.getData(), msg.getLength()); ```</code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-TW/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-TW/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-TW/next/client-libraries-cpp/index.html b/content/docs/zh-TW/next/client-libraries-cpp/index.html
index 218a689..f672c91 100644
--- a/content/docs/zh-TW/next/client-libraries-cpp/index.html
+++ b/content/docs/zh-TW/next/client-libraries-cpp/index.html
@@ -315,90 +315,6 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 <p>If you use TLS authentication, you need to add <code>ssl</code>, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
-<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
-<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
-<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    Message msg;
-    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
-    <span class="hljs-comment">// consume 100 messages</span>
-    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
-        consumer.receive(msg);
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
-            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-        consumer.acknowledge(msg);
-        ctr++;
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
-<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
-<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
-<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
-<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
-
-<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
-
-<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-}
-
-<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-    messagesReceived++;
-    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
-}
-
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
-    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
-
-    Consumer consumer;
-    ConsumerConfiguration <span class="hljs-built_in">config</span>;
-    <span class="hljs-built_in">config</span>.setMessageListener(listener);
-    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
-    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
-    <span class="hljs-keyword">if</span> (result != ResultOk) {
-        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
-    }
-
-    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
-    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
-        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
-    }
-
-    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
-
-    client.<span class="hljs-built_in">close</span>();
-    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
-}
-</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="create-a-producer"></a><a href="#create-a-producer" 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- [...]
 <p>To use Pulsar as a producer, you need to create a producer on the C++ client. There are two main ways of using a producer: - <a href="#simple-blocking-example">Blocking style</a> : each call to <code>send</code> waits for an ack from the broker. - <a href="#non-blocking-example">Non-blocking asynchronous style</a> : <code>sendAsync</code> is called instead of <code>send</code> and a callback is supplied for when the ack is received from the broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="simple-blocking-example"></a><a href="#simple-blocking-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 [...]
@@ -502,6 +418,111 @@ ${PULSAR_HOME}/pulsar-client-cpp/build/lib/Release/pulsar.dll</p></li>
 producerConf.setPartitionsRoutingMode(ProducerConfiguration::UseSinglePartition);
 producerConf.setLazyStartPartitionedProducers(<span class="hljs-literal">true</span>);
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" 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  [...]
+<p>Message <a href="/docs/zh-TW/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<pre><code class="hljs css language-c++">ProducerConfiguration conf;
+conf.setBatchingEnabled(<span class="hljs-literal">false</span>);
+conf.setChunkingEnabled(<span class="hljs-literal">true</span>);
+Producer producer;
+client.createProducer(<span class="hljs-string">"my-topic"</span>, conf, producer);
+</code></pre>
+<blockquote>
+<p><strong>Note:</strong> To enable chunking, you need to disable batching (<code>setBatchingEnabled</code>=<code>false</code>) concurrently.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="create-a-consumer"></a><a href="#create-a-consumer" 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- [...]
+<p>To use Pulsar as a consumer, you need to create a consumer on the C++ client. There are two main ways of using the consumer: - <a href="#blocking-example">Blocking style</a>: synchronously calling <code>receive(msg)</code>. - <a href="#consumer-with-a-message-listener">Non-blocking</a> (event based) style: using a message listener.</p>
+<h3><a class="anchor" aria-hidden="true" id="blocking-example"></a><a href="#blocking-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. [...]
+<p>The benefit of this approach is that it is the simplest code. Simply keeps calling <code>receive(msg)</code> which blocks until a message is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    Message msg;
+    <span class="hljs-keyword">int</span> ctr = <span class="hljs-number">0</span>;
+    <span class="hljs-comment">// consume 100 messages</span>
+    <span class="hljs-keyword">while</span> (ctr &lt; <span class="hljs-number">100</span>) {
+        consumer.receive(msg);
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Received: "</span> &lt;&lt; msg
+            &lt;&lt; <span class="hljs-string">"  with payload '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+        consumer.acknowledge(msg);
+        ctr++;
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming synchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="consumer-with-a-message-listener"></a><a href="#consumer-with-a-message-listener" 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>You can avoid running a loop with blocking calls with an event based style by using a message listener which is invoked for each message that is received.</p>
+<p>This example starts a subscription at the earliest offset and consumes 100 messages.</p>
+<pre><code class="hljs css language-c++"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pulsar/Client.h&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;atomic&gt;</span></span>
+<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;thread&gt;</span></span>
+
+<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> pulsar;
+
+<span class="hljs-built_in">std</span>::atomic&lt;<span class="hljs-keyword">uint32_t</span>&gt; messagesReceived;
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">handleAckComplete</span><span class="hljs-params">(Result res)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Ack res: "</span> &lt;&lt; res &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+}
+
+<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">listener</span><span class="hljs-params">(Consumer consumer, <span class="hljs-keyword">const</span> Message&amp; msg)</span> </span>{
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Got message "</span> &lt;&lt; msg &lt;&lt; <span class="hljs-string">" with content '"</span> &lt;&lt; msg.getDataAsString() &lt;&lt; <span class="hljs-string">"'"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+    messagesReceived++;
+    consumer.acknowledgeAsync(msg.getMessageId(), handleAckComplete);
+}
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
+
+    Consumer consumer;
+    ConsumerConfiguration <span class="hljs-built_in">config</span>;
+    <span class="hljs-built_in">config</span>.setMessageListener(listener);
+    <span class="hljs-built_in">config</span>.setSubscriptionInitialPosition(InitialPositionEarliest);
+    Result result = client.subscribe(<span class="hljs-string">"persistent://public/default/my-topic"</span>, <span class="hljs-string">"consumer-1"</span>, <span class="hljs-built_in">config</span>, consumer);
+    <span class="hljs-keyword">if</span> (result != ResultOk) {
+        <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Failed to subscribe: "</span> &lt;&lt; result &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+        <span class="hljs-keyword">return</span> <span class="hljs-number">-1</span>;
+    }
+
+    <span class="hljs-comment">// wait for 100 messages to be consumed</span>
+    <span class="hljs-keyword">while</span> (messagesReceived &lt; <span class="hljs-number">100</span>) {
+        <span class="hljs-built_in">std</span>::this_thread::sleep_for(<span class="hljs-built_in">std</span>::chrono::milliseconds(<span class="hljs-number">100</span>));
+    }
+
+    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">cout</span> &lt;&lt; <span class="hljs-string">"Finished consuming asynchronously!"</span> &lt;&lt; <span class="hljs-built_in">std</span>::<span class="hljs-built_in">endl</span>;
+
+    client.<span class="hljs-built_in">close</span>();
+    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="configure-chunking"></a><a href="#configure-chunking" 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- [...]
+<p>You can limit the maximum number of chunked messages a consumer maintains concurrently by configuring the <code>setMaxPendingChunkedMessage</code> and <code>setAutoAckOldestChunkedMessageOnQueueFull</code> parameters. When the threshold is reached, the consumer drops pending messages by silently acknowledging them or asking the broker to redeliver them later.</p>
+<p>The following is an example of how to configure message chunking.</p>
+<pre><code class="hljs css language-c++">ConsumerConfiguration conf;
+conf.setAutoAckOldestChunkedMessageOnQueueFull(<span class="hljs-literal">true</span>);
+conf.setMaxPendingChunkedMessage(<span class="hljs-number">100</span>);
+Consumer consumer;
+client.subscribe(<span class="hljs-string">"my-topic"</span>, <span class="hljs-string">"my-sub"</span>, conf, consumer);
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="enable-authentication-in-connection-urls"></a><a href="#enable-authentication-in-connection-urls" 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  [...]
 <p>If you use TLS authentication when connecting to Pulsar, you need to add <code>ssl</code> in the connection URLs, and the default port is <code>6651</code>. The following is an example.</p>
 <pre><code class="hljs css language-cpp">ClientConfiguration config = ClientConfiguration();
@@ -555,7 +576,7 @@ client.subscribe(<span class="hljs-string">"topic-avro"</span>, <span class="hlj
 ​
 4. Create a consumer to receive a `User` instance.
 ​c++ ConsumerConfiguration consumerConf; consumerConf.setSchema(createProtobufNativeSchema(User::GetDescriptor())); consumerConf.setSubscriptionInitialPosition(InitialPositionEarliest); Consumer consumer; client.subscribe(&quot;topic-protobuf&quot;, &quot;my-sub&quot;, consumerConf, consumer); Message msg; consumer.receive(msg); User user2; user2.ParseFromArray(msg.getData(), msg.getLength()); ```</code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-TW/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-TW/next/client-libraries-node"><span>Node.js</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><li><a href="#system-requirements">System  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-TW/next/client-libraries-dotnet.html b/content/docs/zh-TW/next/client-libraries-dotnet.html
index 3037043..59892e5 100644
--- a/content/docs/zh-TW/next/client-libraries-dotnet.html
+++ b/content/docs/zh-TW/next/client-libraries-dotnet.html
@@ -243,10 +243,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>Messages can be acknowledged individually or cumulatively. For details about message acknowledgement, see <a href="/docs/zh-TW/next/concepts-messaging#acknowledgement">acknowledgement</a>.</p>
 <ul>
 <li><p>Acknowledge messages individually.</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>Acknowledge messages cumulatively.</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/zh-TW/next/client-libraries-dotnet/index.html b/content/docs/zh-TW/next/client-libraries-dotnet/index.html
index 3037043..59892e5 100644
--- a/content/docs/zh-TW/next/client-libraries-dotnet/index.html
+++ b/content/docs/zh-TW/next/client-libraries-dotnet/index.html
@@ -243,10 +243,7 @@ metadata[<span class="hljs-string">"SomeKey"</span>] = <span class="hljs-string"
 <p>Messages can be acknowledged individually or cumulatively. For details about message acknowledgement, see <a href="/docs/zh-TW/next/concepts-messaging#acknowledgement">acknowledgement</a>.</p>
 <ul>
 <li><p>Acknowledge messages individually.</p>
-<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> <span class="hljs-keyword">foreach</span> (<span class="hljs-keyword">var</span> message <span class="hljs-keyword">in</span> consumer.Messages())
-{
-    Console.WriteLine(<span class="hljs-string">"Received: "</span> + Encoding.UTF8.GetString(message.Data.ToArray()));
-}
+<pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.Acknowledge(message);
 </code></pre></li>
 <li><p>Acknowledge messages cumulatively.</p>
 <pre><code class="hljs css language-c#"><span class="hljs-keyword">await</span> consumer.AcknowledgeCumulative(message);
diff --git a/content/docs/zh-TW/next/client-libraries-websocket.html b/content/docs/zh-TW/next/client-libraries-websocket.html
index faa893c..94edde4 100644
--- a/content/docs/zh-TW/next/client-libraries-websocket.html
+++ b/content/docs/zh-TW/next/client-libraries-websocket.html
@@ -92,12 +92,12 @@
 <h3><a class="anchor" aria-hidden="true" id="as-a-separate-component"></a><a href="#as-a-separate-component" 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 [...]
 <p>In this mode, the WebSocket service will be run from a Pulsar <a href="/docs/zh-TW/next/reference-terminology#broker">broker</a> as a separate service. Configuration for this mode is handled in the <a href="/docs/zh-TW/next/reference-configuration#websocket"><code>conf/websocket.conf</code></a> configuration file. You'll need to set <em>at least</em> the following parameters:</p>
 <ul>
-<li><a href="/docs/zh-TW/next/reference-configuration#websocket-configurationStoreServers"><code>configurationStoreServers</code></a></li>
+<li><a href="/docs/zh-TW/next/reference-configuration#websocket"><code>configurationMetadataStoreUrl</code></a></li>
 <li><a href="/docs/zh-TW/next/reference-configuration#websocket-webServicePort"><code>webServicePort</code></a></li>
 <li><a href="/docs/zh-TW/next/reference-configuration#websocket-clusterName"><code>clusterName</code></a></li>
 </ul>
 <p>Here's an example:</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
 <span class="hljs-attr">webServicePort</span>=<span class="hljs-string">8080</span>
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">my-cluster</span>
 </code></pre>
diff --git a/content/docs/zh-TW/next/client-libraries-websocket/index.html b/content/docs/zh-TW/next/client-libraries-websocket/index.html
index faa893c..94edde4 100644
--- a/content/docs/zh-TW/next/client-libraries-websocket/index.html
+++ b/content/docs/zh-TW/next/client-libraries-websocket/index.html
@@ -92,12 +92,12 @@
 <h3><a class="anchor" aria-hidden="true" id="as-a-separate-component"></a><a href="#as-a-separate-component" 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 [...]
 <p>In this mode, the WebSocket service will be run from a Pulsar <a href="/docs/zh-TW/next/reference-terminology#broker">broker</a> as a separate service. Configuration for this mode is handled in the <a href="/docs/zh-TW/next/reference-configuration#websocket"><code>conf/websocket.conf</code></a> configuration file. You'll need to set <em>at least</em> the following parameters:</p>
 <ul>
-<li><a href="/docs/zh-TW/next/reference-configuration#websocket-configurationStoreServers"><code>configurationStoreServers</code></a></li>
+<li><a href="/docs/zh-TW/next/reference-configuration#websocket"><code>configurationMetadataStoreUrl</code></a></li>
 <li><a href="/docs/zh-TW/next/reference-configuration#websocket-webServicePort"><code>webServicePort</code></a></li>
 <li><a href="/docs/zh-TW/next/reference-configuration#websocket-clusterName"><code>clusterName</code></a></li>
 </ul>
 <p>Here's an example:</p>
-<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
+<pre><code class="hljs css language-properties"><span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1:2181,zk2:2181,zk3:2181</span>
 <span class="hljs-attr">webServicePort</span>=<span class="hljs-string">8080</span>
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">my-cluster</span>
 </code></pre>
diff --git a/content/docs/zh-TW/next/deploy-bare-metal-multi-cluster.html b/content/docs/zh-TW/next/deploy-bare-metal-multi-cluster.html
index 72d6423..8f321ab 100644
--- a/content/docs/zh-TW/next/deploy-bare-metal-multi-cluster.html
+++ b/content/docs/zh-TW/next/deploy-bare-metal-multi-cluster.html
@@ -267,14 +267,14 @@ $ <span class="hljs-built_in">cd</span> apache-pulsar-2.9.1
 <p>Once you set up ZooKeeper, initialize cluster metadata, and spin up BookKeeper bookies, you can deploy brokers.</p>
 <h3><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-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-2-1 [...]
 <p>You can configure brokers using the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>conf/broker.conf</code></a> configuration file.</p>
-<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/zh-TW/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> parameter to reflect the local quorum and the <a href="/docs/zh-TW/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameter to refle [...]
+<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> parameter to reflect the local quorum and the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameter to reflect the configuration store quorum (alth [...]
 <p>You also need to specify the name of the <a href="/docs/zh-TW/next/reference-terminology#cluster">cluster</a> to which the broker belongs using the <a href="/docs/zh-TW/next/reference-configuration#broker-clusterName"><code>clusterName</code></a> parameter. In addition, you need to match the broker and web service ports provided when you initialize the metadata (especially when you use a different port from default) of the cluster.</p>
 <p>The following is an example configuration:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Local ZooKeeper servers</span>
-<span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 <span class="hljs-comment">
 # Configuration store quorum connection string.</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
 
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">us-west</span>
 <span class="hljs-comment">
diff --git a/content/docs/zh-TW/next/deploy-bare-metal-multi-cluster/index.html b/content/docs/zh-TW/next/deploy-bare-metal-multi-cluster/index.html
index 72d6423..8f321ab 100644
--- a/content/docs/zh-TW/next/deploy-bare-metal-multi-cluster/index.html
+++ b/content/docs/zh-TW/next/deploy-bare-metal-multi-cluster/index.html
@@ -267,14 +267,14 @@ $ <span class="hljs-built_in">cd</span> apache-pulsar-2.9.1
 <p>Once you set up ZooKeeper, initialize cluster metadata, and spin up BookKeeper bookies, you can deploy brokers.</p>
 <h3><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-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-2-1 [...]
 <p>You can configure brokers using the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>conf/broker.conf</code></a> configuration file.</p>
-<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/zh-TW/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> parameter to reflect the local quorum and the <a href="/docs/zh-TW/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameter to refle [...]
+<p>The most important element of broker configuration is ensuring that each broker is aware of its local ZooKeeper quorum as well as the configuration store quorum. Make sure that you set the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> parameter to reflect the local quorum and the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameter to reflect the configuration store quorum (alth [...]
 <p>You also need to specify the name of the <a href="/docs/zh-TW/next/reference-terminology#cluster">cluster</a> to which the broker belongs using the <a href="/docs/zh-TW/next/reference-configuration#broker-clusterName"><code>clusterName</code></a> parameter. In addition, you need to match the broker and web service ports provided when you initialize the metadata (especially when you use a different port from default) of the cluster.</p>
 <p>The following is an example configuration:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Local ZooKeeper servers</span>
-<span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 <span class="hljs-comment">
 # Configuration store quorum connection string.</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2184,zk2.us-west.example.com:2184,zk3.us-west.example.com:2184</span>
 
 <span class="hljs-attr">clusterName</span>=<span class="hljs-string">us-west</span>
 <span class="hljs-comment">
diff --git a/content/docs/zh-TW/next/deploy-bare-metal.html b/content/docs/zh-TW/next/deploy-bare-metal.html
index 2154f61..eeb7d07 100644
--- a/content/docs/zh-TW/next/deploy-bare-metal.html
+++ b/content/docs/zh-TW/next/deploy-bare-metal.html
@@ -335,9 +335,9 @@ $ <span class="hljs-built_in">echo</span> 1 &gt; data/zookeeper/myid
 <h2><a class="anchor" aria-hidden="true" id="deploy-pulsar-brokers"></a><a href="#deploy-pulsar-brokers" 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>Pulsar brokers are the last thing you need to deploy in your Pulsar cluster. Brokers handle Pulsar messages and provide the administrative interface of Pulsar. A good choice is to run <strong>3 brokers</strong>, one for each machine that already runs a BookKeeper bookie.</p>
 <h3><a class="anchor" aria-hidden="true" id="configure-brokers"></a><a href="#configure-brokers" 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- [...]
-<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/zh-TW/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> and <a href="/docs/zh-TW/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store  [...]
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> and <a href="/docs/zh-TW/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, the <code>configurationMetadataS [...]
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
 <p>You also need to specify the cluster name (matching the name that you provided when you <a href="#initialize-cluster-metadata">initialize the metadata of the cluster</a>):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
diff --git a/content/docs/zh-TW/next/deploy-bare-metal/index.html b/content/docs/zh-TW/next/deploy-bare-metal/index.html
index 2154f61..eeb7d07 100644
--- a/content/docs/zh-TW/next/deploy-bare-metal/index.html
+++ b/content/docs/zh-TW/next/deploy-bare-metal/index.html
@@ -335,9 +335,9 @@ $ <span class="hljs-built_in">echo</span> 1 &gt; data/zookeeper/myid
 <h2><a class="anchor" aria-hidden="true" id="deploy-pulsar-brokers"></a><a href="#deploy-pulsar-brokers" 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>Pulsar brokers are the last thing you need to deploy in your Pulsar cluster. Brokers handle Pulsar messages and provide the administrative interface of Pulsar. A good choice is to run <strong>3 brokers</strong>, one for each machine that already runs a BookKeeper bookie.</p>
 <h3><a class="anchor" aria-hidden="true" id="configure-brokers"></a><a href="#configure-brokers" 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- [...]
-<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/zh-TW/next/reference-configuration#broker-zookeeperServers"><code>zookeeperServers</code></a> and <a href="/docs/zh-TW/next/reference-configuration#broker-configurationStoreServers"><code>configurationStoreServers</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store  [...]
-<pre><code class="hljs css language-properties"><span class="hljs-attr">zookeeperServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
-<span class="hljs-attr">configurationStoreServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<p>The most important element of broker configuration is ensuring that each broker is aware of the ZooKeeper cluster that you have deployed. Ensure that the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>metadataStoreUrl</code></a> and <a href="/docs/zh-TW/next/reference-configuration#broker"><code>configurationMetadataStoreUrl</code></a> parameters are correct. In this case, since you only have 1 cluster and no configuration store setup, the <code>configurationMetadataS [...]
+<pre><code class="hljs css language-properties"><span class="hljs-attr">metadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
+<span class="hljs-attr">configurationMetadataStoreUrl</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
 <p>You also need to specify the cluster name (matching the name that you provided when you <a href="#initialize-cluster-metadata">initialize the metadata of the cluster</a>):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
diff --git a/content/docs/zh-TW/next/develop-binary-protocol.html b/content/docs/zh-TW/next/develop-binary-protocol.html
index f6113c9..89b8a71 100644
--- a/content/docs/zh-TW/next/develop-binary-protocol.html
+++ b/content/docs/zh-TW/next/develop-binary-protocol.html
@@ -230,7 +230,7 @@
 </code></pre>
 <p>Parameters: * <code>request_id</code> → Original id of the <code>CreateProducer</code> request * <code>producer_name</code> → Generated globally unique producer name or the name specified by the client, if any.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-send"></a><a href="#command-send" 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. [...]
-<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
+<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. If a producer has not yet been created for the connection, the broker will terminate the connection. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/zh-TW/next/develop-binary-protocol/index.html b/content/docs/zh-TW/next/develop-binary-protocol/index.html
index f6113c9..89b8a71 100644
--- a/content/docs/zh-TW/next/develop-binary-protocol/index.html
+++ b/content/docs/zh-TW/next/develop-binary-protocol/index.html
@@ -230,7 +230,7 @@
 </code></pre>
 <p>Parameters: * <code>request_id</code> → Original id of the <code>CreateProducer</code> request * <code>producer_name</code> → Generated globally unique producer name or the name specified by the client, if any.</p>
 <h5><a class="anchor" aria-hidden="true" id="command-send"></a><a href="#command-send" 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. [...]
-<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
+<p>Command <code>Send</code> is used to publish a new message within the context of an already existing producer. If a producer has not yet been created for the connection, the broker will terminate the connection. This command is used in a frame that includes command as well as message payload, for which the complete format is specified in the <a href="#payload-commands">payload commands</a> section.</p>
 <pre><code class="hljs css language-protobuf"><span class="hljs-class"><span class="hljs-keyword">message</span> <span class="hljs-title">CommandSend</span> </span>{
   <span class="hljs-string">"producer_id"</span> : <span class="hljs-number">1</span>,
   <span class="hljs-string">"sequence_id"</span> : <span class="hljs-number">0</span>,
diff --git a/content/docs/zh-TW/next/reference-configuration.html b/content/docs/zh-TW/next/reference-configuration.html
index ee66a59..26e7a55 100644
--- a/content/docs/zh-TW/next/reference-configuration.html
+++ b/content/docs/zh-TW/next/reference-configuration.html
@@ -209,7 +209,7 @@
 <p>If there are multiple listeners, separate them with commas.</p>
 <p><strong>Note</strong>: do not use this configuration with <code>advertisedAddress</code> and <code>brokerServicePort</code>. If the value of this configuration is empty, the broker uses <code>advertisedAddress</code> and <code>brokerServicePort</code>|/| |internalListenerName|Specify the internal listener name for the broker.</p>
 <p><strong>Note</strong>: the listener name must be contained in <code>advertisedListeners</code>.</p>
-<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
+<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
 <ul>
 <li><p>'producer_request_hold' Policy which holds producer's send request until the resource becomes available (or holding times out)</p></li>
 <li><p>'producer_exception' Policy which throws <code>javax.jms.ResourceAllocationException</code> to the producer</p></li>
@@ -218,7 +218,7 @@
 <li><p><code>delete_when_no_subscriptions</code>: delete the topic which has no subscriptions or active producers.</p>
 <ul>
 <li><p><code>delete_when_subscriptions_caught_up</code>: delete the topic whose subscriptions have no backlogs and which has no active producers or consumers. | <code>delete_when_no_subscriptions</code> | | brokerDeleteInactiveTopicsMaxInactiveDurationSeconds | Set the maximum duration for inactive topics. If it is not specified, the <code>brokerDeleteInactiveTopicsFrequencySeconds</code> parameter is adopted. | N/A | |forceDeleteTenantAllowed| Enable you to delete a tenant forcefully. | [...]
-<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
+<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
 <p>Setting this configuration to a value <strong>greater than 0</strong> deletes inactive subscriptions automatically.<br>
 Setting this configuration to <strong>0</strong> does not delete inactive subscriptions automatically.</p>
 <p>Since this configuration takes effect on all topics, if there is even one topic whose subscriptions should not be deleted automatically, you need to set it to 0.<br>
@@ -235,7 +235,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
     - `org.apache.pulsar.broker.loadbalance.impl.OverloadShedder`
     - `org.apache.pulsar.broker.loadbalance.impl.UniformLoadShedder`
       
-    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
+    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
     |haProxyProtocolEnabled | Enable or disable the [HAProxy](http://www.haproxy.org/) protocol. |false| | maxTopicsPerNamespace | The maximum number of persistent topics that can be created in the namespace. When the number of topics reaches this threshold, the broker rejects the request of creating a new topic, including the auto-created topics by the producer or consumer, until the number of connected consumers decreases. The default value 0 disables the check. | 0 | |subscriptionType [...]
       
     Available options are `NONE`, `LZ4`, `ZLIB`, `ZSTD`, and `SNAPPY`).   
@@ -264,6 +264,20 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
       
     Example  
     enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ### Deprecated Parameters
+    
+    The following parameters have been deprecated.
+    
+    | Name                                         | Description                                                                                                     | Default |
+    | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------- |
+    | backlogQuotaDefaultLimitGB                   | Use `backlogQuotaDefaultLimitBytes` instead.                                                                    | -1      |
+    | brokerServicePurgeInactiveFrequencyInSeconds | Use `brokerDeleteInactiveTopicsFrequencySeconds`.                                                               | 60      |
+    | tlsEnabled                                   | Use `webServicePortTls` and `brokerServicePortTls` instead.                                                     | false   |
+    | replicationTlsEnabled                        | Enable TLS when talking with other clusters to replicate messages. Use `brokerClientTlsEnabled` instead.        | false   |
+    | subscriptionKeySharedEnable                  | Whether to enable the Key_Shared subscription. Use `subscriptionTypesEnabled` instead.                          | true    |
+    | zookeeperServers                             | Zookeeper quorum connection string. Use `metadataStoreUrl` instead.                                             | N/A     |
+    | configurationStoreServers                    | Configuration store connection string (as a comma-separated list). Use `configurationMetadataStoreUrl` instead. | N/A     |
+    
     ## Client
     
     You can use the [`pulsar-client`](/docs/zh-TW/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
@@ -337,7 +351,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
                                     
                                     | Name                                 | Description                            | Default |
                                     | ------------------------------------ | -------------------------------------- | ------- |
-                                    | configurationStoreServers            |                                        |         |
+                                    | configurationMetadataStoreUrl        |                                        |         |
                                     | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
                                     | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
                                     | serviceUrl                           |                                        |         |
diff --git a/content/docs/zh-TW/next/reference-configuration/index.html b/content/docs/zh-TW/next/reference-configuration/index.html
index ee66a59..26e7a55 100644
--- a/content/docs/zh-TW/next/reference-configuration/index.html
+++ b/content/docs/zh-TW/next/reference-configuration/index.html
@@ -209,7 +209,7 @@
 <p>If there are multiple listeners, separate them with commas.</p>
 <p><strong>Note</strong>: do not use this configuration with <code>advertisedAddress</code> and <code>brokerServicePort</code>. If the value of this configuration is empty, the broker uses <code>advertisedAddress</code> and <code>brokerServicePort</code>|/| |internalListenerName|Specify the internal listener name for the broker.</p>
 <p><strong>Note</strong>: the listener name must be contained in <code>advertisedListeners</code>.</p>
-<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
+<p>If the value of this configuration is empty, the broker uses the first listener as the internal listener.|/| |authenticateOriginalAuthData| If this flag is set to <code>true</code>, the broker authenticates the original Auth data; else it just accepts the originalPrincipal and authorizes it (if required). |false| |enablePersistentTopics| Whether persistent topics are enabled on the broker |true| |enableNonPersistentTopics| Whether non-persistent topics are enabled on the broker |true| [...]
 <ul>
 <li><p>'producer_request_hold' Policy which holds producer's send request until the resource becomes available (or holding times out)</p></li>
 <li><p>'producer_exception' Policy which throws <code>javax.jms.ResourceAllocationException</code> to the producer</p></li>
@@ -218,7 +218,7 @@
 <li><p><code>delete_when_no_subscriptions</code>: delete the topic which has no subscriptions or active producers.</p>
 <ul>
 <li><p><code>delete_when_subscriptions_caught_up</code>: delete the topic whose subscriptions have no backlogs and which has no active producers or consumers. | <code>delete_when_no_subscriptions</code> | | brokerDeleteInactiveTopicsMaxInactiveDurationSeconds | Set the maximum duration for inactive topics. If it is not specified, the <code>brokerDeleteInactiveTopicsFrequencySeconds</code> parameter is adopted. | N/A | |forceDeleteTenantAllowed| Enable you to delete a tenant forcefully. | [...]
-<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
+<p>Set this threshold to 0 means disabling the compression check.|N/A |delayedDeliveryEnabled| Whether to enable the delayed delivery for messages. If disabled, messages will be immediately delivered and there will be no tracking overhead.|true| |delayedDeliveryTickTimeMillis|Control the tick time for retrying on delayed delivery, which affects the accuracy of the delivery time compared to the scheduled time. By default, it is 1 second.|1000| |activeConsumerFailoverDelayTimeMillis| How l [...]
 <p>Setting this configuration to a value <strong>greater than 0</strong> deletes inactive subscriptions automatically.<br>
 Setting this configuration to <strong>0</strong> does not delete inactive subscriptions automatically.</p>
 <p>Since this configuration takes effect on all topics, if there is even one topic whose subscriptions should not be deleted automatically, you need to set it to 0.<br>
@@ -235,7 +235,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
     - `org.apache.pulsar.broker.loadbalance.impl.OverloadShedder`
     - `org.apache.pulsar.broker.loadbalance.impl.UniformLoadShedder`
       
-    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
+    For the comparisons of the shedding strategies, see [here](administration-load-balance/#shed-load-automatically).|`org.apache.pulsar.broker.loadbalance.impl.ThresholdShedder` |replicationMetricsEnabled| Enable replication metrics |true| |replicationConnectionsPerBroker| Max number of connections to open for each broker in a remote cluster More connections host-to-host lead to better throughput over high-latency links. |16| |replicationProducerQueueSize| Replicator producer queue size [...]
     |haProxyProtocolEnabled | Enable or disable the [HAProxy](http://www.haproxy.org/) protocol. |false| | maxTopicsPerNamespace | The maximum number of persistent topics that can be created in the namespace. When the number of topics reaches this threshold, the broker rejects the request of creating a new topic, including the auto-created topics by the producer or consumer, until the number of connected consumers decreases. The default value 0 disables the check. | 0 | |subscriptionType [...]
       
     Available options are `NONE`, `LZ4`, `ZLIB`, `ZSTD`, and `SNAPPY`).   
@@ -264,6 +264,20 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
       
     Example  
     enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ### Deprecated Parameters
+    
+    The following parameters have been deprecated.
+    
+    | Name                                         | Description                                                                                                     | Default |
+    | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------- |
+    | backlogQuotaDefaultLimitGB                   | Use `backlogQuotaDefaultLimitBytes` instead.                                                                    | -1      |
+    | brokerServicePurgeInactiveFrequencyInSeconds | Use `brokerDeleteInactiveTopicsFrequencySeconds`.                                                               | 60      |
+    | tlsEnabled                                   | Use `webServicePortTls` and `brokerServicePortTls` instead.                                                     | false   |
+    | replicationTlsEnabled                        | Enable TLS when talking with other clusters to replicate messages. Use `brokerClientTlsEnabled` instead.        | false   |
+    | subscriptionKeySharedEnable                  | Whether to enable the Key_Shared subscription. Use `subscriptionTypesEnabled` instead.                          | true    |
+    | zookeeperServers                             | Zookeeper quorum connection string. Use `metadataStoreUrl` instead.                                             | N/A     |
+    | configurationStoreServers                    | Configuration store connection string (as a comma-separated list). Use `configurationMetadataStoreUrl` instead. | N/A     |
+    
     ## Client
     
     You can use the [`pulsar-client`](/docs/zh-TW/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
@@ -337,7 +351,7 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
                                     
                                     | Name                                 | Description                            | Default |
                                     | ------------------------------------ | -------------------------------------- | ------- |
-                                    | configurationStoreServers            |                                        |         |
+                                    | configurationMetadataStoreUrl        |                                        |         |
                                     | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
                                     | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
                                     | serviceUrl                           |                                        |         |
diff --git a/content/swagger/2.10.0-SNAPSHOT/swagger.json b/content/swagger/2.10.0-SNAPSHOT/swagger.json
index abba003..b315d7b 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swagger.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swagger.json
@@ -418,7 +418,7 @@
     "/brokers/configuration/{configName}" : {
       "delete" : {
         "tags" : [ "brokers" ],
-        "summary" : "Delete dynamic serviceconfiguration into zk only. This operation requires Pulsar super-user privileges.",
+        "summary" : "Delete dynamic ServiceConfiguration into metadata only. This operation requires Pulsar super-user privileges.",
         "description" : "",
         "operationId" : "deleteDynamicConfiguration",
         "produces" : [ "application/json" ],
@@ -21046,9 +21046,6 @@
     "ArrayBuilders" : {
       "type" : "object",
       "properties" : {
-        "doubleBuilder" : {
-          "$ref" : "#/definitions/DoubleBuilder"
-        },
         "booleanBuilder" : {
           "$ref" : "#/definitions/BooleanBuilder"
         },
@@ -21066,6 +21063,9 @@
         },
         "floatBuilder" : {
           "$ref" : "#/definitions/FloatBuilder"
+        },
+        "doubleBuilder" : {
+          "$ref" : "#/definitions/DoubleBuilder"
         }
       }
     },
@@ -21447,13 +21447,13 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -21465,13 +21465,13 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -21483,13 +21483,13 @@
     "CompletableFuturePartitionedTopicMetadata" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -21501,13 +21501,13 @@
     "CompletableFutureVoid" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -21559,21 +21559,13 @@
           "type" : "number",
           "format" : "double"
         },
-        "unackedMessages" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "msgThroughputOut" : {
+        "chunkedMessageRate" : {
           "type" : "number",
           "format" : "double"
         },
-        "bytesOutCounter" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "msgOutCounter" : {
+        "unackedMessages" : {
           "type" : "integer",
-          "format" : "int64"
+          "format" : "int32"
         },
         "lastConsumedTimestamp" : {
           "type" : "integer",
@@ -21602,10 +21594,18 @@
             "type" : "string"
           }
         },
-        "chunkedMessageRate" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
+        "bytesOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "msgOutCounter" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "consumerName" : {
           "type" : "string"
         },
@@ -21635,10 +21635,10 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "numericCodeAsString" : {
+        "displayName" : {
           "type" : "string"
         },
-        "displayName" : {
+        "numericCodeAsString" : {
           "type" : "string"
         },
         "symbol" : {
@@ -21761,15 +21761,15 @@
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
-        },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "deserializationFeatures" : {
           "type" : "integer",
           "format" : "int32"
@@ -21780,18 +21780,18 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "subtypeResolver" : {
-          "$ref" : "#/definitions/SubtypeResolver"
-        },
         "rootName" : {
           "type" : "string"
         },
-        "defaultVisibilityChecker" : {
-          "$ref" : "#/definitions/VisibilityCheckerObject"
+        "subtypeResolver" : {
+          "$ref" : "#/definitions/SubtypeResolver"
         },
         "fullRootName" : {
           "$ref" : "#/definitions/PropertyName"
         },
+        "defaultVisibilityChecker" : {
+          "$ref" : "#/definitions/VisibilityCheckerObject"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
@@ -21801,15 +21801,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "handlerInstantiator" : {
+          "$ref" : "#/definitions/HandlerInstantiator"
+        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
-        "handlerInstantiator" : {
-          "$ref" : "#/definitions/HandlerInstantiator"
-        },
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
@@ -21836,18 +21836,18 @@
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
         },
-        "typeFactory" : {
-          "$ref" : "#/definitions/TypeFactory"
-        },
         "parser" : {
           "$ref" : "#/definitions/JsonParser"
         },
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
+        "typeFactory" : {
+          "$ref" : "#/definitions/TypeFactory"
         },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "contextualType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -22231,6 +22231,9 @@
     "JsonFactory" : {
       "type" : "object",
       "properties" : {
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -22245,9 +22248,6 @@
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
         }
       }
     },
@@ -22257,18 +22257,29 @@
         "closed" : {
           "type" : "boolean"
         },
-        "codec" : {
-          "$ref" : "#/definitions/ObjectCodec"
-        },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "codec" : {
+          "$ref" : "#/definitions/ObjectCodec"
+        },
         "prettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
         "characterEscapes" : {
           "$ref" : "#/definitions/CharacterEscapes"
         },
+        "currentValue" : {
+          "type" : "object"
+        },
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "highestEscapedChar" : {
           "type" : "integer",
           "format" : "int32"
@@ -22282,17 +22293,6 @@
         },
         "outputContext" : {
           "$ref" : "#/definitions/JsonStreamContext"
-        },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "currentValue" : {
-          "type" : "object"
         }
       }
     },
@@ -22372,15 +22372,15 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "codec" : {
-          "$ref" : "#/definitions/ObjectCodec"
-        },
         "typeId" : {
           "type" : "object"
         },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "codec" : {
+          "$ref" : "#/definitions/ObjectCodec"
+        },
         "currentToken" : {
           "type" : "string",
           "enum" : [ "NOT_AVAILABLE", "START_OBJECT", "END_OBJECT", "START_ARRAY", "END_ARRAY", "FIELD_NAME", "VALUE_EMBEDDED_OBJECT", "VALUE_STRING", "VALUE_NUMBER_INT", "VALUE_NUMBER_FLOAT", "VALUE_TRUE", "VALUE_FALSE", "VALUE_NULL" ]
@@ -22388,13 +22388,8 @@
         "currentName" : {
           "type" : "string"
         },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
         },
         "currentTokenId" : {
           "type" : "integer",
@@ -22403,9 +22398,6 @@
         "parsingContext" : {
           "$ref" : "#/definitions/JsonStreamContext"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
-        },
         "currentLocation" : {
           "$ref" : "#/definitions/JsonLocation"
         },
@@ -22469,6 +22461,14 @@
         },
         "currentValue" : {
           "type" : "object"
+        },
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         }
       }
     },
@@ -22483,11 +22483,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -22800,25 +22800,6 @@
           "type" : "number",
           "format" : "double"
         },
-        "underLoaded" : {
-          "type" : "boolean"
-        },
-        "overLoaded" : {
-          "type" : "boolean"
-        },
-        "cpu" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
-        "directMemory" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
-        "lastUpdate" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "loadReportType" : {
-          "type" : "string"
-        },
         "bandwidthIn" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
@@ -22835,12 +22816,34 @@
         "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
+        },
+        "cpu" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "directMemory" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "lastUpdate" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "underLoaded" : {
+          "type" : "boolean"
+        },
+        "overLoaded" : {
+          "type" : "boolean"
+        },
+        "loadReportType" : {
+          "type" : "string"
         }
       }
     },
     "Locale" : {
       "type" : "object",
       "properties" : {
+        "displayName" : {
+          "type" : "string"
+        },
         "script" : {
           "type" : "string"
         },
@@ -22889,9 +22892,6 @@
         "displayVariant" : {
           "type" : "string"
         },
-        "displayName" : {
-          "type" : "string"
-        },
         "language" : {
           "type" : "string"
         }
@@ -23114,11 +23114,7 @@
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "averageMsgSize" : {
+        "chunkedMessageRate" : {
           "type" : "number",
           "format" : "double"
         },
@@ -23129,13 +23125,17 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "supportsPartialProducer" : {
-          "type" : "boolean"
+        "msgThroughputIn" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "chunkedMessageRate" : {
+        "averageMsgSize" : {
           "type" : "number",
           "format" : "double"
         },
+        "supportsPartialProducer" : {
+          "type" : "boolean"
+        },
         "connectedSince" : {
           "type" : "string"
         },
@@ -23163,6 +23163,10 @@
           "type" : "number",
           "format" : "double"
         },
+        "msgRateExpired" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "replicationBacklog" : {
           "type" : "integer",
           "format" : "int64"
@@ -23179,10 +23183,6 @@
         "outboundConnectedSince" : {
           "type" : "string"
         },
-        "msgRateExpired" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
@@ -23221,58 +23221,44 @@
           "type" : "number",
           "format" : "double"
         },
-        "msgRateRedeliver" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "consumersAfterMarkDeletePosition" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
-          }
-        },
-        "blockedSubscriptionOnUnackedMsgs" : {
-          "type" : "boolean"
-        },
-        "msgDelayed" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "unackedMessages" : {
+        "msgBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgRateExpired" : {
+        "msgRateRedeliver" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
+        "chunkedMessageRate" : {
+          "type" : "integer",
+          "format" : "int32"
         },
-        "bytesOutCounter" : {
+        "earliestMsgPublishTimeInBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgOutCounter" : {
+        "msgBacklogNoDelayed" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
+        "blockedSubscriptionOnUnackedMsgs" : {
+          "type" : "boolean"
         },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+        "msgDelayed" : {
           "type" : "integer",
-          "format" : "int32"
+          "format" : "int64"
         },
-        "msgBacklog" : {
+        "unackedMessages" : {
           "type" : "integer",
           "format" : "int64"
         },
         "activeConsumerName" : {
           "type" : "string"
         },
+        "msgRateExpired" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "totalMsgExpired" : {
           "type" : "integer",
           "format" : "int64"
@@ -23303,29 +23289,43 @@
             "$ref" : "#/definitions/ConsumerStats"
           }
         },
-        "allowOutOfOrderDelivery" : {
-          "type" : "boolean"
-        },
-        "keySharedMode" : {
-          "type" : "string"
+        "consumersAfterMarkDeletePosition" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
         },
-        "chunkedMessageRate" : {
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "earliestMsgPublishTimeInBacklog" : {
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "bytesOutCounter" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgBacklogNoDelayed" : {
+        "msgOutCounter" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "nonContiguousDeletedMessagesRanges" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "subscriptionProperties" : {
           "type" : "object",
           "additionalProperties" : {
             "type" : "string"
           }
+        },
+        "allowOutOfOrderDelivery" : {
+          "type" : "boolean"
+        },
+        "keySharedMode" : {
+          "type" : "string"
         }
       }
     },
@@ -23366,6 +23366,13 @@
           "type" : "number",
           "format" : "double"
         },
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "compaction" : {
+          "$ref" : "#/definitions/CompactionStats"
+        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
@@ -23423,13 +23430,6 @@
         "nonContiguousDeletedMessagesRanges" : {
           "type" : "integer",
           "format" : "int32"
-        },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "compaction" : {
-          "$ref" : "#/definitions/CompactionStats"
         }
       }
     },
@@ -23487,6 +23487,9 @@
         "factory" : {
           "$ref" : "#/definitions/JsonFactory"
         },
+        "typeFactory" : {
+          "$ref" : "#/definitions/TypeFactory"
+        },
         "serializationConfig" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
@@ -23511,9 +23514,6 @@
         "subtypeResolver" : {
           "$ref" : "#/definitions/SubtypeResolver"
         },
-        "typeFactory" : {
-          "$ref" : "#/definitions/TypeFactory"
-        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
@@ -23556,9 +23556,8 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "managedLedgerOffloadedReadPriority" : {
-          "type" : "string",
-          "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
+        "fileSystemURI" : {
+          "type" : "string"
         },
         "s3ManagedLedgerOffloadRegion" : {
           "type" : "string"
@@ -23583,9 +23582,6 @@
         "s3ManagedLedgerOffloadCredentialSecret" : {
           "type" : "string"
         },
-        "fileSystemURI" : {
-          "type" : "string"
-        },
         "s3ManagedLedgerOffloadRole" : {
           "type" : "string"
         },
@@ -23602,6 +23598,13 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "fileSystemProfilePath" : {
+          "type" : "string"
+        },
+        "managedLedgerOffloadedReadPriority" : {
+          "type" : "string",
+          "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
+        },
         "gcsManagedLedgerOffloadReadBufferSizeInBytes" : {
           "type" : "integer",
           "format" : "int32"
@@ -23609,9 +23612,6 @@
         "gcsManagedLedgerOffloadServiceAccountKeyFile" : {
           "type" : "string"
         },
-        "fileSystemProfilePath" : {
-          "type" : "string"
-        },
         "managedLedgerOffloadBucket" : {
           "type" : "string"
         },
@@ -24351,9 +24351,6 @@
     "PublicKey" : {
       "type" : "object",
       "properties" : {
-        "format" : {
-          "type" : "string"
-        },
         "algorithm" : {
           "type" : "string"
         },
@@ -24363,6 +24360,9 @@
             "type" : "string",
             "format" : "byte"
           }
+        },
+        "format" : {
+          "type" : "string"
         }
       }
     },
@@ -24398,11 +24398,7 @@
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "averageMsgSize" : {
+        "chunkedMessageRate" : {
           "type" : "number",
           "format" : "double"
         },
@@ -24413,13 +24409,17 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "supportsPartialProducer" : {
-          "type" : "boolean"
+        "msgThroughputIn" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "chunkedMessageRate" : {
+        "averageMsgSize" : {
           "type" : "number",
           "format" : "double"
         },
+        "supportsPartialProducer" : {
+          "type" : "boolean"
+        },
         "connectedSince" : {
           "type" : "string"
         },
@@ -24451,6 +24451,10 @@
           "type" : "number",
           "format" : "double"
         },
+        "msgRateExpired" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "replicationBacklog" : {
           "type" : "integer",
           "format" : "int64"
@@ -24467,10 +24471,6 @@
         "outboundConnectedSince" : {
           "type" : "string"
         },
-        "msgRateExpired" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
@@ -24576,11 +24576,11 @@
     "ResourceUnit" : {
       "type" : "object",
       "properties" : {
-        "availableResource" : {
-          "$ref" : "#/definitions/ResourceDescription"
-        },
         "resourceId" : {
           "type" : "string"
+        },
+        "availableResource" : {
+          "$ref" : "#/definitions/ResourceDescription"
         }
       }
     },
@@ -24656,18 +24656,18 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "subtypeResolver" : {
-          "$ref" : "#/definitions/SubtypeResolver"
-        },
         "rootName" : {
           "type" : "string"
         },
-        "defaultVisibilityChecker" : {
-          "$ref" : "#/definitions/VisibilityCheckerObject"
+        "subtypeResolver" : {
+          "$ref" : "#/definitions/SubtypeResolver"
         },
         "fullRootName" : {
           "$ref" : "#/definitions/PropertyName"
         },
+        "defaultVisibilityChecker" : {
+          "$ref" : "#/definitions/VisibilityCheckerObject"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
@@ -24677,15 +24677,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "handlerInstantiator" : {
+          "$ref" : "#/definitions/HandlerInstantiator"
+        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
-        "handlerInstantiator" : {
-          "$ref" : "#/definitions/HandlerInstantiator"
-        },
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
@@ -24703,15 +24703,15 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
         "timeZone" : {
           "$ref" : "#/definitions/TimeZone"
         },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
-        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
@@ -24839,58 +24839,44 @@
           "type" : "number",
           "format" : "double"
         },
-        "msgRateRedeliver" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "consumersAfterMarkDeletePosition" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
-          }
-        },
-        "blockedSubscriptionOnUnackedMsgs" : {
-          "type" : "boolean"
-        },
-        "msgDelayed" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "unackedMessages" : {
+        "msgBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgRateExpired" : {
+        "msgRateRedeliver" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
+        "chunkedMessageRate" : {
+          "type" : "integer",
+          "format" : "int32"
         },
-        "bytesOutCounter" : {
+        "earliestMsgPublishTimeInBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgOutCounter" : {
+        "msgBacklogNoDelayed" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "nonContiguousDeletedMessagesRanges" : {
-          "type" : "integer",
-          "format" : "int32"
+        "blockedSubscriptionOnUnackedMsgs" : {
+          "type" : "boolean"
         },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+        "msgDelayed" : {
           "type" : "integer",
-          "format" : "int32"
+          "format" : "int64"
         },
-        "msgBacklog" : {
+        "unackedMessages" : {
           "type" : "integer",
           "format" : "int64"
         },
         "activeConsumerName" : {
           "type" : "string"
         },
+        "msgRateExpired" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "totalMsgExpired" : {
           "type" : "integer",
           "format" : "int64"
@@ -24921,29 +24907,43 @@
             "$ref" : "#/definitions/ConsumerStats"
           }
         },
-        "allowOutOfOrderDelivery" : {
-          "type" : "boolean"
-        },
-        "keySharedMode" : {
-          "type" : "string"
+        "consumersAfterMarkDeletePosition" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
         },
-        "chunkedMessageRate" : {
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "earliestMsgPublishTimeInBacklog" : {
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "bytesOutCounter" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgBacklogNoDelayed" : {
+        "msgOutCounter" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "nonContiguousDeletedMessagesRanges" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "subscriptionProperties" : {
           "type" : "object",
           "additionalProperties" : {
             "type" : "string"
           }
+        },
+        "allowOutOfOrderDelivery" : {
+          "type" : "boolean"
+        },
+        "keySharedMode" : {
+          "type" : "string"
         }
       }
     },
@@ -25006,6 +25006,9 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
+        "displayName" : {
+          "type" : "string"
+        },
         "id" : {
           "type" : "string"
         },
@@ -25016,9 +25019,6 @@
         "rawOffset" : {
           "type" : "integer",
           "format" : "int32"
-        },
-        "displayName" : {
-          "type" : "string"
         }
       }
     },
@@ -25043,6 +25043,13 @@
           "type" : "number",
           "format" : "double"
         },
+        "nonContiguousDeletedMessagesRangesSerializedSize" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "compaction" : {
+          "$ref" : "#/definitions/CompactionStats"
+        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
@@ -25082,16 +25089,16 @@
           "type" : "integer",
           "format" : "int64"
         },
+        "offloadedStorageSize" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "publishers" : {
           "type" : "array",
           "items" : {
             "$ref" : "#/definitions/PublisherStats"
           }
         },
-        "offloadedStorageSize" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "waitingPublishers" : {
           "type" : "integer",
           "format" : "int32"
@@ -25112,13 +25119,6 @@
         "nonContiguousDeletedMessagesRanges" : {
           "type" : "integer",
           "format" : "int32"
-        },
-        "nonContiguousDeletedMessagesRangesSerializedSize" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "compaction" : {
-          "$ref" : "#/definitions/CompactionStats"
         }
       }
     },
@@ -25206,6 +25206,18 @@
         "configurationMetadataStoreUrl" : {
           "type" : "string"
         },
+        "metadataStoreSessionTimeoutMillis" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "metadataStoreOperationTimeoutSeconds" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "metadataStoreCacheExpirySeconds" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "zooKeeperSessionTimeoutMillis" : {
           "type" : "integer",
           "format" : "int64"
@@ -25530,12 +25542,6 @@
         "initialized" : {
           "type" : "boolean"
         },
-        "sinks" : {
-          "$ref" : "#/definitions/SinksWorkerService"
-        },
-        "functions" : {
-          "$ref" : "#/definitions/FunctionsWorkerService"
-        },
         "functionsV2" : {
           "$ref" : "#/definitions/FunctionsV2WorkerService"
         },
@@ -25544,6 +25550,12 @@
         },
         "workerConfig" : {
           "$ref" : "#/definitions/WorkerConfig"
+        },
+        "functions" : {
+          "$ref" : "#/definitions/FunctionsWorkerService"
+        },
+        "sinks" : {
+          "$ref" : "#/definitions/SinksWorkerService"
         }
       }
     },
@@ -25580,6 +25592,12 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
+        "keyUsage" : {
+          "type" : "array",
+          "items" : {
+            "type" : "boolean"
+          }
+        },
         "issuerDN" : {
           "$ref" : "#/definitions/Principal"
         },
@@ -25590,23 +25608,6 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "signature" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
-        "basicConstraints" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "keyUsage" : {
-          "type" : "array",
-          "items" : {
-            "type" : "boolean"
-          }
-        },
         "sigAlgName" : {
           "type" : "string"
         },
@@ -25656,6 +25657,17 @@
             "type" : "string"
           }
         },
+        "signature" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
+        "basicConstraints" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "subjectAlternativeNames" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json b/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
index 824f63d..567efae 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
@@ -936,9 +936,6 @@
     "ArrayBuilders" : {
       "type" : "object",
       "properties" : {
-        "doubleBuilder" : {
-          "$ref" : "#/definitions/DoubleBuilder"
-        },
         "booleanBuilder" : {
           "$ref" : "#/definitions/BooleanBuilder"
         },
@@ -956,6 +953,9 @@
         },
         "floatBuilder" : {
           "$ref" : "#/definitions/FloatBuilder"
+        },
+        "doubleBuilder" : {
+          "$ref" : "#/definitions/DoubleBuilder"
         }
       }
     },
@@ -1048,13 +1048,13 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -1066,13 +1066,13 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -1084,13 +1084,13 @@
     "CompletableFutureVoid" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -1180,10 +1180,10 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "numericCodeAsString" : {
+        "displayName" : {
           "type" : "string"
         },
-        "displayName" : {
+        "numericCodeAsString" : {
           "type" : "string"
         },
         "symbol" : {
@@ -1212,15 +1212,15 @@
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
-        },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "deserializationFeatures" : {
           "type" : "integer",
           "format" : "int32"
@@ -1231,18 +1231,18 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "subtypeResolver" : {
-          "$ref" : "#/definitions/SubtypeResolver"
-        },
         "rootName" : {
           "type" : "string"
         },
-        "defaultVisibilityChecker" : {
-          "$ref" : "#/definitions/VisibilityCheckerObject"
+        "subtypeResolver" : {
+          "$ref" : "#/definitions/SubtypeResolver"
         },
         "fullRootName" : {
           "$ref" : "#/definitions/PropertyName"
         },
+        "defaultVisibilityChecker" : {
+          "$ref" : "#/definitions/VisibilityCheckerObject"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
@@ -1252,15 +1252,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "handlerInstantiator" : {
+          "$ref" : "#/definitions/HandlerInstantiator"
+        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
-        "handlerInstantiator" : {
-          "$ref" : "#/definitions/HandlerInstantiator"
-        },
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
@@ -1287,18 +1287,18 @@
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
         },
-        "typeFactory" : {
-          "$ref" : "#/definitions/TypeFactory"
-        },
         "parser" : {
           "$ref" : "#/definitions/JsonParser"
         },
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
+        "typeFactory" : {
+          "$ref" : "#/definitions/TypeFactory"
         },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "contextualType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -1946,6 +1946,9 @@
     "JsonFactory" : {
       "type" : "object",
       "properties" : {
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -1960,9 +1963,6 @@
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
         }
       }
     },
@@ -1972,18 +1972,29 @@
         "closed" : {
           "type" : "boolean"
         },
-        "codec" : {
-          "$ref" : "#/definitions/ObjectCodec"
-        },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "codec" : {
+          "$ref" : "#/definitions/ObjectCodec"
+        },
         "prettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
         "characterEscapes" : {
           "$ref" : "#/definitions/CharacterEscapes"
         },
+        "currentValue" : {
+          "type" : "object"
+        },
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "highestEscapedChar" : {
           "type" : "integer",
           "format" : "int32"
@@ -1997,17 +2008,6 @@
         },
         "outputContext" : {
           "$ref" : "#/definitions/JsonStreamContext"
-        },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "currentValue" : {
-          "type" : "object"
         }
       }
     },
@@ -2087,15 +2087,15 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "codec" : {
-          "$ref" : "#/definitions/ObjectCodec"
-        },
         "typeId" : {
           "type" : "object"
         },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "codec" : {
+          "$ref" : "#/definitions/ObjectCodec"
+        },
         "currentToken" : {
           "type" : "string",
           "enum" : [ "NOT_AVAILABLE", "START_OBJECT", "END_OBJECT", "START_ARRAY", "END_ARRAY", "FIELD_NAME", "VALUE_EMBEDDED_OBJECT", "VALUE_STRING", "VALUE_NUMBER_INT", "VALUE_NUMBER_FLOAT", "VALUE_TRUE", "VALUE_FALSE", "VALUE_NULL" ]
@@ -2103,13 +2103,8 @@
         "currentName" : {
           "type" : "string"
         },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
         },
         "currentTokenId" : {
           "type" : "integer",
@@ -2118,9 +2113,6 @@
         "parsingContext" : {
           "$ref" : "#/definitions/JsonStreamContext"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
-        },
         "currentLocation" : {
           "$ref" : "#/definitions/JsonLocation"
         },
@@ -2184,6 +2176,14 @@
         },
         "currentValue" : {
           "type" : "object"
+        },
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         }
       }
     },
@@ -2198,11 +2198,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -2240,6 +2240,9 @@
     "Locale" : {
       "type" : "object",
       "properties" : {
+        "displayName" : {
+          "type" : "string"
+        },
         "script" : {
           "type" : "string"
         },
@@ -2288,9 +2291,6 @@
         "displayVariant" : {
           "type" : "string"
         },
-        "displayName" : {
-          "type" : "string"
-        },
         "language" : {
           "type" : "string"
         }
@@ -2332,23 +2332,6 @@
             "format" : "byte"
           }
         },
-        "messageId" : {
-          "$ref" : "#/definitions/MessageId"
-        },
-        "encryptionCtx" : {
-          "$ref" : "#/definitions/EncryptionContext"
-        },
-        "redeliveryCount" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "readerSchema" : {
-          "$ref" : "#/definitions/SchemaObject"
-        },
-        "brokerPublishTime" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "publishTime" : {
           "type" : "integer",
           "format" : "int64"
@@ -2386,6 +2369,23 @@
         },
         "topicName" : {
           "type" : "string"
+        },
+        "messageId" : {
+          "$ref" : "#/definitions/MessageId"
+        },
+        "encryptionCtx" : {
+          "$ref" : "#/definitions/EncryptionContext"
+        },
+        "redeliveryCount" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "readerSchema" : {
+          "$ref" : "#/definitions/SchemaObject"
+        },
+        "brokerPublishTime" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -2499,6 +2499,9 @@
         "factory" : {
           "$ref" : "#/definitions/JsonFactory"
         },
+        "typeFactory" : {
+          "$ref" : "#/definitions/TypeFactory"
+        },
         "serializationConfig" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
@@ -2523,9 +2526,6 @@
         "subtypeResolver" : {
           "$ref" : "#/definitions/SubtypeResolver"
         },
-        "typeFactory" : {
-          "$ref" : "#/definitions/TypeFactory"
-        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
@@ -2640,9 +2640,6 @@
     "PublicKey" : {
       "type" : "object",
       "properties" : {
-        "format" : {
-          "type" : "string"
-        },
         "algorithm" : {
           "type" : "string"
         },
@@ -2652,6 +2649,9 @@
             "type" : "string",
             "format" : "byte"
           }
+        },
+        "format" : {
+          "type" : "string"
         }
       }
     },
@@ -2675,11 +2675,11 @@
     "Schema" : {
       "type" : "object",
       "properties" : {
-        "nativeSchema" : {
-          "type" : "object"
-        },
         "schemaInfo" : {
           "$ref" : "#/definitions/SchemaInfo"
+        },
+        "nativeSchema" : {
+          "type" : "object"
         }
       }
     },
@@ -2714,11 +2714,11 @@
     "SchemaObject" : {
       "type" : "object",
       "properties" : {
-        "nativeSchema" : {
-          "type" : "object"
-        },
         "schemaInfo" : {
           "$ref" : "#/definitions/SchemaInfo"
+        },
+        "nativeSchema" : {
+          "type" : "object"
         }
       }
     },
@@ -2748,18 +2748,18 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "subtypeResolver" : {
-          "$ref" : "#/definitions/SubtypeResolver"
-        },
         "rootName" : {
           "type" : "string"
         },
-        "defaultVisibilityChecker" : {
-          "$ref" : "#/definitions/VisibilityCheckerObject"
+        "subtypeResolver" : {
+          "$ref" : "#/definitions/SubtypeResolver"
         },
         "fullRootName" : {
           "$ref" : "#/definitions/PropertyName"
         },
+        "defaultVisibilityChecker" : {
+          "$ref" : "#/definitions/VisibilityCheckerObject"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
@@ -2769,15 +2769,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "handlerInstantiator" : {
+          "$ref" : "#/definitions/HandlerInstantiator"
+        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
-        "handlerInstantiator" : {
-          "$ref" : "#/definitions/HandlerInstantiator"
-        },
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
@@ -2795,15 +2795,15 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
         "timeZone" : {
           "$ref" : "#/definitions/TimeZone"
         },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
-        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
@@ -2836,6 +2836,9 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
+        "displayName" : {
+          "type" : "string"
+        },
         "id" : {
           "type" : "string"
         },
@@ -2846,9 +2849,6 @@
         "rawOffset" : {
           "type" : "integer",
           "format" : "int32"
-        },
-        "displayName" : {
-          "type" : "string"
         }
       }
     },
@@ -2968,6 +2968,12 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
+        "keyUsage" : {
+          "type" : "array",
+          "items" : {
+            "type" : "boolean"
+          }
+        },
         "issuerDN" : {
           "$ref" : "#/definitions/Principal"
         },
@@ -2978,23 +2984,6 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "signature" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
-        "basicConstraints" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "keyUsage" : {
-          "type" : "array",
-          "items" : {
-            "type" : "boolean"
-          }
-        },
         "sigAlgName" : {
           "type" : "string"
         },
@@ -3044,6 +3033,17 @@
             "type" : "string"
           }
         },
+        "signature" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
+        "basicConstraints" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "subjectAlternativeNames" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json b/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
index c8cc7c1..655897b 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
@@ -385,9 +385,6 @@
     "ArrayBuilders" : {
       "type" : "object",
       "properties" : {
-        "doubleBuilder" : {
-          "$ref" : "#/definitions/DoubleBuilder"
-        },
         "booleanBuilder" : {
           "$ref" : "#/definitions/BooleanBuilder"
         },
@@ -405,6 +402,9 @@
         },
         "floatBuilder" : {
           "$ref" : "#/definitions/FloatBuilder"
+        },
+        "doubleBuilder" : {
+          "$ref" : "#/definitions/DoubleBuilder"
         }
       }
     },
@@ -497,13 +497,13 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -515,13 +515,13 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -533,13 +533,13 @@
     "CompletableFutureVoid" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -565,10 +565,10 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "numericCodeAsString" : {
+        "displayName" : {
           "type" : "string"
         },
-        "displayName" : {
+        "numericCodeAsString" : {
           "type" : "string"
         },
         "symbol" : {
@@ -597,15 +597,15 @@
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
-        },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "deserializationFeatures" : {
           "type" : "integer",
           "format" : "int32"
@@ -616,18 +616,18 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "subtypeResolver" : {
-          "$ref" : "#/definitions/SubtypeResolver"
-        },
         "rootName" : {
           "type" : "string"
         },
-        "defaultVisibilityChecker" : {
-          "$ref" : "#/definitions/VisibilityCheckerObject"
+        "subtypeResolver" : {
+          "$ref" : "#/definitions/SubtypeResolver"
         },
         "fullRootName" : {
           "$ref" : "#/definitions/PropertyName"
         },
+        "defaultVisibilityChecker" : {
+          "$ref" : "#/definitions/VisibilityCheckerObject"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
@@ -637,15 +637,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "handlerInstantiator" : {
+          "$ref" : "#/definitions/HandlerInstantiator"
+        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
-        "handlerInstantiator" : {
-          "$ref" : "#/definitions/HandlerInstantiator"
-        },
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
@@ -672,18 +672,18 @@
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
         },
-        "typeFactory" : {
-          "$ref" : "#/definitions/TypeFactory"
-        },
         "parser" : {
           "$ref" : "#/definitions/JsonParser"
         },
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
+        "typeFactory" : {
+          "$ref" : "#/definitions/TypeFactory"
         },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "contextualType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -820,6 +820,9 @@
     "JsonFactory" : {
       "type" : "object",
       "properties" : {
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -834,9 +837,6 @@
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
         }
       }
     },
@@ -846,18 +846,29 @@
         "closed" : {
           "type" : "boolean"
         },
-        "codec" : {
-          "$ref" : "#/definitions/ObjectCodec"
-        },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "codec" : {
+          "$ref" : "#/definitions/ObjectCodec"
+        },
         "prettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
         "characterEscapes" : {
           "$ref" : "#/definitions/CharacterEscapes"
         },
+        "currentValue" : {
+          "type" : "object"
+        },
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "highestEscapedChar" : {
           "type" : "integer",
           "format" : "int32"
@@ -871,17 +882,6 @@
         },
         "outputContext" : {
           "$ref" : "#/definitions/JsonStreamContext"
-        },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "currentValue" : {
-          "type" : "object"
         }
       }
     },
@@ -961,15 +961,15 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "codec" : {
-          "$ref" : "#/definitions/ObjectCodec"
-        },
         "typeId" : {
           "type" : "object"
         },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "codec" : {
+          "$ref" : "#/definitions/ObjectCodec"
+        },
         "currentToken" : {
           "type" : "string",
           "enum" : [ "NOT_AVAILABLE", "START_OBJECT", "END_OBJECT", "START_ARRAY", "END_ARRAY", "FIELD_NAME", "VALUE_EMBEDDED_OBJECT", "VALUE_STRING", "VALUE_NUMBER_INT", "VALUE_NUMBER_FLOAT", "VALUE_TRUE", "VALUE_FALSE", "VALUE_NULL" ]
@@ -977,13 +977,8 @@
         "currentName" : {
           "type" : "string"
         },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
         },
         "currentTokenId" : {
           "type" : "integer",
@@ -992,9 +987,6 @@
         "parsingContext" : {
           "$ref" : "#/definitions/JsonStreamContext"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
-        },
         "currentLocation" : {
           "$ref" : "#/definitions/JsonLocation"
         },
@@ -1058,6 +1050,14 @@
         },
         "currentValue" : {
           "type" : "object"
+        },
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         }
       }
     },
@@ -1072,11 +1072,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -1114,6 +1114,9 @@
     "Locale" : {
       "type" : "object",
       "properties" : {
+        "displayName" : {
+          "type" : "string"
+        },
         "script" : {
           "type" : "string"
         },
@@ -1162,9 +1165,6 @@
         "displayVariant" : {
           "type" : "string"
         },
-        "displayName" : {
-          "type" : "string"
-        },
         "language" : {
           "type" : "string"
         }
@@ -1280,6 +1280,9 @@
         "factory" : {
           "$ref" : "#/definitions/JsonFactory"
         },
+        "typeFactory" : {
+          "$ref" : "#/definitions/TypeFactory"
+        },
         "serializationConfig" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
@@ -1304,9 +1307,6 @@
         "subtypeResolver" : {
           "$ref" : "#/definitions/SubtypeResolver"
         },
-        "typeFactory" : {
-          "$ref" : "#/definitions/TypeFactory"
-        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
@@ -1424,9 +1424,6 @@
     "PublicKey" : {
       "type" : "object",
       "properties" : {
-        "format" : {
-          "type" : "string"
-        },
         "algorithm" : {
           "type" : "string"
         },
@@ -1436,6 +1433,9 @@
             "type" : "string",
             "format" : "byte"
           }
+        },
+        "format" : {
+          "type" : "string"
         }
       }
     },
@@ -1465,18 +1465,18 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "subtypeResolver" : {
-          "$ref" : "#/definitions/SubtypeResolver"
-        },
         "rootName" : {
           "type" : "string"
         },
-        "defaultVisibilityChecker" : {
-          "$ref" : "#/definitions/VisibilityCheckerObject"
+        "subtypeResolver" : {
+          "$ref" : "#/definitions/SubtypeResolver"
         },
         "fullRootName" : {
           "$ref" : "#/definitions/PropertyName"
         },
+        "defaultVisibilityChecker" : {
+          "$ref" : "#/definitions/VisibilityCheckerObject"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
@@ -1486,15 +1486,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "handlerInstantiator" : {
+          "$ref" : "#/definitions/HandlerInstantiator"
+        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
-        "handlerInstantiator" : {
-          "$ref" : "#/definitions/HandlerInstantiator"
-        },
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
@@ -1512,15 +1512,15 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
         "timeZone" : {
           "$ref" : "#/definitions/TimeZone"
         },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
-        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
@@ -1556,6 +1556,9 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
+        "displayName" : {
+          "type" : "string"
+        },
         "id" : {
           "type" : "string"
         },
@@ -1566,9 +1569,6 @@
         "rawOffset" : {
           "type" : "integer",
           "format" : "int32"
-        },
-        "displayName" : {
-          "type" : "string"
         }
       }
     },
@@ -1640,6 +1640,12 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
+        "keyUsage" : {
+          "type" : "array",
+          "items" : {
+            "type" : "boolean"
+          }
+        },
         "issuerDN" : {
           "$ref" : "#/definitions/Principal"
         },
@@ -1650,23 +1656,6 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "signature" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
-        "basicConstraints" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "keyUsage" : {
-          "type" : "array",
-          "items" : {
-            "type" : "boolean"
-          }
-        },
         "sigAlgName" : {
           "type" : "string"
         },
@@ -1716,6 +1705,17 @@
             "type" : "string"
           }
         },
+        "signature" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
+        "basicConstraints" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "subjectAlternativeNames" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggersink.json b/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
index c726744..3bd46d5 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
@@ -775,9 +775,6 @@
     "ArrayBuilders" : {
       "type" : "object",
       "properties" : {
-        "doubleBuilder" : {
-          "$ref" : "#/definitions/DoubleBuilder"
-        },
         "booleanBuilder" : {
           "$ref" : "#/definitions/BooleanBuilder"
         },
@@ -795,6 +792,9 @@
         },
         "floatBuilder" : {
           "$ref" : "#/definitions/FloatBuilder"
+        },
+        "doubleBuilder" : {
+          "$ref" : "#/definitions/DoubleBuilder"
         }
       }
     },
@@ -887,13 +887,13 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -905,13 +905,13 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -923,13 +923,13 @@
     "CompletableFutureVoid" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -1059,10 +1059,10 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "numericCodeAsString" : {
+        "displayName" : {
           "type" : "string"
         },
-        "displayName" : {
+        "numericCodeAsString" : {
           "type" : "string"
         },
         "symbol" : {
@@ -1091,15 +1091,15 @@
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
-        },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "deserializationFeatures" : {
           "type" : "integer",
           "format" : "int32"
@@ -1110,18 +1110,18 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "subtypeResolver" : {
-          "$ref" : "#/definitions/SubtypeResolver"
-        },
         "rootName" : {
           "type" : "string"
         },
-        "defaultVisibilityChecker" : {
-          "$ref" : "#/definitions/VisibilityCheckerObject"
+        "subtypeResolver" : {
+          "$ref" : "#/definitions/SubtypeResolver"
         },
         "fullRootName" : {
           "$ref" : "#/definitions/PropertyName"
         },
+        "defaultVisibilityChecker" : {
+          "$ref" : "#/definitions/VisibilityCheckerObject"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
@@ -1131,15 +1131,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "handlerInstantiator" : {
+          "$ref" : "#/definitions/HandlerInstantiator"
+        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
-        "handlerInstantiator" : {
-          "$ref" : "#/definitions/HandlerInstantiator"
-        },
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
@@ -1166,18 +1166,18 @@
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
         },
-        "typeFactory" : {
-          "$ref" : "#/definitions/TypeFactory"
-        },
         "parser" : {
           "$ref" : "#/definitions/JsonParser"
         },
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
+        "typeFactory" : {
+          "$ref" : "#/definitions/TypeFactory"
         },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "contextualType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -1326,6 +1326,9 @@
     "JsonFactory" : {
       "type" : "object",
       "properties" : {
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -1340,9 +1343,6 @@
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
         }
       }
     },
@@ -1352,18 +1352,29 @@
         "closed" : {
           "type" : "boolean"
         },
-        "codec" : {
-          "$ref" : "#/definitions/ObjectCodec"
-        },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "codec" : {
+          "$ref" : "#/definitions/ObjectCodec"
+        },
         "prettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
         "characterEscapes" : {
           "$ref" : "#/definitions/CharacterEscapes"
         },
+        "currentValue" : {
+          "type" : "object"
+        },
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "highestEscapedChar" : {
           "type" : "integer",
           "format" : "int32"
@@ -1377,17 +1388,6 @@
         },
         "outputContext" : {
           "$ref" : "#/definitions/JsonStreamContext"
-        },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "currentValue" : {
-          "type" : "object"
         }
       }
     },
@@ -1467,15 +1467,15 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "codec" : {
-          "$ref" : "#/definitions/ObjectCodec"
-        },
         "typeId" : {
           "type" : "object"
         },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "codec" : {
+          "$ref" : "#/definitions/ObjectCodec"
+        },
         "currentToken" : {
           "type" : "string",
           "enum" : [ "NOT_AVAILABLE", "START_OBJECT", "END_OBJECT", "START_ARRAY", "END_ARRAY", "FIELD_NAME", "VALUE_EMBEDDED_OBJECT", "VALUE_STRING", "VALUE_NUMBER_INT", "VALUE_NUMBER_FLOAT", "VALUE_TRUE", "VALUE_FALSE", "VALUE_NULL" ]
@@ -1483,13 +1483,8 @@
         "currentName" : {
           "type" : "string"
         },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
         },
         "currentTokenId" : {
           "type" : "integer",
@@ -1498,9 +1493,6 @@
         "parsingContext" : {
           "$ref" : "#/definitions/JsonStreamContext"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
-        },
         "currentLocation" : {
           "$ref" : "#/definitions/JsonLocation"
         },
@@ -1564,6 +1556,14 @@
         },
         "currentValue" : {
           "type" : "object"
+        },
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         }
       }
     },
@@ -1578,11 +1578,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -1620,6 +1620,9 @@
     "Locale" : {
       "type" : "object",
       "properties" : {
+        "displayName" : {
+          "type" : "string"
+        },
         "script" : {
           "type" : "string"
         },
@@ -1668,9 +1671,6 @@
         "displayVariant" : {
           "type" : "string"
         },
-        "displayName" : {
-          "type" : "string"
-        },
         "language" : {
           "type" : "string"
         }
@@ -1786,6 +1786,9 @@
         "factory" : {
           "$ref" : "#/definitions/JsonFactory"
         },
+        "typeFactory" : {
+          "$ref" : "#/definitions/TypeFactory"
+        },
         "serializationConfig" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
@@ -1810,9 +1813,6 @@
         "subtypeResolver" : {
           "$ref" : "#/definitions/SubtypeResolver"
         },
-        "typeFactory" : {
-          "$ref" : "#/definitions/TypeFactory"
-        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
@@ -1905,9 +1905,6 @@
     "PublicKey" : {
       "type" : "object",
       "properties" : {
-        "format" : {
-          "type" : "string"
-        },
         "algorithm" : {
           "type" : "string"
         },
@@ -1917,6 +1914,9 @@
             "type" : "string",
             "format" : "byte"
           }
+        },
+        "format" : {
+          "type" : "string"
         }
       }
     },
@@ -1963,18 +1963,18 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "subtypeResolver" : {
-          "$ref" : "#/definitions/SubtypeResolver"
-        },
         "rootName" : {
           "type" : "string"
         },
-        "defaultVisibilityChecker" : {
-          "$ref" : "#/definitions/VisibilityCheckerObject"
+        "subtypeResolver" : {
+          "$ref" : "#/definitions/SubtypeResolver"
         },
         "fullRootName" : {
           "$ref" : "#/definitions/PropertyName"
         },
+        "defaultVisibilityChecker" : {
+          "$ref" : "#/definitions/VisibilityCheckerObject"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
@@ -1984,15 +1984,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "handlerInstantiator" : {
+          "$ref" : "#/definitions/HandlerInstantiator"
+        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
-        "handlerInstantiator" : {
-          "$ref" : "#/definitions/HandlerInstantiator"
-        },
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
@@ -2010,15 +2010,15 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
         "timeZone" : {
           "$ref" : "#/definitions/TimeZone"
         },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
-        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
@@ -2248,6 +2248,9 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
+        "displayName" : {
+          "type" : "string"
+        },
         "id" : {
           "type" : "string"
         },
@@ -2258,9 +2261,6 @@
         "rawOffset" : {
           "type" : "integer",
           "format" : "int32"
-        },
-        "displayName" : {
-          "type" : "string"
         }
       }
     },
@@ -2342,6 +2342,12 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
+        "keyUsage" : {
+          "type" : "array",
+          "items" : {
+            "type" : "boolean"
+          }
+        },
         "issuerDN" : {
           "$ref" : "#/definitions/Principal"
         },
@@ -2352,23 +2358,6 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "signature" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
-        "basicConstraints" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "keyUsage" : {
-          "type" : "array",
-          "items" : {
-            "type" : "boolean"
-          }
-        },
         "sigAlgName" : {
           "type" : "string"
         },
@@ -2418,6 +2407,17 @@
             "type" : "string"
           }
         },
+        "signature" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
+        "basicConstraints" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "subjectAlternativeNames" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggersource.json b/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
index d999d0a..83cb7df 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
@@ -778,9 +778,6 @@
     "ArrayBuilders" : {
       "type" : "object",
       "properties" : {
-        "doubleBuilder" : {
-          "$ref" : "#/definitions/DoubleBuilder"
-        },
         "booleanBuilder" : {
           "$ref" : "#/definitions/BooleanBuilder"
         },
@@ -798,6 +795,9 @@
         },
         "floatBuilder" : {
           "$ref" : "#/definitions/FloatBuilder"
+        },
+        "doubleBuilder" : {
+          "$ref" : "#/definitions/DoubleBuilder"
         }
       }
     },
@@ -904,13 +904,13 @@
     "CompletableFuture" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -922,13 +922,13 @@
     "CompletableFutureClusterData" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -940,13 +940,13 @@
     "CompletableFutureVoid" : {
       "type" : "object",
       "properties" : {
-        "done" : {
-          "type" : "boolean"
-        },
         "numberOfDependents" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "done" : {
+          "type" : "boolean"
+        },
         "cancelled" : {
           "type" : "boolean"
         },
@@ -1040,10 +1040,10 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "numericCodeAsString" : {
+        "displayName" : {
           "type" : "string"
         },
-        "displayName" : {
+        "numericCodeAsString" : {
           "type" : "string"
         },
         "symbol" : {
@@ -1072,15 +1072,15 @@
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
-        },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "deserializationFeatures" : {
           "type" : "integer",
           "format" : "int32"
@@ -1091,18 +1091,18 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "subtypeResolver" : {
-          "$ref" : "#/definitions/SubtypeResolver"
-        },
         "rootName" : {
           "type" : "string"
         },
-        "defaultVisibilityChecker" : {
-          "$ref" : "#/definitions/VisibilityCheckerObject"
+        "subtypeResolver" : {
+          "$ref" : "#/definitions/SubtypeResolver"
         },
         "fullRootName" : {
           "$ref" : "#/definitions/PropertyName"
         },
+        "defaultVisibilityChecker" : {
+          "$ref" : "#/definitions/VisibilityCheckerObject"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
@@ -1112,15 +1112,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "handlerInstantiator" : {
+          "$ref" : "#/definitions/HandlerInstantiator"
+        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
-        "handlerInstantiator" : {
-          "$ref" : "#/definitions/HandlerInstantiator"
-        },
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
@@ -1147,18 +1147,18 @@
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
         },
-        "typeFactory" : {
-          "$ref" : "#/definitions/TypeFactory"
-        },
         "parser" : {
           "$ref" : "#/definitions/JsonParser"
         },
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
+        "typeFactory" : {
+          "$ref" : "#/definitions/TypeFactory"
         },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "contextualType" : {
           "$ref" : "#/definitions/JavaType"
         },
@@ -1307,6 +1307,9 @@
     "JsonFactory" : {
       "type" : "object",
       "properties" : {
+        "rootValueSeparator" : {
+          "type" : "string"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -1321,9 +1324,6 @@
         },
         "outputDecorator" : {
           "$ref" : "#/definitions/OutputDecorator"
-        },
-        "rootValueSeparator" : {
-          "type" : "string"
         }
       }
     },
@@ -1333,18 +1333,29 @@
         "closed" : {
           "type" : "boolean"
         },
-        "codec" : {
-          "$ref" : "#/definitions/ObjectCodec"
-        },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "codec" : {
+          "$ref" : "#/definitions/ObjectCodec"
+        },
         "prettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
         "characterEscapes" : {
           "$ref" : "#/definitions/CharacterEscapes"
         },
+        "currentValue" : {
+          "type" : "object"
+        },
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "highestEscapedChar" : {
           "type" : "integer",
           "format" : "int32"
@@ -1358,17 +1369,6 @@
         },
         "outputContext" : {
           "$ref" : "#/definitions/JsonStreamContext"
-        },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "currentValue" : {
-          "type" : "object"
         }
       }
     },
@@ -1448,15 +1448,15 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "codec" : {
-          "$ref" : "#/definitions/ObjectCodec"
-        },
         "typeId" : {
           "type" : "object"
         },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "codec" : {
+          "$ref" : "#/definitions/ObjectCodec"
+        },
         "currentToken" : {
           "type" : "string",
           "enum" : [ "NOT_AVAILABLE", "START_OBJECT", "END_OBJECT", "START_ARRAY", "END_ARRAY", "FIELD_NAME", "VALUE_EMBEDDED_OBJECT", "VALUE_STRING", "VALUE_NUMBER_INT", "VALUE_NUMBER_FLOAT", "VALUE_TRUE", "VALUE_FALSE", "VALUE_NULL" ]
@@ -1464,13 +1464,8 @@
         "currentName" : {
           "type" : "string"
         },
-        "featureMask" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "formatFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
         },
         "currentTokenId" : {
           "type" : "integer",
@@ -1479,9 +1474,6 @@
         "parsingContext" : {
           "$ref" : "#/definitions/JsonStreamContext"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
-        },
         "currentLocation" : {
           "$ref" : "#/definitions/JsonLocation"
         },
@@ -1545,6 +1537,14 @@
         },
         "currentValue" : {
           "type" : "object"
+        },
+        "featureMask" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "formatFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
         }
       }
     },
@@ -1559,11 +1559,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -1601,6 +1601,9 @@
     "Locale" : {
       "type" : "object",
       "properties" : {
+        "displayName" : {
+          "type" : "string"
+        },
         "script" : {
           "type" : "string"
         },
@@ -1649,9 +1652,6 @@
         "displayVariant" : {
           "type" : "string"
         },
-        "displayName" : {
-          "type" : "string"
-        },
         "language" : {
           "type" : "string"
         }
@@ -1767,6 +1767,9 @@
         "factory" : {
           "$ref" : "#/definitions/JsonFactory"
         },
+        "typeFactory" : {
+          "$ref" : "#/definitions/TypeFactory"
+        },
         "serializationConfig" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
@@ -1791,9 +1794,6 @@
         "subtypeResolver" : {
           "$ref" : "#/definitions/SubtypeResolver"
         },
-        "typeFactory" : {
-          "$ref" : "#/definitions/TypeFactory"
-        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
@@ -1908,9 +1908,6 @@
     "PublicKey" : {
       "type" : "object",
       "properties" : {
-        "format" : {
-          "type" : "string"
-        },
         "algorithm" : {
           "type" : "string"
         },
@@ -1920,6 +1917,9 @@
             "type" : "string",
             "format" : "byte"
           }
+        },
+        "format" : {
+          "type" : "string"
         }
       }
     },
@@ -1966,18 +1966,18 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "subtypeResolver" : {
-          "$ref" : "#/definitions/SubtypeResolver"
-        },
         "rootName" : {
           "type" : "string"
         },
-        "defaultVisibilityChecker" : {
-          "$ref" : "#/definitions/VisibilityCheckerObject"
+        "subtypeResolver" : {
+          "$ref" : "#/definitions/SubtypeResolver"
         },
         "fullRootName" : {
           "$ref" : "#/definitions/PropertyName"
         },
+        "defaultVisibilityChecker" : {
+          "$ref" : "#/definitions/VisibilityCheckerObject"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
@@ -1987,15 +1987,15 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "handlerInstantiator" : {
+          "$ref" : "#/definitions/HandlerInstantiator"
+        },
         "propertyNamingStrategy" : {
           "$ref" : "#/definitions/PropertyNamingStrategy"
         },
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
-        "handlerInstantiator" : {
-          "$ref" : "#/definitions/HandlerInstantiator"
-        },
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
@@ -2013,15 +2013,15 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
+        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
         "timeZone" : {
           "$ref" : "#/definitions/TimeZone"
         },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
-        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
@@ -2202,6 +2202,9 @@
     "TimeZone" : {
       "type" : "object",
       "properties" : {
+        "displayName" : {
+          "type" : "string"
+        },
         "id" : {
           "type" : "string"
         },
@@ -2212,9 +2215,6 @@
         "rawOffset" : {
           "type" : "integer",
           "format" : "int32"
-        },
-        "displayName" : {
-          "type" : "string"
         }
       }
     },
@@ -2296,6 +2296,12 @@
         "issuerX500Principal" : {
           "$ref" : "#/definitions/X500Principal"
         },
+        "keyUsage" : {
+          "type" : "array",
+          "items" : {
+            "type" : "boolean"
+          }
+        },
         "issuerDN" : {
           "$ref" : "#/definitions/Principal"
         },
@@ -2306,23 +2312,6 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "signature" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
-        "basicConstraints" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "keyUsage" : {
-          "type" : "array",
-          "items" : {
-            "type" : "boolean"
-          }
-        },
         "sigAlgName" : {
           "type" : "string"
         },
@@ -2372,6 +2361,17 @@
             "type" : "string"
           }
         },
+        "signature" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
+        "basicConstraints" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "subjectAlternativeNames" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json b/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
index e1b04b8..95cd665 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
@@ -511,7 +511,7 @@
                 "tags": [
                     "brokers"
                 ],
-                "summary": "Delete dynamic serviceconfiguration into zk only. This operation requires Pulsar super-user privileges.",
+                "summary": "Delete dynamic ServiceConfiguration into metadata only. This operation requires Pulsar super-user privileges.",
                 "description": "",
                 "operationId": "deleteDynamicConfiguration",
                 "produces": [
@@ -25308,9 +25308,6 @@
         "ArrayBuilders": {
             "type": "object",
             "properties": {
-                "doubleBuilder": {
-                    "$ref": "#/definitions/DoubleBuilder"
-                },
                 "booleanBuilder": {
                     "$ref": "#/definitions/BooleanBuilder"
                 },
@@ -25328,6 +25325,9 @@
                 },
                 "floatBuilder": {
                     "$ref": "#/definitions/FloatBuilder"
+                },
+                "doubleBuilder": {
+                    "$ref": "#/definitions/DoubleBuilder"
                 }
             }
         },
@@ -25731,13 +25731,13 @@
         "CompletableFuture": {
             "type": "object",
             "properties": {
-                "done": {
-                    "type": "boolean"
-                },
                 "numberOfDependents": {
                     "type": "integer",
                     "format": "int32"
                 },
+                "done": {
+                    "type": "boolean"
+                },
                 "cancelled": {
                     "type": "boolean"
                 },
@@ -25749,13 +25749,13 @@
         "CompletableFutureClusterData": {
             "type": "object",
             "properties": {
-                "done": {
-                    "type": "boolean"
-                },
                 "numberOfDependents": {
                     "type": "integer",
                     "format": "int32"
                 },
+                "done": {
+                    "type": "boolean"
+                },
                 "cancelled": {
                     "type": "boolean"
                 },
@@ -25767,13 +25767,13 @@
         "CompletableFuturePartitionedTopicMetadata": {
             "type": "object",
             "properties": {
-                "done": {
-                    "type": "boolean"
-                },
                 "numberOfDependents": {
                     "type": "integer",
                     "format": "int32"
                 },
+                "done": {
+                    "type": "boolean"
+                },
                 "cancelled": {
                     "type": "boolean"
                 },
@@ -25785,13 +25785,13 @@
         "CompletableFutureVoid": {
             "type": "object",
             "properties": {
-                "done": {
-                    "type": "boolean"
-                },
                 "numberOfDependents": {
                     "type": "integer",
                     "format": "int32"
                 },
+                "done": {
+                    "type": "boolean"
+                },
                 "cancelled": {
                     "type": "boolean"
                 },
@@ -25843,21 +25843,13 @@
                     "type": "number",
                     "format": "double"
                 },
-                "unackedMessages": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "msgThroughputOut": {
+                "chunkedMessageRate": {
                     "type": "number",
                     "format": "double"
                 },
-                "bytesOutCounter": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "msgOutCounter": {
+                "unackedMessages": {
                     "type": "integer",
-                    "format": "int64"
+                    "format": "int32"
                 },
                 "lastConsumedTimestamp": {
                     "type": "integer",
@@ -25886,10 +25878,18 @@
                         "type": "string"
                     }
                 },
-                "chunkedMessageRate": {
+                "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
                 },
+                "bytesOutCounter": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "msgOutCounter": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "consumerName": {
                     "type": "string"
                 },
@@ -25919,10 +25919,10 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "numericCodeAsString": {
+                "displayName": {
                     "type": "string"
                 },
-                "displayName": {
+                "numericCodeAsString": {
                     "type": "string"
                 },
                 "symbol": {
@@ -26045,15 +26045,15 @@
         "DeserializationConfig": {
             "type": "object",
             "properties": {
-                "nodeFactory": {
-                    "$ref": "#/definitions/JsonNodeFactory"
-                },
                 "annotationIntrospector": {
                     "$ref": "#/definitions/AnnotationIntrospector"
                 },
                 "defaultPropertyInclusion": {
                     "$ref": "#/definitions/Value"
                 },
+                "nodeFactory": {
+                    "$ref": "#/definitions/JsonNodeFactory"
+                },
                 "deserializationFeatures": {
                     "type": "integer",
                     "format": "int32"
@@ -26064,18 +26064,18 @@
                 "attributes": {
                     "$ref": "#/definitions/ContextAttributes"
                 },
-                "subtypeResolver": {
-                    "$ref": "#/definitions/SubtypeResolver"
-                },
                 "rootName": {
                     "type": "string"
                 },
-                "defaultVisibilityChecker": {
-                    "$ref": "#/definitions/VisibilityCheckerObject"
+                "subtypeResolver": {
+                    "$ref": "#/definitions/SubtypeResolver"
                 },
                 "fullRootName": {
                     "$ref": "#/definitions/PropertyName"
                 },
+                "defaultVisibilityChecker": {
+                    "$ref": "#/definitions/VisibilityCheckerObject"
+                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
@@ -26085,15 +26085,15 @@
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
+                "handlerInstantiator": {
+                    "$ref": "#/definitions/HandlerInstantiator"
+                },
                 "propertyNamingStrategy": {
                     "$ref": "#/definitions/PropertyNamingStrategy"
                 },
                 "dateFormat": {
                     "$ref": "#/definitions/DateFormat"
                 },
-                "handlerInstantiator": {
-                    "$ref": "#/definitions/HandlerInstantiator"
-                },
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
@@ -26120,18 +26120,18 @@
                 "config": {
                     "$ref": "#/definitions/DeserializationConfig"
                 },
-                "typeFactory": {
-                    "$ref": "#/definitions/TypeFactory"
-                },
                 "parser": {
                     "$ref": "#/definitions/JsonParser"
                 },
-                "nodeFactory": {
-                    "$ref": "#/definitions/JsonNodeFactory"
+                "typeFactory": {
+                    "$ref": "#/definitions/TypeFactory"
                 },
                 "annotationIntrospector": {
                     "$ref": "#/definitions/AnnotationIntrospector"
                 },
+                "nodeFactory": {
+                    "$ref": "#/definitions/JsonNodeFactory"
+                },
                 "contextualType": {
                     "$ref": "#/definitions/JavaType"
                 },
@@ -26544,6 +26544,9 @@
         "JsonFactory": {
             "type": "object",
             "properties": {
+                "rootValueSeparator": {
+                    "type": "string"
+                },
                 "codec": {
                     "$ref": "#/definitions/ObjectCodec"
                 },
@@ -26558,9 +26561,6 @@
                 },
                 "outputDecorator": {
                     "$ref": "#/definitions/OutputDecorator"
-                },
-                "rootValueSeparator": {
-                    "type": "string"
                 }
             }
         },
@@ -26570,18 +26570,29 @@
                 "closed": {
                     "type": "boolean"
                 },
-                "codec": {
-                    "$ref": "#/definitions/ObjectCodec"
-                },
                 "schema": {
                     "$ref": "#/definitions/FormatSchema"
                 },
+                "codec": {
+                    "$ref": "#/definitions/ObjectCodec"
+                },
                 "prettyPrinter": {
                     "$ref": "#/definitions/PrettyPrinter"
                 },
                 "characterEscapes": {
                     "$ref": "#/definitions/CharacterEscapes"
                 },
+                "currentValue": {
+                    "type": "object"
+                },
+                "featureMask": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "formatFeatures": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "highestEscapedChar": {
                     "type": "integer",
                     "format": "int32"
@@ -26595,17 +26606,6 @@
                 },
                 "outputContext": {
                     "$ref": "#/definitions/JsonStreamContext"
-                },
-                "featureMask": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "formatFeatures": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "currentValue": {
-                    "type": "object"
                 }
             }
         },
@@ -26685,15 +26685,15 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "codec": {
-                    "$ref": "#/definitions/ObjectCodec"
-                },
                 "typeId": {
                     "type": "object"
                 },
                 "schema": {
                     "$ref": "#/definitions/FormatSchema"
                 },
+                "codec": {
+                    "$ref": "#/definitions/ObjectCodec"
+                },
                 "currentToken": {
                     "type": "string",
                     "enum": [
@@ -26715,13 +26715,8 @@
                 "currentName": {
                     "type": "string"
                 },
-                "featureMask": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "formatFeatures": {
-                    "type": "integer",
-                    "format": "int32"
+                "tokenLocation": {
+                    "$ref": "#/definitions/JsonLocation"
                 },
                 "currentTokenId": {
                     "type": "integer",
@@ -26730,9 +26725,6 @@
                 "parsingContext": {
                     "$ref": "#/definitions/JsonStreamContext"
                 },
-                "tokenLocation": {
-                    "$ref": "#/definitions/JsonLocation"
-                },
                 "currentLocation": {
                     "$ref": "#/definitions/JsonLocation"
                 },
@@ -26817,6 +26809,14 @@
                 },
                 "currentValue": {
                     "type": "object"
+                },
+                "featureMask": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "formatFeatures": {
+                    "type": "integer",
+                    "format": "int32"
                 }
             }
         },
@@ -26831,11 +26831,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -27148,25 +27148,6 @@
                     "type": "number",
                     "format": "double"
                 },
-                "underLoaded": {
-                    "type": "boolean"
-                },
-                "overLoaded": {
-                    "type": "boolean"
-                },
-                "cpu": {
-                    "$ref": "#/definitions/ResourceUsage"
-                },
-                "directMemory": {
-                    "$ref": "#/definitions/ResourceUsage"
-                },
-                "lastUpdate": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "loadReportType": {
-                    "type": "string"
-                },
                 "bandwidthIn": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
@@ -27183,12 +27164,34 @@
                 "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
+                },
+                "cpu": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "directMemory": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "lastUpdate": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "underLoaded": {
+                    "type": "boolean"
+                },
+                "overLoaded": {
+                    "type": "boolean"
+                },
+                "loadReportType": {
+                    "type": "string"
                 }
             }
         },
         "Locale": {
             "type": "object",
             "properties": {
+                "displayName": {
+                    "type": "string"
+                },
                 "script": {
                     "type": "string"
                 },
@@ -27237,9 +27240,6 @@
                 "displayVariant": {
                     "type": "string"
                 },
-                "displayName": {
-                    "type": "string"
-                },
                 "language": {
                     "type": "string"
                 }
@@ -27471,11 +27471,7 @@
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputIn": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "averageMsgSize": {
+                "chunkedMessageRate": {
                     "type": "number",
                     "format": "double"
                 },
@@ -27486,13 +27482,17 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "supportsPartialProducer": {
-                    "type": "boolean"
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
                 },
-                "chunkedMessageRate": {
+                "averageMsgSize": {
                     "type": "number",
                     "format": "double"
                 },
+                "supportsPartialProducer": {
+                    "type": "boolean"
+                },
                 "connectedSince": {
                     "type": "string"
                 },
@@ -27524,6 +27524,10 @@
                     "type": "number",
                     "format": "double"
                 },
+                "msgRateExpired": {
+                    "type": "number",
+                    "format": "double"
+                },
                 "replicationBacklog": {
                     "type": "integer",
                     "format": "int64"
@@ -27540,10 +27544,6 @@
                 "outboundConnectedSince": {
                     "type": "string"
                 },
-                "msgRateExpired": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
@@ -27582,58 +27582,44 @@
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateRedeliver": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "consumersAfterMarkDeletePosition": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
-                    }
-                },
-                "blockedSubscriptionOnUnackedMsgs": {
-                    "type": "boolean"
-                },
-                "msgDelayed": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "unackedMessages": {
+                "msgBacklog": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgRateExpired": {
+                "msgRateRedeliver": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputOut": {
-                    "type": "number",
-                    "format": "double"
+                "chunkedMessageRate": {
+                    "type": "integer",
+                    "format": "int32"
                 },
-                "bytesOutCounter": {
+                "earliestMsgPublishTimeInBacklog": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgOutCounter": {
+                "msgBacklogNoDelayed": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "nonContiguousDeletedMessagesRanges": {
-                    "type": "integer",
-                    "format": "int32"
+                "blockedSubscriptionOnUnackedMsgs": {
+                    "type": "boolean"
                 },
-                "nonContiguousDeletedMessagesRangesSerializedSize": {
+                "msgDelayed": {
                     "type": "integer",
-                    "format": "int32"
+                    "format": "int64"
                 },
-                "msgBacklog": {
+                "unackedMessages": {
                     "type": "integer",
                     "format": "int64"
                 },
                 "activeConsumerName": {
                     "type": "string"
                 },
+                "msgRateExpired": {
+                    "type": "number",
+                    "format": "double"
+                },
                 "totalMsgExpired": {
                     "type": "integer",
                     "format": "int64"
@@ -27664,29 +27650,43 @@
                         "$ref": "#/definitions/ConsumerStats"
                     }
                 },
-                "allowOutOfOrderDelivery": {
-                    "type": "boolean"
-                },
-                "keySharedMode": {
-                    "type": "string"
+                "consumersAfterMarkDeletePosition": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
                 },
-                "chunkedMessageRate": {
+                "nonContiguousDeletedMessagesRangesSerializedSize": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "earliestMsgPublishTimeInBacklog": {
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "bytesOutCounter": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgBacklogNoDelayed": {
+                "msgOutCounter": {
                     "type": "integer",
                     "format": "int64"
                 },
+                "nonContiguousDeletedMessagesRanges": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "subscriptionProperties": {
                     "type": "object",
                     "additionalProperties": {
                         "type": "string"
                     }
+                },
+                "allowOutOfOrderDelivery": {
+                    "type": "boolean"
+                },
+                "keySharedMode": {
+                    "type": "string"
                 }
             }
         },
@@ -27727,6 +27727,13 @@
                     "type": "number",
                     "format": "double"
                 },
+                "nonContiguousDeletedMessagesRangesSerializedSize": {
+                    "type": "integer",
+                    "format": "int32"
... 9362 lines suppressed ...