You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/09/19 04:22:51 UTC

[incubator-pulsar] branch asf-site updated: Updated site at revision 3097283

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

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


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

commit d76a222507b51ba649b40a80c6b3e91453e6dc88
Author: jenkins <bu...@apache.org>
AuthorDate: Wed Sep 19 04:22:38 2018 +0000

    Updated site at revision 3097283
---
 content/admin-rest-api.html                        |    4 +-
 content/admin-rest-api/index.html                  |    4 +-
 content/blog/2018/08/06/Apache-Pulsar-2-1-0.html   |    4 +-
 .../blog/2018/08/06/Apache-Pulsar-2-1-0/index.html |    4 +-
 content/blog/index.html                            |    4 +-
 content/contact.html                               |    4 +-
 content/contact/index.html                         |    4 +-
 content/contributing.html                          |    4 +-
 content/contributing/index.html                    |    4 +-
 content/docs/2.1.0-incubating/adaptors-kafka.html  |   13 +
 .../2.1.0-incubating/adaptors-kafka/index.html     |   13 +
 content/docs/2.1.0-incubating/adaptors-spark.html  |   13 +
 .../2.1.0-incubating/adaptors-spark/index.html     |   13 +
 content/docs/2.1.0-incubating/adaptors-storm.html  |   13 +
 .../2.1.0-incubating/adaptors-storm/index.html     |   13 +
 .../docs/2.1.0-incubating/admin-api-brokers.html   |   13 +
 .../2.1.0-incubating/admin-api-brokers/index.html  |   13 +
 .../docs/2.1.0-incubating/admin-api-clusters.html  |   13 +
 .../2.1.0-incubating/admin-api-clusters/index.html |   13 +
 .../2.1.0-incubating/admin-api-namespaces.html     |   13 +
 .../admin-api-namespaces/index.html                |   13 +
 .../admin-api-non-persistent-topics.html           |   13 +
 .../admin-api-non-persistent-topics/index.html     |   13 +
 .../docs/2.1.0-incubating/admin-api-overview.html  |   13 +
 .../2.1.0-incubating/admin-api-overview/index.html |   13 +
 .../admin-api-partitioned-topics.html              |   13 +
 .../admin-api-partitioned-topics/index.html        |   13 +
 .../2.1.0-incubating/admin-api-permissions.html    |   13 +
 .../admin-api-permissions/index.html               |   13 +
 .../admin-api-persistent-topics.html               |   13 +
 .../admin-api-persistent-topics/index.html         |   13 +
 .../docs/2.1.0-incubating/admin-api-schemas.html   |   13 +
 .../2.1.0-incubating/admin-api-schemas/index.html  |   13 +
 .../docs/2.1.0-incubating/admin-api-tenants.html   |   13 +
 .../2.1.0-incubating/admin-api-tenants/index.html  |   13 +
 .../2.1.0-incubating/administration-dashboard.html |   13 +
 .../administration-dashboard/index.html            |   13 +
 .../docs/2.1.0-incubating/administration-geo.html  |   13 +
 .../2.1.0-incubating/administration-geo/index.html |   13 +
 .../administration-load-distribution.html          |   13 +
 .../administration-load-distribution/index.html    |   13 +
 .../2.1.0-incubating/administration-proxy.html     |   13 +
 .../administration-proxy/index.html                |   13 +
 .../2.1.0-incubating/administration-stats.html     |   13 +
 .../administration-stats/index.html                |   13 +
 .../2.1.0-incubating/administration-zk-bk.html     |   13 +
 .../administration-zk-bk/index.html                |   13 +
 .../2.1.0-incubating/client-libraries-cpp.html     |   13 +
 .../client-libraries-cpp/index.html                |   13 +
 .../docs/2.1.0-incubating/client-libraries-go.html |   13 +
 .../client-libraries-go/index.html                 |   13 +
 .../2.1.0-incubating/client-libraries-java.html    |   13 +
 .../client-libraries-java/index.html               |   13 +
 .../2.1.0-incubating/client-libraries-python.html  |   13 +
 .../client-libraries-python/index.html             |   13 +
 .../client-libraries-websocket.html                |   13 +
 .../client-libraries-websocket/index.html          |   13 +
 .../docs/2.1.0-incubating/client-libraries.html    |   13 +
 .../2.1.0-incubating/client-libraries/index.html   |   13 +
 .../concepts-architecture-overview.html            |   13 +
 .../concepts-architecture-overview/index.html      |   13 +
 .../2.1.0-incubating/concepts-architecture.html    |   13 +
 .../concepts-architecture/index.html               |   13 +
 .../2.1.0-incubating/concepts-authentication.html  |   13 +
 .../concepts-authentication/index.html             |   13 +
 .../docs/2.1.0-incubating/concepts-clients.html    |   13 +
 .../2.1.0-incubating/concepts-clients/index.html   |   13 +
 .../docs/2.1.0-incubating/concepts-messaging.html  |   13 +
 .../2.1.0-incubating/concepts-messaging/index.html |   13 +
 .../2.1.0-incubating/concepts-multi-tenancy.html   |   13 +
 .../concepts-multi-tenancy/index.html              |   13 +
 .../docs/2.1.0-incubating/concepts-overview.html   |   13 +
 .../2.1.0-incubating/concepts-overview/index.html  |   13 +
 .../2.1.0-incubating/concepts-replication.html     |   13 +
 .../concepts-replication/index.html                |   13 +
 .../2.1.0-incubating/concepts-schema-registry.html |   13 +
 .../concepts-schema-registry/index.html            |   13 +
 .../2.1.0-incubating/concepts-tiered-storage.html  |   13 +
 .../concepts-tiered-storage/index.html             |   13 +
 .../concepts-topic-compaction.html                 |   13 +
 .../concepts-topic-compaction/index.html           |   13 +
 .../2.1.0-incubating/cookbooks-compaction.html     |   13 +
 .../cookbooks-compaction/index.html                |   13 +
 .../2.1.0-incubating/cookbooks-deduplication.html  |   13 +
 .../cookbooks-deduplication/index.html             |   13 +
 .../2.1.0-incubating/cookbooks-encryption.html     |   13 +
 .../cookbooks-encryption/index.html                |   13 +
 .../2.1.0-incubating/cookbooks-message-queue.html  |   13 +
 .../cookbooks-message-queue/index.html             |   13 +
 .../2.1.0-incubating/cookbooks-non-persistent.html |   13 +
 .../cookbooks-non-persistent/index.html            |   13 +
 .../2.1.0-incubating/cookbooks-partitioned.html    |   13 +
 .../cookbooks-partitioned/index.html               |   13 +
 .../cookbooks-retention-expiry.html                |   13 +
 .../cookbooks-retention-expiry/index.html          |   13 +
 .../2.1.0-incubating/cookbooks-tiered-storage.html |   13 +
 .../cookbooks-tiered-storage/index.html            |   13 +
 content/docs/2.1.0-incubating/deploy-aws.html      |   13 +
 .../docs/2.1.0-incubating/deploy-aws/index.html    |   13 +
 .../deploy-bare-metal-multi-cluster.html           |   13 +
 .../deploy-bare-metal-multi-cluster/index.html     |   13 +
 .../docs/2.1.0-incubating/deploy-bare-metal.html   |   13 +
 .../2.1.0-incubating/deploy-bare-metal/index.html  |   13 +
 content/docs/2.1.0-incubating/deploy-dcos.html     |   13 +
 .../docs/2.1.0-incubating/deploy-dcos/index.html   |   13 +
 .../docs/2.1.0-incubating/deploy-kubernetes.html   |   13 +
 .../2.1.0-incubating/deploy-kubernetes/index.html  |   13 +
 .../docs/2.1.0-incubating/deploy-monitoring.html   |   13 +
 .../2.1.0-incubating/deploy-monitoring/index.html  |   13 +
 .../2.1.0-incubating/develop-binary-protocol.html  |   13 +
 .../develop-binary-protocol/index.html             |   13 +
 content/docs/2.1.0-incubating/develop-cpp.html     |   13 +
 .../docs/2.1.0-incubating/develop-cpp/index.html   |   13 +
 .../2.1.0-incubating/develop-load-manager.html     |   13 +
 .../develop-load-manager/index.html                |   13 +
 content/docs/2.1.0-incubating/develop-schema.html  |   13 +
 .../2.1.0-incubating/develop-schema/index.html     |   13 +
 content/docs/2.1.0-incubating/develop-tools.html   |   13 +
 .../docs/2.1.0-incubating/develop-tools/index.html |   13 +
 content/docs/2.1.0-incubating/functions-api.html   |   13 +
 .../docs/2.1.0-incubating/functions-api/index.html |   13 +
 .../docs/2.1.0-incubating/functions-deploying.html |   13 +
 .../functions-deploying/index.html                 |   13 +
 .../2.1.0-incubating/functions-guarantees.html     |   13 +
 .../functions-guarantees/index.html                |   13 +
 .../docs/2.1.0-incubating/functions-metrics.html   |   13 +
 .../2.1.0-incubating/functions-metrics/index.html  |   13 +
 .../docs/2.1.0-incubating/functions-overview.html  |   13 +
 .../2.1.0-incubating/functions-overview/index.html |   13 +
 .../2.1.0-incubating/functions-quickstart.html     |   13 +
 .../functions-quickstart/index.html                |   13 +
 content/docs/2.1.0-incubating/functions-state.html |   13 +
 .../2.1.0-incubating/functions-state/index.html    |   13 +
 content/docs/2.1.0-incubating/io-aerospike.html    |   13 +
 .../docs/2.1.0-incubating/io-aerospike/index.html  |   13 +
 content/docs/2.1.0-incubating/io-cassandra.html    |   13 +
 .../docs/2.1.0-incubating/io-cassandra/index.html  |   13 +
 content/docs/2.1.0-incubating/io-connectors.html   |   13 +
 .../docs/2.1.0-incubating/io-connectors/index.html |   13 +
 content/docs/2.1.0-incubating/io-develop.html      |   13 +
 .../docs/2.1.0-incubating/io-develop/index.html    |   13 +
 content/docs/2.1.0-incubating/io-kafka.html        |   13 +
 content/docs/2.1.0-incubating/io-kafka/index.html  |   13 +
 content/docs/2.1.0-incubating/io-kinesis.html      |   13 +
 .../docs/2.1.0-incubating/io-kinesis/index.html    |   13 +
 content/docs/2.1.0-incubating/io-managing.html     |   13 +
 .../docs/2.1.0-incubating/io-managing/index.html   |   13 +
 content/docs/2.1.0-incubating/io-overview.html     |   13 +
 .../docs/2.1.0-incubating/io-overview/index.html   |   13 +
 content/docs/2.1.0-incubating/io-quickstart.html   |   13 +
 .../docs/2.1.0-incubating/io-quickstart/index.html |   13 +
 content/docs/2.1.0-incubating/io-rabbitmq.html     |   13 +
 .../docs/2.1.0-incubating/io-rabbitmq/index.html   |   13 +
 content/docs/2.1.0-incubating/io-twitter.html      |   13 +
 .../docs/2.1.0-incubating/io-twitter/index.html    |   13 +
 content/docs/2.1.0-incubating/pulsar-2.0.html      |   13 +
 .../docs/2.1.0-incubating/pulsar-2.0/index.html    |   13 +
 content/docs/2.1.0-incubating/pulsar-admin.html    |   13 +
 .../docs/2.1.0-incubating/pulsar-admin/index.html  |   13 +
 .../docs/2.1.0-incubating/reference-cli-tools.html |   13 +
 .../reference-cli-tools/index.html                 |   13 +
 .../2.1.0-incubating/reference-configuration.html  |   13 +
 .../reference-configuration/index.html             |   13 +
 .../2.1.0-incubating/reference-terminology.html    |   13 +
 .../reference-terminology/index.html               |   13 +
 content/docs/2.1.0-incubating/security-athenz.html |   13 +
 .../2.1.0-incubating/security-athenz/index.html    |   13 +
 .../2.1.0-incubating/security-authorization.html   |   13 +
 .../security-authorization/index.html              |   13 +
 .../docs/2.1.0-incubating/security-encryption.html |   13 +
 .../security-encryption/index.html                 |   13 +
 .../docs/2.1.0-incubating/security-extending.html  |   13 +
 .../2.1.0-incubating/security-extending/index.html |   13 +
 .../docs/2.1.0-incubating/security-overview.html   |   13 +
 .../2.1.0-incubating/security-overview/index.html  |   13 +
 .../security-tls-authentication.html               |   13 +
 .../security-tls-authentication/index.html         |   13 +
 .../2.1.0-incubating/security-tls-transport.html   |   13 +
 .../security-tls-transport/index.html              |   13 +
 .../docs/2.1.0-incubating/standalone-docker.html   |   13 +
 .../2.1.0-incubating/standalone-docker/index.html  |   13 +
 content/docs/2.1.0-incubating/standalone.html      |   13 +
 .../docs/2.1.0-incubating/standalone/index.html    |   13 +
 .../docs/en/2.1.0-incubating/adaptors-kafka.html   |  342 +++++
 .../en/2.1.0-incubating/adaptors-kafka/index.html  |  342 +++++
 .../docs/en/2.1.0-incubating/adaptors-spark.html   |  142 ++
 .../en/2.1.0-incubating/adaptors-spark/index.html  |  142 ++
 .../docs/en/2.1.0-incubating/adaptors-storm.html   |  182 +++
 .../en/2.1.0-incubating/adaptors-storm/index.html  |  182 +++
 .../en/2.1.0-incubating/admin-api-brokers.html     |  196 +++
 .../2.1.0-incubating/admin-api-brokers/index.html  |  196 +++
 .../en/2.1.0-incubating/admin-api-clusters.html    |  240 +++
 .../2.1.0-incubating/admin-api-clusters/index.html |  240 +++
 .../en/2.1.0-incubating/admin-api-namespaces.html  |  449 ++++++
 .../admin-api-namespaces/index.html                |  449 ++++++
 .../admin-api-non-persistent-topics.html           |  275 ++++
 .../admin-api-non-persistent-topics/index.html     |  275 ++++
 .../en/2.1.0-incubating/admin-api-overview.html    |  164 +++
 .../2.1.0-incubating/admin-api-overview/index.html |  164 +++
 .../admin-api-partitioned-topics.html              |  358 +++++
 .../admin-api-partitioned-topics/index.html        |  358 +++++
 .../en/2.1.0-incubating/admin-api-permissions.html |  168 +++
 .../admin-api-permissions/index.html               |  168 +++
 .../admin-api-persistent-topics.html               |  484 ++++++
 .../admin-api-persistent-topics/index.html         |  484 ++++++
 .../en/2.1.0-incubating/admin-api-schemas.html     |  165 +++
 .../2.1.0-incubating/admin-api-schemas/index.html  |  165 +++
 .../en/2.1.0-incubating/admin-api-tenants.html     |  151 ++
 .../2.1.0-incubating/admin-api-tenants/index.html  |  151 ++
 .../2.1.0-incubating/administration-dashboard.html |  129 ++
 .../administration-dashboard/index.html            |  129 ++
 .../en/2.1.0-incubating/administration-geo.html    |  176 +++
 .../2.1.0-incubating/administration-geo/index.html |  176 +++
 .../administration-load-distribution.html          |  246 ++++
 .../administration-load-distribution/index.html    |  246 ++++
 .../en/2.1.0-incubating/administration-proxy.html  |  152 ++
 .../administration-proxy/index.html                |  152 ++
 .../en/2.1.0-incubating/administration-stats.html  |  164 +++
 .../administration-stats/index.html                |  164 +++
 .../en/2.1.0-incubating/administration-zk-bk.html  |  323 ++++
 .../administration-zk-bk/index.html                |  323 ++++
 .../en/2.1.0-incubating/client-libraries-cpp.html  |  245 ++++
 .../client-libraries-cpp/index.html                |  245 ++++
 .../en/2.1.0-incubating/client-libraries-go.html   |  516 +++++++
 .../client-libraries-go/index.html                 |  516 +++++++
 .../en/2.1.0-incubating/client-libraries-java.html |  457 ++++++
 .../client-libraries-java/index.html               |  457 ++++++
 .../2.1.0-incubating/client-libraries-python.html  |  165 +++
 .../client-libraries-python/index.html             |  165 +++
 .../client-libraries-websocket.html                |  449 ++++++
 .../client-libraries-websocket/index.html          |  449 ++++++
 .../docs/en/2.1.0-incubating/client-libraries.html |  168 +++
 .../2.1.0-incubating/client-libraries/index.html   |  168 +++
 .../concepts-architecture-overview.html            |  210 +++
 .../concepts-architecture-overview/index.html      |  210 +++
 .../en/2.1.0-incubating/concepts-architecture.html |   74 +
 .../concepts-architecture/index.html               |   74 +
 .../2.1.0-incubating/concepts-authentication.html  |  102 ++
 .../concepts-authentication/index.html             |  102 ++
 .../docs/en/2.1.0-incubating/concepts-clients.html |  159 ++
 .../2.1.0-incubating/concepts-clients/index.html   |  159 ++
 .../en/2.1.0-incubating/concepts-messaging.html    |  334 +++++
 .../2.1.0-incubating/concepts-messaging/index.html |  334 +++++
 .../2.1.0-incubating/concepts-multi-tenancy.html   |  125 ++
 .../concepts-multi-tenancy/index.html              |  125 ++
 .../en/2.1.0-incubating/concepts-overview.html     |  126 ++
 .../2.1.0-incubating/concepts-overview/index.html  |  126 ++
 .../en/2.1.0-incubating/concepts-replication.html  |  102 ++
 .../concepts-replication/index.html                |  102 ++
 .../2.1.0-incubating/concepts-schema-registry.html |  173 +++
 .../concepts-schema-registry/index.html            |  173 +++
 .../2.1.0-incubating/concepts-tiered-storage.html  |  111 ++
 .../concepts-tiered-storage/index.html             |  111 ++
 .../concepts-topic-compaction.html                 |  128 ++
 .../concepts-topic-compaction/index.html           |  128 ++
 .../en/2.1.0-incubating/cookbooks-compaction.html  |  195 +++
 .../cookbooks-compaction/index.html                |  195 +++
 .../2.1.0-incubating/cookbooks-deduplication.html  |  190 +++
 .../cookbooks-deduplication/index.html             |  190 +++
 .../en/2.1.0-incubating/cookbooks-encryption.html  |  257 ++++
 .../cookbooks-encryption/index.html                |  257 ++++
 .../2.1.0-incubating/cookbooks-message-queue.html  |  174 +++
 .../cookbooks-message-queue/index.html             |  174 +++
 .../2.1.0-incubating/cookbooks-non-persistent.html |  139 ++
 .../cookbooks-non-persistent/index.html            |  139 ++
 .../en/2.1.0-incubating/cookbooks-partitioned.html |  150 ++
 .../cookbooks-partitioned/index.html               |  150 ++
 .../cookbooks-retention-expiry.html                |  280 ++++
 .../cookbooks-retention-expiry/index.html          |  280 ++++
 .../2.1.0-incubating/cookbooks-tiered-storage.html |  191 +++
 .../cookbooks-tiered-storage/index.html            |  191 +++
 content/docs/en/2.1.0-incubating/deploy-aws.html   |  255 ++++
 .../docs/en/2.1.0-incubating/deploy-aws/index.html |  255 ++++
 .../deploy-bare-metal-multi-cluster.html           |  375 +++++
 .../deploy-bare-metal-multi-cluster/index.html     |  375 +++++
 .../en/2.1.0-incubating/deploy-bare-metal.html     |  361 +++++
 .../2.1.0-incubating/deploy-bare-metal/index.html  |  361 +++++
 content/docs/en/2.1.0-incubating/deploy-dcos.html  |  205 +++
 .../en/2.1.0-incubating/deploy-dcos/index.html     |  205 +++
 .../en/2.1.0-incubating/deploy-kubernetes.html     |  369 +++++
 .../2.1.0-incubating/deploy-kubernetes/index.html  |  369 +++++
 .../en/2.1.0-incubating/deploy-monitoring.html     |  156 ++
 .../2.1.0-incubating/deploy-monitoring/index.html  |  156 ++
 .../2.1.0-incubating/develop-binary-protocol.html  |  549 +++++++
 .../develop-binary-protocol/index.html             |  549 +++++++
 content/docs/en/2.1.0-incubating/develop-cpp.html  |  171 +++
 .../en/2.1.0-incubating/develop-cpp/index.html     |  171 +++
 .../en/2.1.0-incubating/develop-load-manager.html  |  270 ++++
 .../develop-load-manager/index.html                |  270 ++++
 .../docs/en/2.1.0-incubating/develop-schema.html   |  145 ++
 .../en/2.1.0-incubating/develop-schema/index.html  |  145 ++
 .../docs/en/2.1.0-incubating/develop-tools.html    |  194 +++
 .../en/2.1.0-incubating/develop-tools/index.html   |  194 +++
 .../docs/en/2.1.0-incubating/functions-api.html    |  693 +++++++++
 .../en/2.1.0-incubating/functions-api/index.html   |  693 +++++++++
 .../en/2.1.0-incubating/functions-deploying.html   |  270 ++++
 .../functions-deploying/index.html                 |  270 ++++
 .../en/2.1.0-incubating/functions-guarantees.html  |  133 ++
 .../functions-guarantees/index.html                |  133 ++
 .../en/2.1.0-incubating/functions-metrics.html     |  128 ++
 .../2.1.0-incubating/functions-metrics/index.html  |  128 ++
 .../en/2.1.0-incubating/functions-overview.html    |  452 ++++++
 .../2.1.0-incubating/functions-overview/index.html |  452 ++++++
 .../en/2.1.0-incubating/functions-quickstart.html  |  289 ++++
 .../functions-quickstart/index.html                |  289 ++++
 .../docs/en/2.1.0-incubating/functions-state.html  |  181 +++
 .../en/2.1.0-incubating/functions-state/index.html |  181 +++
 content/docs/en/2.1.0-incubating/io-aerospike.html |   91 ++
 .../en/2.1.0-incubating/io-aerospike/index.html    |   91 ++
 content/docs/en/2.1.0-incubating/io-cassandra.html |   91 ++
 .../en/2.1.0-incubating/io-cassandra/index.html    |   91 ++
 .../docs/en/2.1.0-incubating/io-connectors.html    |  114 ++
 .../en/2.1.0-incubating/io-connectors/index.html   |  114 ++
 content/docs/en/2.1.0-incubating/io-develop.html   |  262 ++++
 .../docs/en/2.1.0-incubating/io-develop/index.html |  262 ++++
 content/docs/en/2.1.0-incubating/io-kafka.html     |  111 ++
 .../docs/en/2.1.0-incubating/io-kafka/index.html   |  111 ++
 content/docs/en/2.1.0-incubating/io-kinesis.html   |  100 ++
 .../docs/en/2.1.0-incubating/io-kinesis/index.html |  100 ++
 content/docs/en/2.1.0-incubating/io-managing.html  |  206 +++
 .../en/2.1.0-incubating/io-managing/index.html     |  206 +++
 content/docs/en/2.1.0-incubating/io-overview.html  |  134 ++
 .../en/2.1.0-incubating/io-overview/index.html     |  134 ++
 .../docs/en/2.1.0-incubating/io-quickstart.html    |  400 +++++
 .../en/2.1.0-incubating/io-quickstart/index.html   |  400 +++++
 content/docs/en/2.1.0-incubating/io-rabbitmq.html  |   88 ++
 .../en/2.1.0-incubating/io-rabbitmq/index.html     |   88 ++
 content/docs/en/2.1.0-incubating/io-twitter.html   |   92 ++
 .../docs/en/2.1.0-incubating/io-twitter/index.html |   92 ++
 content/docs/en/2.1.0-incubating/pulsar-2.0.html   |  157 ++
 .../docs/en/2.1.0-incubating/pulsar-2.0/index.html |  157 ++
 content/docs/en/2.1.0-incubating/pulsar-admin.html | 1548 ++++++++++++++++++++
 .../en/2.1.0-incubating/pulsar-admin/index.html    | 1548 ++++++++++++++++++++
 .../en/2.1.0-incubating/reference-cli-tools.html   |  617 ++++++++
 .../reference-cli-tools/index.html                 |  617 ++++++++
 .../2.1.0-incubating/reference-configuration.html  |  561 +++++++
 .../reference-configuration/index.html             |  561 +++++++
 .../en/2.1.0-incubating/reference-terminology.html |  193 +++
 .../reference-terminology/index.html               |  193 +++
 .../docs/en/2.1.0-incubating/security-athenz.html  |  165 +++
 .../en/2.1.0-incubating/security-athenz/index.html |  165 +++
 .../2.1.0-incubating/security-authorization.html   |  173 +++
 .../security-authorization/index.html              |  173 +++
 .../en/2.1.0-incubating/security-encryption.html   |  257 ++++
 .../security-encryption/index.html                 |  257 ++++
 .../en/2.1.0-incubating/security-extending.html    |  276 ++++
 .../2.1.0-incubating/security-extending/index.html |  276 ++++
 .../en/2.1.0-incubating/security-overview.html     |  126 ++
 .../2.1.0-incubating/security-overview/index.html  |  126 ++
 .../security-tls-authentication.html               |  188 +++
 .../security-tls-authentication/index.html         |  188 +++
 .../2.1.0-incubating/security-tls-transport.html   |  232 +++
 .../security-tls-transport/index.html              |  232 +++
 .../en/2.1.0-incubating/standalone-docker.html     |  223 +++
 .../2.1.0-incubating/standalone-docker/index.html  |  223 +++
 content/docs/en/2.1.0-incubating/standalone.html   |  241 +++
 .../docs/en/2.1.0-incubating/standalone/index.html |  241 +++
 content/docs/en/adaptors-kafka.html                |   14 +-
 content/docs/en/adaptors-kafka/index.html          |   14 +-
 content/docs/en/adaptors-spark.html                |   10 +-
 content/docs/en/adaptors-spark/index.html          |   10 +-
 content/docs/en/adaptors-storm.html                |    6 +-
 content/docs/en/adaptors-storm/index.html          |    6 +-
 content/docs/en/admin-api-brokers.html             |    6 +-
 content/docs/en/admin-api-brokers/index.html       |    6 +-
 content/docs/en/admin-api-clusters.html            |    6 +-
 content/docs/en/admin-api-clusters/index.html      |    6 +-
 content/docs/en/admin-api-namespaces.html          |    6 +-
 content/docs/en/admin-api-namespaces/index.html    |    6 +-
 .../docs/en/admin-api-non-persistent-topics.html   |    6 +-
 .../en/admin-api-non-persistent-topics/index.html  |    6 +-
 content/docs/en/admin-api-overview.html            |    6 +-
 content/docs/en/admin-api-overview/index.html      |    6 +-
 content/docs/en/admin-api-partitioned-topics.html  |    6 +-
 .../en/admin-api-partitioned-topics/index.html     |    6 +-
 content/docs/en/admin-api-permissions.html         |    6 +-
 content/docs/en/admin-api-permissions/index.html   |    6 +-
 content/docs/en/admin-api-persistent-topics.html   |    6 +-
 .../docs/en/admin-api-persistent-topics/index.html |    6 +-
 content/docs/en/admin-api-schemas.html             |    6 +-
 content/docs/en/admin-api-schemas/index.html       |    6 +-
 content/docs/en/admin-api-tenants.html             |    6 +-
 content/docs/en/admin-api-tenants/index.html       |    6 +-
 content/docs/en/administration-dashboard.html      |    6 +-
 .../docs/en/administration-dashboard/index.html    |    6 +-
 content/docs/en/administration-geo.html            |    6 +-
 content/docs/en/administration-geo/index.html      |    6 +-
 .../docs/en/administration-load-distribution.html  |    6 +-
 .../en/administration-load-distribution/index.html |    6 +-
 content/docs/en/administration-proxy.html          |    8 +-
 content/docs/en/administration-proxy/index.html    |    8 +-
 content/docs/en/administration-stats.html          |    6 +-
 content/docs/en/administration-stats/index.html    |    6 +-
 content/docs/en/administration-zk-bk.html          |    6 +-
 content/docs/en/administration-zk-bk/index.html    |    6 +-
 content/docs/en/client-libraries-cpp.html          |   24 +-
 content/docs/en/client-libraries-cpp/index.html    |   24 +-
 content/docs/en/client-libraries-go.html           |    8 +-
 content/docs/en/client-libraries-go/index.html     |    8 +-
 content/docs/en/client-libraries-java.html         |   18 +-
 content/docs/en/client-libraries-java/index.html   |   18 +-
 content/docs/en/client-libraries-python.html       |   12 +-
 content/docs/en/client-libraries-python/index.html |   12 +-
 content/docs/en/client-libraries-websocket.html    |    6 +-
 .../docs/en/client-libraries-websocket/index.html  |    6 +-
 content/docs/en/client-libraries.html              |   31 +-
 content/docs/en/client-libraries/index.html        |   31 +-
 .../docs/en/concepts-architecture-overview.html    |    6 +-
 .../en/concepts-architecture-overview/index.html   |    6 +-
 content/docs/en/concepts-architecture.html         |    6 +-
 content/docs/en/concepts-architecture/index.html   |    6 +-
 content/docs/en/concepts-authentication.html       |    6 +-
 content/docs/en/concepts-authentication/index.html |    6 +-
 content/docs/en/concepts-clients.html              |    6 +-
 content/docs/en/concepts-clients/index.html        |    6 +-
 content/docs/en/concepts-messaging.html            |    6 +-
 content/docs/en/concepts-messaging/index.html      |    6 +-
 content/docs/en/concepts-multi-tenancy.html        |    6 +-
 content/docs/en/concepts-multi-tenancy/index.html  |    6 +-
 content/docs/en/concepts-overview.html             |    6 +-
 content/docs/en/concepts-overview/index.html       |    6 +-
 content/docs/en/concepts-replication.html          |    6 +-
 content/docs/en/concepts-replication/index.html    |    6 +-
 content/docs/en/concepts-schema-registry.html      |    6 +-
 .../docs/en/concepts-schema-registry/index.html    |    6 +-
 content/docs/en/concepts-tiered-storage.html       |    6 +-
 content/docs/en/concepts-tiered-storage/index.html |    6 +-
 content/docs/en/concepts-topic-compaction.html     |    6 +-
 .../docs/en/concepts-topic-compaction/index.html   |    6 +-
 content/docs/en/cookbooks-compaction.html          |    6 +-
 content/docs/en/cookbooks-compaction/index.html    |    6 +-
 content/docs/en/cookbooks-deduplication.html       |    6 +-
 content/docs/en/cookbooks-deduplication/index.html |    6 +-
 content/docs/en/cookbooks-encryption.html          |    6 +-
 content/docs/en/cookbooks-encryption/index.html    |    6 +-
 content/docs/en/cookbooks-message-queue.html       |    6 +-
 content/docs/en/cookbooks-message-queue/index.html |    6 +-
 content/docs/en/cookbooks-non-persistent.html      |    6 +-
 .../docs/en/cookbooks-non-persistent/index.html    |    6 +-
 content/docs/en/cookbooks-partitioned.html         |    6 +-
 content/docs/en/cookbooks-partitioned/index.html   |    6 +-
 content/docs/en/cookbooks-retention-expiry.html    |    6 +-
 .../docs/en/cookbooks-retention-expiry/index.html  |    6 +-
 content/docs/en/cookbooks-tiered-storage.html      |  118 +-
 .../docs/en/cookbooks-tiered-storage/index.html    |  118 +-
 content/docs/en/deploy-aws.html                    |    6 +-
 content/docs/en/deploy-aws/index.html              |    6 +-
 .../docs/en/deploy-bare-metal-multi-cluster.html   |   14 +-
 .../en/deploy-bare-metal-multi-cluster/index.html  |   14 +-
 content/docs/en/deploy-bare-metal.html             |   40 +-
 content/docs/en/deploy-bare-metal/index.html       |   40 +-
 content/docs/en/deploy-dcos.html                   |    6 +-
 content/docs/en/deploy-dcos/index.html             |    6 +-
 content/docs/en/deploy-kubernetes.html             |    6 +-
 content/docs/en/deploy-kubernetes/index.html       |    6 +-
 content/docs/en/deploy-monitoring.html             |    6 +-
 content/docs/en/deploy-monitoring/index.html       |    6 +-
 content/docs/en/develop-binary-protocol.html       |    6 +-
 content/docs/en/develop-binary-protocol/index.html |    6 +-
 content/docs/en/develop-cpp.html                   |    6 +-
 content/docs/en/develop-cpp/index.html             |    6 +-
 content/docs/en/develop-load-manager.html          |    6 +-
 content/docs/en/develop-load-manager/index.html    |    6 +-
 content/docs/en/develop-schema.html                |    6 +-
 content/docs/en/develop-schema/index.html          |    6 +-
 content/docs/en/develop-tools.html                 |    6 +-
 content/docs/en/develop-tools/index.html           |    6 +-
 content/docs/en/functions-api.html                 |   81 +-
 content/docs/en/functions-api/index.html           |   81 +-
 content/docs/en/functions-deploying.html           |   26 +-
 content/docs/en/functions-deploying/index.html     |   26 +-
 content/docs/en/functions-guarantees.html          |   10 +-
 content/docs/en/functions-guarantees/index.html    |   10 +-
 content/docs/en/functions-metrics.html             |    6 +-
 content/docs/en/functions-metrics/index.html       |    6 +-
 content/docs/en/functions-overview.html            |   30 +-
 content/docs/en/functions-overview/index.html      |   30 +-
 content/docs/en/functions-quickstart.html          |   22 +-
 content/docs/en/functions-quickstart/index.html    |   22 +-
 content/docs/en/functions-state.html               |    6 +-
 content/docs/en/functions-state/index.html         |    6 +-
 content/docs/en/io-aerospike.html                  |    6 +-
 content/docs/en/io-aerospike/index.html            |    6 +-
 content/docs/en/io-cassandra.html                  |    6 +-
 content/docs/en/io-cassandra/index.html            |    6 +-
 content/docs/en/io-connectors.html                 |    6 +-
 content/docs/en/io-connectors/index.html           |    6 +-
 content/docs/en/io-develop.html                    |    6 +-
 content/docs/en/io-develop/index.html              |    6 +-
 content/docs/en/io-kafka.html                      |    6 +-
 content/docs/en/io-kafka/index.html                |    6 +-
 content/docs/en/io-kinesis.html                    |    6 +-
 content/docs/en/io-kinesis/index.html              |    6 +-
 content/docs/en/io-managing.html                   |   26 +-
 content/docs/en/io-managing/index.html             |   26 +-
 content/docs/en/io-overview.html                   |    6 +-
 content/docs/en/io-overview/index.html             |    6 +-
 content/docs/en/io-quickstart.html                 |   38 +-
 content/docs/en/io-quickstart/index.html           |   38 +-
 content/docs/en/io-rabbitmq.html                   |    6 +-
 content/docs/en/io-rabbitmq/index.html             |    6 +-
 content/docs/en/io-twitter.html                    |    6 +-
 content/docs/en/io-twitter/index.html              |    6 +-
 content/docs/en/next/adaptors-kafka.html           |    6 +-
 content/docs/en/next/adaptors-kafka/index.html     |    6 +-
 content/docs/en/next/adaptors-spark.html           |    6 +-
 content/docs/en/next/adaptors-spark/index.html     |    6 +-
 content/docs/en/next/adaptors-storm.html           |    2 +-
 content/docs/en/next/adaptors-storm/index.html     |    2 +-
 content/docs/en/next/admin-api-brokers.html        |    2 +-
 content/docs/en/next/admin-api-brokers/index.html  |    2 +-
 content/docs/en/next/admin-api-clusters.html       |    2 +-
 content/docs/en/next/admin-api-clusters/index.html |    2 +-
 content/docs/en/next/admin-api-namespaces.html     |    2 +-
 .../docs/en/next/admin-api-namespaces/index.html   |    2 +-
 .../en/next/admin-api-non-persistent-topics.html   |    2 +-
 .../admin-api-non-persistent-topics/index.html     |    2 +-
 content/docs/en/next/admin-api-overview.html       |    2 +-
 content/docs/en/next/admin-api-overview/index.html |    2 +-
 .../docs/en/next/admin-api-partitioned-topics.html |    2 +-
 .../next/admin-api-partitioned-topics/index.html   |    2 +-
 content/docs/en/next/admin-api-permissions.html    |    2 +-
 .../docs/en/next/admin-api-permissions/index.html  |    2 +-
 .../docs/en/next/admin-api-persistent-topics.html  |    2 +-
 .../en/next/admin-api-persistent-topics/index.html |    2 +-
 content/docs/en/next/admin-api-schemas.html        |    2 +-
 content/docs/en/next/admin-api-schemas/index.html  |    2 +-
 content/docs/en/next/admin-api-tenants.html        |    2 +-
 content/docs/en/next/admin-api-tenants/index.html  |    2 +-
 content/docs/en/next/administration-dashboard.html |    2 +-
 .../en/next/administration-dashboard/index.html    |    2 +-
 content/docs/en/next/administration-geo.html       |    2 +-
 content/docs/en/next/administration-geo/index.html |    2 +-
 .../en/next/administration-load-distribution.html  |    2 +-
 .../administration-load-distribution/index.html    |    2 +-
 content/docs/en/next/administration-proxy.html     |    2 +-
 .../docs/en/next/administration-proxy/index.html   |    2 +-
 content/docs/en/next/administration-stats.html     |    2 +-
 .../docs/en/next/administration-stats/index.html   |    2 +-
 content/docs/en/next/administration-zk-bk.html     |    2 +-
 .../docs/en/next/administration-zk-bk/index.html   |    2 +-
 content/docs/en/next/client-libraries-cpp.html     |   12 +-
 .../docs/en/next/client-libraries-cpp/index.html   |   12 +-
 content/docs/en/next/client-libraries-go.html      |    4 +-
 .../docs/en/next/client-libraries-go/index.html    |    4 +-
 content/docs/en/next/client-libraries-java.html    |   16 +-
 .../docs/en/next/client-libraries-java/index.html  |   16 +-
 content/docs/en/next/client-libraries-python.html  |    4 +-
 .../en/next/client-libraries-python/index.html     |    4 +-
 .../docs/en/next/client-libraries-websocket.html   |    2 +-
 .../en/next/client-libraries-websocket/index.html  |    2 +-
 content/docs/en/next/client-libraries.html         |    2 +-
 content/docs/en/next/client-libraries/index.html   |    2 +-
 .../en/next/concepts-architecture-overview.html    |    2 +-
 .../next/concepts-architecture-overview/index.html |    2 +-
 content/docs/en/next/concepts-authentication.html  |    2 +-
 .../en/next/concepts-authentication/index.html     |    2 +-
 content/docs/en/next/concepts-clients.html         |    2 +-
 content/docs/en/next/concepts-clients/index.html   |    2 +-
 content/docs/en/next/concepts-messaging.html       |    2 +-
 content/docs/en/next/concepts-messaging/index.html |    2 +-
 content/docs/en/next/concepts-multi-tenancy.html   |    2 +-
 .../docs/en/next/concepts-multi-tenancy/index.html |    2 +-
 content/docs/en/next/concepts-overview.html        |    2 +-
 content/docs/en/next/concepts-overview/index.html  |    2 +-
 content/docs/en/next/concepts-replication.html     |    2 +-
 .../docs/en/next/concepts-replication/index.html   |    2 +-
 content/docs/en/next/concepts-schema-registry.html |    2 +-
 .../en/next/concepts-schema-registry/index.html    |    2 +-
 content/docs/en/next/concepts-tiered-storage.html  |    2 +-
 .../en/next/concepts-tiered-storage/index.html     |    2 +-
 .../docs/en/next/concepts-topic-compaction.html    |    2 +-
 .../en/next/concepts-topic-compaction/index.html   |    2 +-
 content/docs/en/next/cookbooks-compaction.html     |    2 +-
 .../docs/en/next/cookbooks-compaction/index.html   |    2 +-
 content/docs/en/next/cookbooks-deduplication.html  |    2 +-
 .../en/next/cookbooks-deduplication/index.html     |    2 +-
 content/docs/en/next/cookbooks-encryption.html     |    2 +-
 .../docs/en/next/cookbooks-encryption/index.html   |    2 +-
 content/docs/en/next/cookbooks-message-queue.html  |    2 +-
 .../en/next/cookbooks-message-queue/index.html     |    2 +-
 content/docs/en/next/cookbooks-non-persistent.html |    2 +-
 .../en/next/cookbooks-non-persistent/index.html    |    2 +-
 content/docs/en/next/cookbooks-partitioned.html    |    2 +-
 .../docs/en/next/cookbooks-partitioned/index.html  |    2 +-
 .../docs/en/next/cookbooks-retention-expiry.html   |    2 +-
 .../en/next/cookbooks-retention-expiry/index.html  |    2 +-
 content/docs/en/next/cookbooks-tiered-storage.html |    2 +-
 .../en/next/cookbooks-tiered-storage/index.html    |    2 +-
 content/docs/en/next/deploy-aws.html               |    4 +-
 content/docs/en/next/deploy-aws/index.html         |    4 +-
 .../en/next/deploy-bare-metal-multi-cluster.html   |   10 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   10 +-
 content/docs/en/next/deploy-bare-metal.html        |   32 +-
 content/docs/en/next/deploy-bare-metal/index.html  |   32 +-
 content/docs/en/next/deploy-dcos.html              |    2 +-
 content/docs/en/next/deploy-dcos/index.html        |    2 +-
 content/docs/en/next/deploy-kubernetes.html        |    2 +-
 content/docs/en/next/deploy-kubernetes/index.html  |    2 +-
 content/docs/en/next/deploy-monitoring.html        |    2 +-
 content/docs/en/next/deploy-monitoring/index.html  |    2 +-
 content/docs/en/next/develop-binary-protocol.html  |    2 +-
 .../en/next/develop-binary-protocol/index.html     |    2 +-
 content/docs/en/next/develop-cpp.html              |    2 +-
 content/docs/en/next/develop-cpp/index.html        |    2 +-
 content/docs/en/next/develop-load-manager.html     |    2 +-
 .../docs/en/next/develop-load-manager/index.html   |    2 +-
 content/docs/en/next/develop-schema.html           |    2 +-
 content/docs/en/next/develop-schema/index.html     |    2 +-
 content/docs/en/next/develop-tools.html            |    2 +-
 content/docs/en/next/develop-tools/index.html      |    2 +-
 content/docs/en/next/functions-api.html            |    2 +-
 content/docs/en/next/functions-api/index.html      |    2 +-
 content/docs/en/next/functions-deploying.html      |    2 +-
 .../docs/en/next/functions-deploying/index.html    |    2 +-
 content/docs/en/next/functions-guarantees.html     |    2 +-
 .../docs/en/next/functions-guarantees/index.html   |    2 +-
 content/docs/en/next/functions-metrics.html        |    2 +-
 content/docs/en/next/functions-metrics/index.html  |    2 +-
 content/docs/en/next/functions-overview.html       |    2 +-
 content/docs/en/next/functions-overview/index.html |    2 +-
 content/docs/en/next/functions-quickstart.html     |    8 +-
 .../docs/en/next/functions-quickstart/index.html   |    8 +-
 content/docs/en/next/functions-state.html          |    2 +-
 content/docs/en/next/functions-state/index.html    |    2 +-
 content/docs/en/next/io-connectors.html            |    2 +-
 content/docs/en/next/io-connectors/index.html      |    2 +-
 content/docs/en/next/io-develop.html               |    4 +-
 content/docs/en/next/io-develop/index.html         |    4 +-
 content/docs/en/next/io-managing.html              |    2 +-
 content/docs/en/next/io-managing/index.html        |    2 +-
 content/docs/en/next/io-overview.html              |    2 +-
 content/docs/en/next/io-overview/index.html        |    2 +-
 content/docs/en/next/io-quickstart.html            |   34 +-
 content/docs/en/next/io-quickstart/index.html      |   34 +-
 content/docs/en/next/pulsar-2.0.html               |    2 +-
 content/docs/en/next/pulsar-2.0/index.html         |    2 +-
 content/docs/en/next/pulsar-admin.html             |    2 +-
 content/docs/en/next/pulsar-admin/index.html       |    2 +-
 content/docs/en/next/reference-cli-tools.html      |    2 +-
 .../docs/en/next/reference-cli-tools/index.html    |    2 +-
 content/docs/en/next/reference-configuration.html  |    2 +-
 .../en/next/reference-configuration/index.html     |    2 +-
 content/docs/en/next/reference-terminology.html    |    2 +-
 .../docs/en/next/reference-terminology/index.html  |    2 +-
 content/docs/en/next/security-athenz.html          |    2 +-
 content/docs/en/next/security-athenz/index.html    |    2 +-
 content/docs/en/next/security-authorization.html   |    2 +-
 .../docs/en/next/security-authorization/index.html |    2 +-
 content/docs/en/next/security-encryption.html      |    2 +-
 .../docs/en/next/security-encryption/index.html    |    2 +-
 content/docs/en/next/security-extending.html       |    2 +-
 content/docs/en/next/security-extending/index.html |    2 +-
 content/docs/en/next/security-overview.html        |    2 +-
 content/docs/en/next/security-overview/index.html  |    2 +-
 .../docs/en/next/security-tls-authentication.html  |    2 +-
 .../en/next/security-tls-authentication/index.html |    2 +-
 content/docs/en/next/security-tls-transport.html   |    2 +-
 .../docs/en/next/security-tls-transport/index.html |    2 +-
 content/docs/en/next/standalone-docker.html        |    4 +-
 content/docs/en/next/standalone-docker/index.html  |    4 +-
 content/docs/en/next/standalone.html               |   32 +-
 content/docs/en/next/standalone/index.html         |   32 +-
 content/docs/en/pulsar-2.0.html                    |    6 +-
 content/docs/en/pulsar-2.0/index.html              |    6 +-
 content/docs/en/pulsar-admin.html                  |  279 +++-
 content/docs/en/pulsar-admin/index.html            |  279 +++-
 content/docs/en/reference-cli-tools.html           |    6 +-
 content/docs/en/reference-cli-tools/index.html     |    6 +-
 content/docs/en/reference-configuration.html       |   14 +-
 content/docs/en/reference-configuration/index.html |   14 +-
 content/docs/en/reference-terminology.html         |    6 +-
 content/docs/en/reference-terminology/index.html   |    6 +-
 content/docs/en/security-athenz.html               |    6 +-
 content/docs/en/security-athenz/index.html         |    6 +-
 content/docs/en/security-authorization.html        |    6 +-
 content/docs/en/security-authorization/index.html  |    6 +-
 content/docs/en/security-encryption.html           |    6 +-
 content/docs/en/security-encryption/index.html     |    6 +-
 content/docs/en/security-extending.html            |    6 +-
 content/docs/en/security-extending/index.html      |    6 +-
 content/docs/en/security-overview.html             |    6 +-
 content/docs/en/security-overview/index.html       |    6 +-
 content/docs/en/security-tls-authentication.html   |    6 +-
 .../docs/en/security-tls-authentication/index.html |    6 +-
 content/docs/en/security-tls-transport.html        |    6 +-
 content/docs/en/security-tls-transport/index.html  |    6 +-
 content/docs/en/sql-deployment-configurations.html |  174 +++
 .../en/sql-deployment-configurations/index.html    |  174 +++
 content/docs/en/sql-getting-started.html           |  189 +++
 content/docs/en/sql-getting-started/index.html     |  189 +++
 content/docs/en/sql-overview.html                  |   82 ++
 content/docs/en/sql-overview/index.html            |   82 ++
 content/docs/en/standalone-docker.html             |    8 +-
 content/docs/en/standalone-docker/index.html       |    8 +-
 content/docs/en/standalone.html                    |   49 +-
 content/docs/en/standalone/index.html              |   49 +-
 .../docs/fr/2.1.0-incubating/adaptors-kafka.html   |  335 +++++
 .../fr/2.1.0-incubating/adaptors-kafka/index.html  |  335 +++++
 .../docs/fr/2.1.0-incubating/adaptors-spark.html   |  141 ++
 .../fr/2.1.0-incubating/adaptors-spark/index.html  |  141 ++
 .../docs/fr/2.1.0-incubating/adaptors-storm.html   |  182 +++
 .../fr/2.1.0-incubating/adaptors-storm/index.html  |  182 +++
 .../fr/2.1.0-incubating/admin-api-brokers.html     |  196 +++
 .../2.1.0-incubating/admin-api-brokers/index.html  |  196 +++
 .../fr/2.1.0-incubating/admin-api-clusters.html    |  236 +++
 .../2.1.0-incubating/admin-api-clusters/index.html |  236 +++
 .../fr/2.1.0-incubating/admin-api-namespaces.html  |  457 ++++++
 .../admin-api-namespaces/index.html                |  457 ++++++
 .../admin-api-non-persistent-topics.html           |  273 ++++
 .../admin-api-non-persistent-topics/index.html     |  273 ++++
 .../fr/2.1.0-incubating/admin-api-overview.html    |  162 ++
 .../2.1.0-incubating/admin-api-overview/index.html |  162 ++
 .../admin-api-partitioned-topics.html              |  343 +++++
 .../admin-api-partitioned-topics/index.html        |  343 +++++
 .../fr/2.1.0-incubating/admin-api-permissions.html |  167 +++
 .../admin-api-permissions/index.html               |  167 +++
 .../admin-api-persistent-topics.html               |  484 ++++++
 .../admin-api-persistent-topics/index.html         |  484 ++++++
 .../fr/2.1.0-incubating/admin-api-schemas.html     |  163 +++
 .../2.1.0-incubating/admin-api-schemas/index.html  |  163 +++
 .../fr/2.1.0-incubating/admin-api-tenants.html     |  151 ++
 .../2.1.0-incubating/admin-api-tenants/index.html  |  151 ++
 .../2.1.0-incubating/administration-dashboard.html |  127 ++
 .../administration-dashboard/index.html            |  127 ++
 .../fr/2.1.0-incubating/administration-geo.html    |  176 +++
 .../2.1.0-incubating/administration-geo/index.html |  176 +++
 .../administration-load-distribution.html          |  201 +++
 .../administration-load-distribution/index.html    |  201 +++
 .../fr/2.1.0-incubating/administration-proxy.html  |  152 ++
 .../administration-proxy/index.html                |  152 ++
 .../fr/2.1.0-incubating/administration-stats.html  |  164 +++
 .../administration-stats/index.html                |  164 +++
 .../fr/2.1.0-incubating/administration-zk-bk.html  |  314 ++++
 .../administration-zk-bk/index.html                |  314 ++++
 .../fr/2.1.0-incubating/client-libraries-cpp.html  |  238 +++
 .../client-libraries-cpp/index.html                |  238 +++
 .../fr/2.1.0-incubating/client-libraries-go.html   |  513 +++++++
 .../client-libraries-go/index.html                 |  513 +++++++
 .../fr/2.1.0-incubating/client-libraries-java.html |  454 ++++++
 .../client-libraries-java/index.html               |  454 ++++++
 .../2.1.0-incubating/client-libraries-python.html  |  165 +++
 .../client-libraries-python/index.html             |  165 +++
 .../client-libraries-websocket.html                |  445 ++++++
 .../client-libraries-websocket/index.html          |  445 ++++++
 .../docs/fr/2.1.0-incubating/client-libraries.html |  168 +++
 .../2.1.0-incubating/client-libraries/index.html   |  168 +++
 .../concepts-architecture-overview.html            |  210 +++
 .../concepts-architecture-overview/index.html      |  210 +++
 .../fr/2.1.0-incubating/concepts-architecture.html |   79 +
 .../concepts-architecture/index.html               |   79 +
 .../2.1.0-incubating/concepts-authentication.html  |  102 ++
 .../concepts-authentication/index.html             |  102 ++
 .../docs/fr/2.1.0-incubating/concepts-clients.html |  159 ++
 .../2.1.0-incubating/concepts-clients/index.html   |  159 ++
 .../fr/2.1.0-incubating/concepts-messaging.html    |  330 +++++
 .../2.1.0-incubating/concepts-messaging/index.html |  330 +++++
 .../2.1.0-incubating/concepts-multi-tenancy.html   |  125 ++
 .../concepts-multi-tenancy/index.html              |  125 ++
 .../fr/2.1.0-incubating/concepts-overview.html     |  126 ++
 .../2.1.0-incubating/concepts-overview/index.html  |  126 ++
 .../fr/2.1.0-incubating/concepts-replication.html  |  102 ++
 .../concepts-replication/index.html                |  102 ++
 .../2.1.0-incubating/concepts-schema-registry.html |  173 +++
 .../concepts-schema-registry/index.html            |  173 +++
 .../2.1.0-incubating/concepts-tiered-storage.html  |  111 ++
 .../concepts-tiered-storage/index.html             |  111 ++
 .../concepts-topic-compaction.html                 |  128 ++
 .../concepts-topic-compaction/index.html           |  128 ++
 .../fr/2.1.0-incubating/cookbooks-compaction.html  |  195 +++
 .../cookbooks-compaction/index.html                |  195 +++
 .../2.1.0-incubating/cookbooks-deduplication.html  |  190 +++
 .../cookbooks-deduplication/index.html             |  190 +++
 .../fr/2.1.0-incubating/cookbooks-encryption.html  |  252 ++++
 .../cookbooks-encryption/index.html                |  252 ++++
 .../2.1.0-incubating/cookbooks-message-queue.html  |  174 +++
 .../cookbooks-message-queue/index.html             |  174 +++
 .../2.1.0-incubating/cookbooks-non-persistent.html |  139 ++
 .../cookbooks-non-persistent/index.html            |  139 ++
 .../fr/2.1.0-incubating/cookbooks-partitioned.html |  150 ++
 .../cookbooks-partitioned/index.html               |  150 ++
 .../cookbooks-retention-expiry.html                |  279 ++++
 .../cookbooks-retention-expiry/index.html          |  279 ++++
 .../2.1.0-incubating/cookbooks-tiered-storage.html |  186 +++
 .../cookbooks-tiered-storage/index.html            |  186 +++
 content/docs/fr/2.1.0-incubating/deploy-aws.html   |  250 ++++
 .../docs/fr/2.1.0-incubating/deploy-aws/index.html |  250 ++++
 .../deploy-bare-metal-multi-cluster.html           |  358 +++++
 .../deploy-bare-metal-multi-cluster/index.html     |  358 +++++
 .../fr/2.1.0-incubating/deploy-bare-metal.html     |  356 +++++
 .../2.1.0-incubating/deploy-bare-metal/index.html  |  356 +++++
 content/docs/fr/2.1.0-incubating/deploy-dcos.html  |  203 +++
 .../fr/2.1.0-incubating/deploy-dcos/index.html     |  203 +++
 .../fr/2.1.0-incubating/deploy-kubernetes.html     |  356 +++++
 .../2.1.0-incubating/deploy-kubernetes/index.html  |  356 +++++
 .../fr/2.1.0-incubating/deploy-monitoring.html     |  145 ++
 .../2.1.0-incubating/deploy-monitoring/index.html  |  145 ++
 .../2.1.0-incubating/develop-binary-protocol.html  |  384 +++++
 .../develop-binary-protocol/index.html             |  384 +++++
 content/docs/fr/2.1.0-incubating/develop-cpp.html  |  171 +++
 .../fr/2.1.0-incubating/develop-cpp/index.html     |  171 +++
 .../fr/2.1.0-incubating/develop-load-manager.html  |  245 ++++
 .../develop-load-manager/index.html                |  245 ++++
 .../docs/fr/2.1.0-incubating/develop-schema.html   |  145 ++
 .../fr/2.1.0-incubating/develop-schema/index.html  |  145 ++
 .../docs/fr/2.1.0-incubating/develop-tools.html    |  165 +++
 .../fr/2.1.0-incubating/develop-tools/index.html   |  165 +++
 .../docs/fr/2.1.0-incubating/functions-api.html    |  693 +++++++++
 .../fr/2.1.0-incubating/functions-api/index.html   |  693 +++++++++
 .../fr/2.1.0-incubating/functions-deploying.html   |  270 ++++
 .../functions-deploying/index.html                 |  270 ++++
 .../fr/2.1.0-incubating/functions-guarantees.html  |  133 ++
 .../functions-guarantees/index.html                |  133 ++
 .../fr/2.1.0-incubating/functions-metrics.html     |  128 ++
 .../2.1.0-incubating/functions-metrics/index.html  |  128 ++
 .../fr/2.1.0-incubating/functions-overview.html    |  452 ++++++
 .../2.1.0-incubating/functions-overview/index.html |  452 ++++++
 .../fr/2.1.0-incubating/functions-quickstart.html  |  296 ++++
 .../functions-quickstart/index.html                |  296 ++++
 .../docs/fr/2.1.0-incubating/functions-state.html  |  175 +++
 .../fr/2.1.0-incubating/functions-state/index.html |  175 +++
 content/docs/fr/2.1.0-incubating/io-aerospike.html |   91 ++
 .../fr/2.1.0-incubating/io-aerospike/index.html    |   91 ++
 content/docs/fr/2.1.0-incubating/io-cassandra.html |   90 ++
 .../fr/2.1.0-incubating/io-cassandra/index.html    |   90 ++
 .../docs/fr/2.1.0-incubating/io-connectors.html    |  111 ++
 .../fr/2.1.0-incubating/io-connectors/index.html   |  111 ++
 content/docs/fr/2.1.0-incubating/io-develop.html   |  216 +++
 .../docs/fr/2.1.0-incubating/io-develop/index.html |  216 +++
 content/docs/fr/2.1.0-incubating/io-kafka.html     |  109 ++
 .../docs/fr/2.1.0-incubating/io-kafka/index.html   |  109 ++
 content/docs/fr/2.1.0-incubating/io-kinesis.html   |   99 ++
 .../docs/fr/2.1.0-incubating/io-kinesis/index.html |   99 ++
 content/docs/fr/2.1.0-incubating/io-managing.html  |  194 +++
 .../fr/2.1.0-incubating/io-managing/index.html     |  194 +++
 content/docs/fr/2.1.0-incubating/io-overview.html  |  134 ++
 .../fr/2.1.0-incubating/io-overview/index.html     |  134 ++
 .../docs/fr/2.1.0-incubating/io-quickstart.html    |  389 +++++
 .../fr/2.1.0-incubating/io-quickstart/index.html   |  389 +++++
 content/docs/fr/2.1.0-incubating/io-rabbitmq.html  |   87 ++
 .../fr/2.1.0-incubating/io-rabbitmq/index.html     |   87 ++
 content/docs/fr/2.1.0-incubating/io-twitter.html   |   91 ++
 .../docs/fr/2.1.0-incubating/io-twitter/index.html |   91 ++
 content/docs/fr/2.1.0-incubating/pulsar-2.0.html   |  157 ++
 .../docs/fr/2.1.0-incubating/pulsar-2.0/index.html |  157 ++
 content/docs/fr/2.1.0-incubating/pulsar-admin.html | 1405 ++++++++++++++++++
 .../fr/2.1.0-incubating/pulsar-admin/index.html    | 1405 ++++++++++++++++++
 .../fr/2.1.0-incubating/reference-cli-tools.html   |  586 ++++++++
 .../reference-cli-tools/index.html                 |  586 ++++++++
 .../2.1.0-incubating/reference-configuration.html  |  524 +++++++
 .../reference-configuration/index.html             |  524 +++++++
 .../fr/2.1.0-incubating/reference-terminology.html |  169 +++
 .../reference-terminology/index.html               |  169 +++
 .../docs/fr/2.1.0-incubating/security-athenz.html  |  163 +++
 .../fr/2.1.0-incubating/security-athenz/index.html |  163 +++
 .../2.1.0-incubating/security-authorization.html   |  171 +++
 .../security-authorization/index.html              |  171 +++
 .../fr/2.1.0-incubating/security-encryption.html   |  252 ++++
 .../security-encryption/index.html                 |  252 ++++
 .../fr/2.1.0-incubating/security-extending.html    |  261 ++++
 .../2.1.0-incubating/security-extending/index.html |  261 ++++
 .../fr/2.1.0-incubating/security-overview.html     |  121 ++
 .../2.1.0-incubating/security-overview/index.html  |  121 ++
 .../security-tls-authentication.html               |  188 +++
 .../security-tls-authentication/index.html         |  188 +++
 .../2.1.0-incubating/security-tls-transport.html   |  228 +++
 .../security-tls-transport/index.html              |  228 +++
 .../fr/2.1.0-incubating/standalone-docker.html     |  210 +++
 .../2.1.0-incubating/standalone-docker/index.html  |  210 +++
 content/docs/fr/2.1.0-incubating/standalone.html   |  237 +++
 .../docs/fr/2.1.0-incubating/standalone/index.html |  237 +++
 content/docs/fr/adaptors-kafka.html                |   14 +-
 content/docs/fr/adaptors-kafka/index.html          |   14 +-
 content/docs/fr/adaptors-spark.html                |   10 +-
 content/docs/fr/adaptors-spark/index.html          |   10 +-
 content/docs/fr/adaptors-storm.html                |    6 +-
 content/docs/fr/adaptors-storm/index.html          |    6 +-
 content/docs/fr/admin-api-brokers.html             |    6 +-
 content/docs/fr/admin-api-brokers/index.html       |    6 +-
 content/docs/fr/admin-api-clusters.html            |    6 +-
 content/docs/fr/admin-api-clusters/index.html      |    6 +-
 content/docs/fr/admin-api-namespaces.html          |    6 +-
 content/docs/fr/admin-api-namespaces/index.html    |    6 +-
 .../docs/fr/admin-api-non-persistent-topics.html   |    6 +-
 .../fr/admin-api-non-persistent-topics/index.html  |    6 +-
 content/docs/fr/admin-api-overview.html            |    6 +-
 content/docs/fr/admin-api-overview/index.html      |    6 +-
 content/docs/fr/admin-api-partitioned-topics.html  |    6 +-
 .../fr/admin-api-partitioned-topics/index.html     |    6 +-
 content/docs/fr/admin-api-permissions.html         |    6 +-
 content/docs/fr/admin-api-permissions/index.html   |    6 +-
 content/docs/fr/admin-api-persistent-topics.html   |    6 +-
 .../docs/fr/admin-api-persistent-topics/index.html |    6 +-
 content/docs/fr/admin-api-schemas.html             |    6 +-
 content/docs/fr/admin-api-schemas/index.html       |    6 +-
 content/docs/fr/admin-api-tenants.html             |    6 +-
 content/docs/fr/admin-api-tenants/index.html       |    6 +-
 content/docs/fr/administration-dashboard.html      |    6 +-
 .../docs/fr/administration-dashboard/index.html    |    6 +-
 content/docs/fr/administration-geo.html            |    6 +-
 content/docs/fr/administration-geo/index.html      |    6 +-
 .../docs/fr/administration-load-distribution.html  |    6 +-
 .../fr/administration-load-distribution/index.html |    6 +-
 content/docs/fr/administration-proxy.html          |    8 +-
 content/docs/fr/administration-proxy/index.html    |    8 +-
 content/docs/fr/administration-stats.html          |    6 +-
 content/docs/fr/administration-stats/index.html    |    6 +-
 content/docs/fr/administration-zk-bk.html          |    6 +-
 content/docs/fr/administration-zk-bk/index.html    |    6 +-
 content/docs/fr/client-libraries-cpp.html          |   24 +-
 content/docs/fr/client-libraries-cpp/index.html    |   24 +-
 content/docs/fr/client-libraries-go.html           |    8 +-
 content/docs/fr/client-libraries-go/index.html     |    8 +-
 content/docs/fr/client-libraries-java.html         |   18 +-
 content/docs/fr/client-libraries-java/index.html   |   18 +-
 content/docs/fr/client-libraries-python.html       |   13 +-
 content/docs/fr/client-libraries-python/index.html |   13 +-
 content/docs/fr/client-libraries-websocket.html    |    6 +-
 .../docs/fr/client-libraries-websocket/index.html  |    6 +-
 content/docs/fr/client-libraries.html              |   31 +-
 content/docs/fr/client-libraries/index.html        |   31 +-
 .../docs/fr/concepts-architecture-overview.html    |    6 +-
 .../fr/concepts-architecture-overview/index.html   |    6 +-
 content/docs/fr/concepts-architecture.html         |    6 +-
 content/docs/fr/concepts-architecture/index.html   |    6 +-
 content/docs/fr/concepts-authentication.html       |    6 +-
 content/docs/fr/concepts-authentication/index.html |    6 +-
 content/docs/fr/concepts-clients.html              |    6 +-
 content/docs/fr/concepts-clients/index.html        |    6 +-
 content/docs/fr/concepts-messaging.html            |    6 +-
 content/docs/fr/concepts-messaging/index.html      |    6 +-
 content/docs/fr/concepts-multi-tenancy.html        |    6 +-
 content/docs/fr/concepts-multi-tenancy/index.html  |    6 +-
 content/docs/fr/concepts-overview.html             |    6 +-
 content/docs/fr/concepts-overview/index.html       |    6 +-
 content/docs/fr/concepts-replication.html          |    6 +-
 content/docs/fr/concepts-replication/index.html    |    6 +-
 content/docs/fr/concepts-schema-registry.html      |    6 +-
 .../docs/fr/concepts-schema-registry/index.html    |    6 +-
 content/docs/fr/concepts-tiered-storage.html       |    6 +-
 content/docs/fr/concepts-tiered-storage/index.html |    6 +-
 content/docs/fr/concepts-topic-compaction.html     |    6 +-
 .../docs/fr/concepts-topic-compaction/index.html   |    6 +-
 content/docs/fr/cookbooks-compaction.html          |    6 +-
 content/docs/fr/cookbooks-compaction/index.html    |    6 +-
 content/docs/fr/cookbooks-deduplication.html       |    6 +-
 content/docs/fr/cookbooks-deduplication/index.html |    6 +-
 content/docs/fr/cookbooks-encryption.html          |    6 +-
 content/docs/fr/cookbooks-encryption/index.html    |    6 +-
 content/docs/fr/cookbooks-message-queue.html       |    6 +-
 content/docs/fr/cookbooks-message-queue/index.html |    6 +-
 content/docs/fr/cookbooks-non-persistent.html      |    6 +-
 .../docs/fr/cookbooks-non-persistent/index.html    |    6 +-
 content/docs/fr/cookbooks-partitioned.html         |    6 +-
 content/docs/fr/cookbooks-partitioned/index.html   |    6 +-
 content/docs/fr/cookbooks-retention-expiry.html    |    6 +-
 .../docs/fr/cookbooks-retention-expiry/index.html  |    6 +-
 content/docs/fr/cookbooks-tiered-storage.html      |   83 +-
 .../docs/fr/cookbooks-tiered-storage/index.html    |   83 +-
 content/docs/fr/deploy-aws.html                    |    6 +-
 content/docs/fr/deploy-aws/index.html              |    6 +-
 .../docs/fr/deploy-bare-metal-multi-cluster.html   |   14 +-
 .../fr/deploy-bare-metal-multi-cluster/index.html  |   14 +-
 content/docs/fr/deploy-bare-metal.html             |   40 +-
 content/docs/fr/deploy-bare-metal/index.html       |   40 +-
 content/docs/fr/deploy-dcos.html                   |    6 +-
 content/docs/fr/deploy-dcos/index.html             |    6 +-
 content/docs/fr/deploy-kubernetes.html             |    6 +-
 content/docs/fr/deploy-kubernetes/index.html       |    6 +-
 content/docs/fr/deploy-monitoring.html             |    6 +-
 content/docs/fr/deploy-monitoring/index.html       |    6 +-
 content/docs/fr/develop-binary-protocol.html       |    6 +-
 content/docs/fr/develop-binary-protocol/index.html |    6 +-
 content/docs/fr/develop-cpp.html                   |    6 +-
 content/docs/fr/develop-cpp/index.html             |    6 +-
 content/docs/fr/develop-load-manager.html          |    6 +-
 content/docs/fr/develop-load-manager/index.html    |    6 +-
 content/docs/fr/develop-schema.html                |    6 +-
 content/docs/fr/develop-schema/index.html          |    6 +-
 content/docs/fr/develop-tools.html                 |    6 +-
 content/docs/fr/develop-tools/index.html           |    6 +-
 content/docs/fr/functions-api.html                 |   77 +-
 content/docs/fr/functions-api/index.html           |   77 +-
 content/docs/fr/functions-deploying.html           |   26 +-
 content/docs/fr/functions-deploying/index.html     |   26 +-
 content/docs/fr/functions-guarantees.html          |   10 +-
 content/docs/fr/functions-guarantees/index.html    |   10 +-
 content/docs/fr/functions-metrics.html             |    6 +-
 content/docs/fr/functions-metrics/index.html       |    6 +-
 content/docs/fr/functions-overview.html            |   30 +-
 content/docs/fr/functions-overview/index.html      |   30 +-
 content/docs/fr/functions-quickstart.html          |   22 +-
 content/docs/fr/functions-quickstart/index.html    |   22 +-
 content/docs/fr/functions-state.html               |    6 +-
 content/docs/fr/functions-state/index.html         |    6 +-
 content/docs/fr/io-aerospike.html                  |    6 +-
 content/docs/fr/io-aerospike/index.html            |    6 +-
 content/docs/fr/io-cassandra.html                  |    6 +-
 content/docs/fr/io-cassandra/index.html            |    6 +-
 content/docs/fr/io-connectors.html                 |    6 +-
 content/docs/fr/io-connectors/index.html           |    6 +-
 content/docs/fr/io-develop.html                    |    6 +-
 content/docs/fr/io-develop/index.html              |    6 +-
 content/docs/fr/io-kafka.html                      |    6 +-
 content/docs/fr/io-kafka/index.html                |    6 +-
 content/docs/fr/io-kinesis.html                    |    6 +-
 content/docs/fr/io-kinesis/index.html              |    6 +-
 content/docs/fr/io-managing.html                   |   26 +-
 content/docs/fr/io-managing/index.html             |   26 +-
 content/docs/fr/io-overview.html                   |    6 +-
 content/docs/fr/io-overview/index.html             |    6 +-
 content/docs/fr/io-quickstart.html                 |   38 +-
 content/docs/fr/io-quickstart/index.html           |   38 +-
 content/docs/fr/io-rabbitmq.html                   |    6 +-
 content/docs/fr/io-rabbitmq/index.html             |    6 +-
 content/docs/fr/io-twitter.html                    |    6 +-
 content/docs/fr/io-twitter/index.html              |    6 +-
 content/docs/fr/next/adaptors-kafka.html           |    6 +-
 content/docs/fr/next/adaptors-kafka/index.html     |    6 +-
 content/docs/fr/next/adaptors-spark.html           |    6 +-
 content/docs/fr/next/adaptors-spark/index.html     |    6 +-
 content/docs/fr/next/adaptors-storm.html           |    2 +-
 content/docs/fr/next/adaptors-storm/index.html     |    2 +-
 content/docs/fr/next/admin-api-brokers.html        |    2 +-
 content/docs/fr/next/admin-api-brokers/index.html  |    2 +-
 content/docs/fr/next/admin-api-clusters.html       |    2 +-
 content/docs/fr/next/admin-api-clusters/index.html |    2 +-
 content/docs/fr/next/admin-api-namespaces.html     |    2 +-
 .../docs/fr/next/admin-api-namespaces/index.html   |    2 +-
 .../fr/next/admin-api-non-persistent-topics.html   |    2 +-
 .../admin-api-non-persistent-topics/index.html     |    2 +-
 content/docs/fr/next/admin-api-overview.html       |    2 +-
 content/docs/fr/next/admin-api-overview/index.html |    2 +-
 .../docs/fr/next/admin-api-partitioned-topics.html |    2 +-
 .../next/admin-api-partitioned-topics/index.html   |    2 +-
 content/docs/fr/next/admin-api-permissions.html    |    2 +-
 .../docs/fr/next/admin-api-permissions/index.html  |    2 +-
 .../docs/fr/next/admin-api-persistent-topics.html  |    2 +-
 .../fr/next/admin-api-persistent-topics/index.html |    2 +-
 content/docs/fr/next/admin-api-schemas.html        |    2 +-
 content/docs/fr/next/admin-api-schemas/index.html  |    2 +-
 content/docs/fr/next/admin-api-tenants.html        |    2 +-
 content/docs/fr/next/admin-api-tenants/index.html  |    2 +-
 content/docs/fr/next/administration-dashboard.html |    2 +-
 .../fr/next/administration-dashboard/index.html    |    2 +-
 content/docs/fr/next/administration-geo.html       |    2 +-
 content/docs/fr/next/administration-geo/index.html |    2 +-
 .../fr/next/administration-load-distribution.html  |    2 +-
 .../administration-load-distribution/index.html    |    2 +-
 content/docs/fr/next/administration-proxy.html     |    2 +-
 .../docs/fr/next/administration-proxy/index.html   |    2 +-
 content/docs/fr/next/administration-stats.html     |    2 +-
 .../docs/fr/next/administration-stats/index.html   |    2 +-
 content/docs/fr/next/administration-zk-bk.html     |    2 +-
 .../docs/fr/next/administration-zk-bk/index.html   |    2 +-
 content/docs/fr/next/client-libraries-cpp.html     |   12 +-
 .../docs/fr/next/client-libraries-cpp/index.html   |   12 +-
 content/docs/fr/next/client-libraries-go.html      |    4 +-
 .../docs/fr/next/client-libraries-go/index.html    |    4 +-
 content/docs/fr/next/client-libraries-java.html    |   16 +-
 .../docs/fr/next/client-libraries-java/index.html  |   16 +-
 content/docs/fr/next/client-libraries-python.html  |    4 +-
 .../fr/next/client-libraries-python/index.html     |    4 +-
 .../docs/fr/next/client-libraries-websocket.html   |    2 +-
 .../fr/next/client-libraries-websocket/index.html  |    2 +-
 content/docs/fr/next/client-libraries.html         |    2 +-
 content/docs/fr/next/client-libraries/index.html   |    2 +-
 .../fr/next/concepts-architecture-overview.html    |    2 +-
 .../next/concepts-architecture-overview/index.html |    2 +-
 content/docs/fr/next/concepts-authentication.html  |    2 +-
 .../fr/next/concepts-authentication/index.html     |    2 +-
 content/docs/fr/next/concepts-clients.html         |    2 +-
 content/docs/fr/next/concepts-clients/index.html   |    2 +-
 content/docs/fr/next/concepts-messaging.html       |    2 +-
 content/docs/fr/next/concepts-messaging/index.html |    2 +-
 content/docs/fr/next/concepts-multi-tenancy.html   |    2 +-
 .../docs/fr/next/concepts-multi-tenancy/index.html |    2 +-
 content/docs/fr/next/concepts-overview.html        |    2 +-
 content/docs/fr/next/concepts-overview/index.html  |    2 +-
 content/docs/fr/next/concepts-replication.html     |    2 +-
 .../docs/fr/next/concepts-replication/index.html   |    2 +-
 content/docs/fr/next/concepts-schema-registry.html |    2 +-
 .../fr/next/concepts-schema-registry/index.html    |    2 +-
 content/docs/fr/next/concepts-tiered-storage.html  |    2 +-
 .../fr/next/concepts-tiered-storage/index.html     |    2 +-
 .../docs/fr/next/concepts-topic-compaction.html    |    2 +-
 .../fr/next/concepts-topic-compaction/index.html   |    2 +-
 content/docs/fr/next/cookbooks-compaction.html     |    2 +-
 .../docs/fr/next/cookbooks-compaction/index.html   |    2 +-
 content/docs/fr/next/cookbooks-deduplication.html  |    2 +-
 .../fr/next/cookbooks-deduplication/index.html     |    2 +-
 content/docs/fr/next/cookbooks-encryption.html     |    2 +-
 .../docs/fr/next/cookbooks-encryption/index.html   |    2 +-
 content/docs/fr/next/cookbooks-message-queue.html  |    2 +-
 .../fr/next/cookbooks-message-queue/index.html     |    2 +-
 content/docs/fr/next/cookbooks-non-persistent.html |    2 +-
 .../fr/next/cookbooks-non-persistent/index.html    |    2 +-
 content/docs/fr/next/cookbooks-partitioned.html    |    2 +-
 .../docs/fr/next/cookbooks-partitioned/index.html  |    2 +-
 .../docs/fr/next/cookbooks-retention-expiry.html   |    2 +-
 .../fr/next/cookbooks-retention-expiry/index.html  |    2 +-
 content/docs/fr/next/cookbooks-tiered-storage.html |    2 +-
 .../fr/next/cookbooks-tiered-storage/index.html    |    2 +-
 content/docs/fr/next/deploy-aws.html               |    4 +-
 content/docs/fr/next/deploy-aws/index.html         |    4 +-
 .../fr/next/deploy-bare-metal-multi-cluster.html   |   10 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   10 +-
 content/docs/fr/next/deploy-bare-metal.html        |   32 +-
 content/docs/fr/next/deploy-bare-metal/index.html  |   32 +-
 content/docs/fr/next/deploy-dcos.html              |    2 +-
 content/docs/fr/next/deploy-dcos/index.html        |    2 +-
 content/docs/fr/next/deploy-kubernetes.html        |    2 +-
 content/docs/fr/next/deploy-kubernetes/index.html  |    2 +-
 content/docs/fr/next/deploy-monitoring.html        |    2 +-
 content/docs/fr/next/deploy-monitoring/index.html  |    2 +-
 content/docs/fr/next/develop-binary-protocol.html  |    2 +-
 .../fr/next/develop-binary-protocol/index.html     |    2 +-
 content/docs/fr/next/develop-cpp.html              |    2 +-
 content/docs/fr/next/develop-cpp/index.html        |    2 +-
 content/docs/fr/next/develop-load-manager.html     |    2 +-
 .../docs/fr/next/develop-load-manager/index.html   |    2 +-
 content/docs/fr/next/develop-schema.html           |    2 +-
 content/docs/fr/next/develop-schema/index.html     |    2 +-
 content/docs/fr/next/develop-tools.html            |    2 +-
 content/docs/fr/next/develop-tools/index.html      |    2 +-
 content/docs/fr/next/functions-api.html            |    2 +-
 content/docs/fr/next/functions-api/index.html      |    2 +-
 content/docs/fr/next/functions-deploying.html      |    2 +-
 .../docs/fr/next/functions-deploying/index.html    |    2 +-
 content/docs/fr/next/functions-guarantees.html     |    2 +-
 .../docs/fr/next/functions-guarantees/index.html   |    2 +-
 content/docs/fr/next/functions-metrics.html        |    2 +-
 content/docs/fr/next/functions-metrics/index.html  |    2 +-
 content/docs/fr/next/functions-overview.html       |    2 +-
 content/docs/fr/next/functions-overview/index.html |    2 +-
 content/docs/fr/next/functions-quickstart.html     |    8 +-
 .../docs/fr/next/functions-quickstart/index.html   |    8 +-
 content/docs/fr/next/functions-state.html          |    2 +-
 content/docs/fr/next/functions-state/index.html    |    2 +-
 content/docs/fr/next/io-connectors.html            |    2 +-
 content/docs/fr/next/io-connectors/index.html      |    2 +-
 content/docs/fr/next/io-develop.html               |    4 +-
 content/docs/fr/next/io-develop/index.html         |    4 +-
 content/docs/fr/next/io-managing.html              |    2 +-
 content/docs/fr/next/io-managing/index.html        |    2 +-
 content/docs/fr/next/io-overview.html              |    2 +-
 content/docs/fr/next/io-overview/index.html        |    2 +-
 content/docs/fr/next/io-quickstart.html            |   34 +-
 content/docs/fr/next/io-quickstart/index.html      |   34 +-
 content/docs/fr/next/pulsar-2.0.html               |    2 +-
 content/docs/fr/next/pulsar-2.0/index.html         |    2 +-
 content/docs/fr/next/pulsar-admin.html             |    2 +-
 content/docs/fr/next/pulsar-admin/index.html       |    2 +-
 content/docs/fr/next/reference-cli-tools.html      |    2 +-
 .../docs/fr/next/reference-cli-tools/index.html    |    2 +-
 content/docs/fr/next/reference-configuration.html  |    2 +-
 .../fr/next/reference-configuration/index.html     |    2 +-
 content/docs/fr/next/reference-terminology.html    |    2 +-
 .../docs/fr/next/reference-terminology/index.html  |    2 +-
 content/docs/fr/next/security-athenz.html          |    2 +-
 content/docs/fr/next/security-athenz/index.html    |    2 +-
 content/docs/fr/next/security-authorization.html   |    2 +-
 .../docs/fr/next/security-authorization/index.html |    2 +-
 content/docs/fr/next/security-encryption.html      |    2 +-
 .../docs/fr/next/security-encryption/index.html    |    2 +-
 content/docs/fr/next/security-extending.html       |    2 +-
 content/docs/fr/next/security-extending/index.html |    2 +-
 content/docs/fr/next/security-overview.html        |    2 +-
 content/docs/fr/next/security-overview/index.html  |    2 +-
 .../docs/fr/next/security-tls-authentication.html  |    2 +-
 .../fr/next/security-tls-authentication/index.html |    2 +-
 content/docs/fr/next/security-tls-transport.html   |    2 +-
 .../docs/fr/next/security-tls-transport/index.html |    2 +-
 content/docs/fr/next/standalone-docker.html        |    4 +-
 content/docs/fr/next/standalone-docker/index.html  |    4 +-
 content/docs/fr/next/standalone.html               |   32 +-
 content/docs/fr/next/standalone/index.html         |   32 +-
 content/docs/fr/pulsar-2.0.html                    |    6 +-
 content/docs/fr/pulsar-2.0/index.html              |    6 +-
 content/docs/fr/pulsar-admin.html                  |  279 +++-
 content/docs/fr/pulsar-admin/index.html            |  279 +++-
 content/docs/fr/reference-cli-tools.html           |    6 +-
 content/docs/fr/reference-cli-tools/index.html     |    6 +-
 content/docs/fr/reference-configuration.html       |   14 +-
 content/docs/fr/reference-configuration/index.html |   14 +-
 content/docs/fr/reference-terminology.html         |    6 +-
 content/docs/fr/reference-terminology/index.html   |    6 +-
 content/docs/fr/security-athenz.html               |    6 +-
 content/docs/fr/security-athenz/index.html         |    6 +-
 content/docs/fr/security-authorization.html        |    6 +-
 content/docs/fr/security-authorization/index.html  |    6 +-
 content/docs/fr/security-encryption.html           |    6 +-
 content/docs/fr/security-encryption/index.html     |    6 +-
 content/docs/fr/security-extending.html            |    6 +-
 content/docs/fr/security-extending/index.html      |    6 +-
 content/docs/fr/security-overview.html             |    6 +-
 content/docs/fr/security-overview/index.html       |    6 +-
 content/docs/fr/security-tls-authentication.html   |    6 +-
 .../docs/fr/security-tls-authentication/index.html |    6 +-
 content/docs/fr/security-tls-transport.html        |    6 +-
 content/docs/fr/security-tls-transport/index.html  |    6 +-
 content/docs/fr/sql-deployment-configurations.html |  175 +++
 .../fr/sql-deployment-configurations/index.html    |  175 +++
 content/docs/fr/sql-getting-started.html           |  189 +++
 content/docs/fr/sql-getting-started/index.html     |  189 +++
 content/docs/fr/sql-overview.html                  |   82 ++
 content/docs/fr/sql-overview/index.html            |   82 ++
 content/docs/fr/standalone-docker.html             |    8 +-
 content/docs/fr/standalone-docker/index.html       |    8 +-
 content/docs/fr/standalone.html                    |   49 +-
 content/docs/fr/standalone/index.html              |   49 +-
 .../docs/ja/2.1.0-incubating/adaptors-kafka.html   |  335 +++++
 .../ja/2.1.0-incubating/adaptors-kafka/index.html  |  335 +++++
 .../docs/ja/2.1.0-incubating/adaptors-spark.html   |  141 ++
 .../ja/2.1.0-incubating/adaptors-spark/index.html  |  141 ++
 .../docs/ja/2.1.0-incubating/adaptors-storm.html   |  182 +++
 .../ja/2.1.0-incubating/adaptors-storm/index.html  |  182 +++
 .../ja/2.1.0-incubating/admin-api-brokers.html     |  196 +++
 .../2.1.0-incubating/admin-api-brokers/index.html  |  196 +++
 .../ja/2.1.0-incubating/admin-api-clusters.html    |  236 +++
 .../2.1.0-incubating/admin-api-clusters/index.html |  236 +++
 .../ja/2.1.0-incubating/admin-api-namespaces.html  |  457 ++++++
 .../admin-api-namespaces/index.html                |  457 ++++++
 .../admin-api-non-persistent-topics.html           |  273 ++++
 .../admin-api-non-persistent-topics/index.html     |  273 ++++
 .../ja/2.1.0-incubating/admin-api-overview.html    |  162 ++
 .../2.1.0-incubating/admin-api-overview/index.html |  162 ++
 .../admin-api-partitioned-topics.html              |  343 +++++
 .../admin-api-partitioned-topics/index.html        |  343 +++++
 .../ja/2.1.0-incubating/admin-api-permissions.html |  167 +++
 .../admin-api-permissions/index.html               |  167 +++
 .../admin-api-persistent-topics.html               |  484 ++++++
 .../admin-api-persistent-topics/index.html         |  484 ++++++
 .../ja/2.1.0-incubating/admin-api-schemas.html     |  163 +++
 .../2.1.0-incubating/admin-api-schemas/index.html  |  163 +++
 .../ja/2.1.0-incubating/admin-api-tenants.html     |  151 ++
 .../2.1.0-incubating/admin-api-tenants/index.html  |  151 ++
 .../2.1.0-incubating/administration-dashboard.html |  127 ++
 .../administration-dashboard/index.html            |  127 ++
 .../ja/2.1.0-incubating/administration-geo.html    |  176 +++
 .../2.1.0-incubating/administration-geo/index.html |  176 +++
 .../administration-load-distribution.html          |  201 +++
 .../administration-load-distribution/index.html    |  201 +++
 .../ja/2.1.0-incubating/administration-proxy.html  |  152 ++
 .../administration-proxy/index.html                |  152 ++
 .../ja/2.1.0-incubating/administration-stats.html  |  164 +++
 .../administration-stats/index.html                |  164 +++
 .../ja/2.1.0-incubating/administration-zk-bk.html  |  314 ++++
 .../administration-zk-bk/index.html                |  314 ++++
 .../ja/2.1.0-incubating/client-libraries-cpp.html  |  238 +++
 .../client-libraries-cpp/index.html                |  238 +++
 .../ja/2.1.0-incubating/client-libraries-go.html   |  513 +++++++
 .../client-libraries-go/index.html                 |  513 +++++++
 .../ja/2.1.0-incubating/client-libraries-java.html |  454 ++++++
 .../client-libraries-java/index.html               |  454 ++++++
 .../2.1.0-incubating/client-libraries-python.html  |  165 +++
 .../client-libraries-python/index.html             |  165 +++
 .../client-libraries-websocket.html                |  445 ++++++
 .../client-libraries-websocket/index.html          |  445 ++++++
 .../docs/ja/2.1.0-incubating/client-libraries.html |  168 +++
 .../2.1.0-incubating/client-libraries/index.html   |  168 +++
 .../concepts-architecture-overview.html            |  210 +++
 .../concepts-architecture-overview/index.html      |  210 +++
 .../ja/2.1.0-incubating/concepts-architecture.html |   79 +
 .../concepts-architecture/index.html               |   79 +
 .../2.1.0-incubating/concepts-authentication.html  |  102 ++
 .../concepts-authentication/index.html             |  102 ++
 .../docs/ja/2.1.0-incubating/concepts-clients.html |  159 ++
 .../2.1.0-incubating/concepts-clients/index.html   |  159 ++
 .../ja/2.1.0-incubating/concepts-messaging.html    |  330 +++++
 .../2.1.0-incubating/concepts-messaging/index.html |  330 +++++
 .../2.1.0-incubating/concepts-multi-tenancy.html   |  125 ++
 .../concepts-multi-tenancy/index.html              |  125 ++
 .../ja/2.1.0-incubating/concepts-overview.html     |  126 ++
 .../2.1.0-incubating/concepts-overview/index.html  |  126 ++
 .../ja/2.1.0-incubating/concepts-replication.html  |  102 ++
 .../concepts-replication/index.html                |  102 ++
 .../2.1.0-incubating/concepts-schema-registry.html |  173 +++
 .../concepts-schema-registry/index.html            |  173 +++
 .../2.1.0-incubating/concepts-tiered-storage.html  |  111 ++
 .../concepts-tiered-storage/index.html             |  111 ++
 .../concepts-topic-compaction.html                 |  128 ++
 .../concepts-topic-compaction/index.html           |  128 ++
 .../ja/2.1.0-incubating/cookbooks-compaction.html  |  195 +++
 .../cookbooks-compaction/index.html                |  195 +++
 .../2.1.0-incubating/cookbooks-deduplication.html  |  190 +++
 .../cookbooks-deduplication/index.html             |  190 +++
 .../ja/2.1.0-incubating/cookbooks-encryption.html  |  252 ++++
 .../cookbooks-encryption/index.html                |  252 ++++
 .../2.1.0-incubating/cookbooks-message-queue.html  |  174 +++
 .../cookbooks-message-queue/index.html             |  174 +++
 .../2.1.0-incubating/cookbooks-non-persistent.html |  139 ++
 .../cookbooks-non-persistent/index.html            |  139 ++
 .../ja/2.1.0-incubating/cookbooks-partitioned.html |  150 ++
 .../cookbooks-partitioned/index.html               |  150 ++
 .../cookbooks-retention-expiry.html                |  279 ++++
 .../cookbooks-retention-expiry/index.html          |  279 ++++
 .../2.1.0-incubating/cookbooks-tiered-storage.html |  186 +++
 .../cookbooks-tiered-storage/index.html            |  186 +++
 content/docs/ja/2.1.0-incubating/deploy-aws.html   |  250 ++++
 .../docs/ja/2.1.0-incubating/deploy-aws/index.html |  250 ++++
 .../deploy-bare-metal-multi-cluster.html           |  358 +++++
 .../deploy-bare-metal-multi-cluster/index.html     |  358 +++++
 .../ja/2.1.0-incubating/deploy-bare-metal.html     |  356 +++++
 .../2.1.0-incubating/deploy-bare-metal/index.html  |  356 +++++
 content/docs/ja/2.1.0-incubating/deploy-dcos.html  |  203 +++
 .../ja/2.1.0-incubating/deploy-dcos/index.html     |  203 +++
 .../ja/2.1.0-incubating/deploy-kubernetes.html     |  356 +++++
 .../2.1.0-incubating/deploy-kubernetes/index.html  |  356 +++++
 .../ja/2.1.0-incubating/deploy-monitoring.html     |  145 ++
 .../2.1.0-incubating/deploy-monitoring/index.html  |  145 ++
 .../2.1.0-incubating/develop-binary-protocol.html  |  384 +++++
 .../develop-binary-protocol/index.html             |  384 +++++
 content/docs/ja/2.1.0-incubating/develop-cpp.html  |  171 +++
 .../ja/2.1.0-incubating/develop-cpp/index.html     |  171 +++
 .../ja/2.1.0-incubating/develop-load-manager.html  |  245 ++++
 .../develop-load-manager/index.html                |  245 ++++
 .../docs/ja/2.1.0-incubating/develop-schema.html   |  145 ++
 .../ja/2.1.0-incubating/develop-schema/index.html  |  145 ++
 .../docs/ja/2.1.0-incubating/develop-tools.html    |  165 +++
 .../ja/2.1.0-incubating/develop-tools/index.html   |  165 +++
 .../docs/ja/2.1.0-incubating/functions-api.html    |  693 +++++++++
 .../ja/2.1.0-incubating/functions-api/index.html   |  693 +++++++++
 .../ja/2.1.0-incubating/functions-deploying.html   |  270 ++++
 .../functions-deploying/index.html                 |  270 ++++
 .../ja/2.1.0-incubating/functions-guarantees.html  |  133 ++
 .../functions-guarantees/index.html                |  133 ++
 .../ja/2.1.0-incubating/functions-metrics.html     |  128 ++
 .../2.1.0-incubating/functions-metrics/index.html  |  128 ++
 .../ja/2.1.0-incubating/functions-overview.html    |  452 ++++++
 .../2.1.0-incubating/functions-overview/index.html |  452 ++++++
 .../ja/2.1.0-incubating/functions-quickstart.html  |  296 ++++
 .../functions-quickstart/index.html                |  296 ++++
 .../docs/ja/2.1.0-incubating/functions-state.html  |  175 +++
 .../ja/2.1.0-incubating/functions-state/index.html |  175 +++
 content/docs/ja/2.1.0-incubating/io-aerospike.html |   91 ++
 .../ja/2.1.0-incubating/io-aerospike/index.html    |   91 ++
 content/docs/ja/2.1.0-incubating/io-cassandra.html |   90 ++
 .../ja/2.1.0-incubating/io-cassandra/index.html    |   90 ++
 .../docs/ja/2.1.0-incubating/io-connectors.html    |  111 ++
 .../ja/2.1.0-incubating/io-connectors/index.html   |  111 ++
 content/docs/ja/2.1.0-incubating/io-develop.html   |  216 +++
 .../docs/ja/2.1.0-incubating/io-develop/index.html |  216 +++
 content/docs/ja/2.1.0-incubating/io-kafka.html     |  109 ++
 .../docs/ja/2.1.0-incubating/io-kafka/index.html   |  109 ++
 content/docs/ja/2.1.0-incubating/io-kinesis.html   |   99 ++
 .../docs/ja/2.1.0-incubating/io-kinesis/index.html |   99 ++
 content/docs/ja/2.1.0-incubating/io-managing.html  |  194 +++
 .../ja/2.1.0-incubating/io-managing/index.html     |  194 +++
 content/docs/ja/2.1.0-incubating/io-overview.html  |  134 ++
 .../ja/2.1.0-incubating/io-overview/index.html     |  134 ++
 .../docs/ja/2.1.0-incubating/io-quickstart.html    |  389 +++++
 .../ja/2.1.0-incubating/io-quickstart/index.html   |  389 +++++
 content/docs/ja/2.1.0-incubating/io-rabbitmq.html  |   87 ++
 .../ja/2.1.0-incubating/io-rabbitmq/index.html     |   87 ++
 content/docs/ja/2.1.0-incubating/io-twitter.html   |   91 ++
 .../docs/ja/2.1.0-incubating/io-twitter/index.html |   91 ++
 content/docs/ja/2.1.0-incubating/pulsar-2.0.html   |  157 ++
 .../docs/ja/2.1.0-incubating/pulsar-2.0/index.html |  157 ++
 content/docs/ja/2.1.0-incubating/pulsar-admin.html | 1405 ++++++++++++++++++
 .../ja/2.1.0-incubating/pulsar-admin/index.html    | 1405 ++++++++++++++++++
 .../ja/2.1.0-incubating/reference-cli-tools.html   |  586 ++++++++
 .../reference-cli-tools/index.html                 |  586 ++++++++
 .../2.1.0-incubating/reference-configuration.html  |  524 +++++++
 .../reference-configuration/index.html             |  524 +++++++
 .../ja/2.1.0-incubating/reference-terminology.html |  169 +++
 .../reference-terminology/index.html               |  169 +++
 .../docs/ja/2.1.0-incubating/security-athenz.html  |  163 +++
 .../ja/2.1.0-incubating/security-athenz/index.html |  163 +++
 .../2.1.0-incubating/security-authorization.html   |  171 +++
 .../security-authorization/index.html              |  171 +++
 .../ja/2.1.0-incubating/security-encryption.html   |  252 ++++
 .../security-encryption/index.html                 |  252 ++++
 .../ja/2.1.0-incubating/security-extending.html    |  261 ++++
 .../2.1.0-incubating/security-extending/index.html |  261 ++++
 .../ja/2.1.0-incubating/security-overview.html     |  121 ++
 .../2.1.0-incubating/security-overview/index.html  |  121 ++
 .../security-tls-authentication.html               |  188 +++
 .../security-tls-authentication/index.html         |  188 +++
 .../2.1.0-incubating/security-tls-transport.html   |  228 +++
 .../security-tls-transport/index.html              |  228 +++
 .../ja/2.1.0-incubating/standalone-docker.html     |  210 +++
 .../2.1.0-incubating/standalone-docker/index.html  |  210 +++
 content/docs/ja/2.1.0-incubating/standalone.html   |  237 +++
 .../docs/ja/2.1.0-incubating/standalone/index.html |  237 +++
 content/docs/ja/adaptors-kafka.html                |   16 +-
 content/docs/ja/adaptors-kafka/index.html          |   16 +-
 content/docs/ja/adaptors-spark.html                |   12 +-
 content/docs/ja/adaptors-spark/index.html          |   12 +-
 content/docs/ja/adaptors-storm.html                |    8 +-
 content/docs/ja/adaptors-storm/index.html          |    8 +-
 content/docs/ja/admin-api-brokers.html             |    8 +-
 content/docs/ja/admin-api-brokers/index.html       |    8 +-
 content/docs/ja/admin-api-clusters.html            |    8 +-
 content/docs/ja/admin-api-clusters/index.html      |    8 +-
 content/docs/ja/admin-api-namespaces.html          |    8 +-
 content/docs/ja/admin-api-namespaces/index.html    |    8 +-
 .../docs/ja/admin-api-non-persistent-topics.html   |    8 +-
 .../ja/admin-api-non-persistent-topics/index.html  |    8 +-
 content/docs/ja/admin-api-overview.html            |    8 +-
 content/docs/ja/admin-api-overview/index.html      |    8 +-
 content/docs/ja/admin-api-partitioned-topics.html  |    8 +-
 .../ja/admin-api-partitioned-topics/index.html     |    8 +-
 content/docs/ja/admin-api-permissions.html         |    8 +-
 content/docs/ja/admin-api-permissions/index.html   |    8 +-
 content/docs/ja/admin-api-persistent-topics.html   |    8 +-
 .../docs/ja/admin-api-persistent-topics/index.html |    8 +-
 content/docs/ja/admin-api-schemas.html             |    8 +-
 content/docs/ja/admin-api-schemas/index.html       |    8 +-
 content/docs/ja/admin-api-tenants.html             |    8 +-
 content/docs/ja/admin-api-tenants/index.html       |    8 +-
 content/docs/ja/administration-dashboard.html      |    8 +-
 .../docs/ja/administration-dashboard/index.html    |    8 +-
 content/docs/ja/administration-geo.html            |    8 +-
 content/docs/ja/administration-geo/index.html      |    8 +-
 .../docs/ja/administration-load-distribution.html  |    8 +-
 .../ja/administration-load-distribution/index.html |    8 +-
 content/docs/ja/administration-proxy.html          |   10 +-
 content/docs/ja/administration-proxy/index.html    |   10 +-
 content/docs/ja/administration-stats.html          |    8 +-
 content/docs/ja/administration-stats/index.html    |    8 +-
 content/docs/ja/administration-zk-bk.html          |    8 +-
 content/docs/ja/administration-zk-bk/index.html    |    8 +-
 content/docs/ja/client-libraries-cpp.html          |   26 +-
 content/docs/ja/client-libraries-cpp/index.html    |   26 +-
 content/docs/ja/client-libraries-go.html           |   10 +-
 content/docs/ja/client-libraries-go/index.html     |   10 +-
 content/docs/ja/client-libraries-java.html         |   20 +-
 content/docs/ja/client-libraries-java/index.html   |   20 +-
 content/docs/ja/client-libraries-python.html       |   15 +-
 content/docs/ja/client-libraries-python/index.html |   15 +-
 content/docs/ja/client-libraries-websocket.html    |    8 +-
 .../docs/ja/client-libraries-websocket/index.html  |    8 +-
 content/docs/ja/client-libraries.html              |   33 +-
 content/docs/ja/client-libraries/index.html        |   33 +-
 .../docs/ja/concepts-architecture-overview.html    |    8 +-
 .../ja/concepts-architecture-overview/index.html   |    8 +-
 content/docs/ja/concepts-architecture.html         |    6 +-
 content/docs/ja/concepts-architecture/index.html   |    6 +-
 content/docs/ja/concepts-authentication.html       |    8 +-
 content/docs/ja/concepts-authentication/index.html |    8 +-
 content/docs/ja/concepts-clients.html              |    8 +-
 content/docs/ja/concepts-clients/index.html        |    8 +-
 content/docs/ja/concepts-messaging.html            |    8 +-
 content/docs/ja/concepts-messaging/index.html      |    8 +-
 content/docs/ja/concepts-multi-tenancy.html        |    8 +-
 content/docs/ja/concepts-multi-tenancy/index.html  |    8 +-
 content/docs/ja/concepts-overview.html             |    8 +-
 content/docs/ja/concepts-overview/index.html       |    8 +-
 content/docs/ja/concepts-replication.html          |    8 +-
 content/docs/ja/concepts-replication/index.html    |    8 +-
 content/docs/ja/concepts-schema-registry.html      |    8 +-
 .../docs/ja/concepts-schema-registry/index.html    |    8 +-
 content/docs/ja/concepts-tiered-storage.html       |    8 +-
 content/docs/ja/concepts-tiered-storage/index.html |    8 +-
 content/docs/ja/concepts-topic-compaction.html     |    8 +-
 .../docs/ja/concepts-topic-compaction/index.html   |    8 +-
 content/docs/ja/cookbooks-compaction.html          |    8 +-
 content/docs/ja/cookbooks-compaction/index.html    |    8 +-
 content/docs/ja/cookbooks-deduplication.html       |    8 +-
 content/docs/ja/cookbooks-deduplication/index.html |    8 +-
 content/docs/ja/cookbooks-encryption.html          |    8 +-
 content/docs/ja/cookbooks-encryption/index.html    |    8 +-
 content/docs/ja/cookbooks-message-queue.html       |    8 +-
 content/docs/ja/cookbooks-message-queue/index.html |    8 +-
 content/docs/ja/cookbooks-non-persistent.html      |    8 +-
 .../docs/ja/cookbooks-non-persistent/index.html    |    8 +-
 content/docs/ja/cookbooks-partitioned.html         |    8 +-
 content/docs/ja/cookbooks-partitioned/index.html   |    8 +-
 content/docs/ja/cookbooks-retention-expiry.html    |    8 +-
 .../docs/ja/cookbooks-retention-expiry/index.html  |    8 +-
 content/docs/ja/cookbooks-tiered-storage.html      |   85 +-
 .../docs/ja/cookbooks-tiered-storage/index.html    |   85 +-
 content/docs/ja/deploy-aws.html                    |    8 +-
 content/docs/ja/deploy-aws/index.html              |    8 +-
 .../docs/ja/deploy-bare-metal-multi-cluster.html   |   16 +-
 .../ja/deploy-bare-metal-multi-cluster/index.html  |   16 +-
 content/docs/ja/deploy-bare-metal.html             |   42 +-
 content/docs/ja/deploy-bare-metal/index.html       |   42 +-
 content/docs/ja/deploy-dcos.html                   |    8 +-
 content/docs/ja/deploy-dcos/index.html             |    8 +-
 content/docs/ja/deploy-kubernetes.html             |    8 +-
 content/docs/ja/deploy-kubernetes/index.html       |    8 +-
 content/docs/ja/deploy-monitoring.html             |    8 +-
 content/docs/ja/deploy-monitoring/index.html       |    8 +-
 content/docs/ja/develop-binary-protocol.html       |    8 +-
 content/docs/ja/develop-binary-protocol/index.html |    8 +-
 content/docs/ja/develop-cpp.html                   |    8 +-
 content/docs/ja/develop-cpp/index.html             |    8 +-
 content/docs/ja/develop-load-manager.html          |    8 +-
 content/docs/ja/develop-load-manager/index.html    |    8 +-
 content/docs/ja/develop-schema.html                |    8 +-
 content/docs/ja/develop-schema/index.html          |    8 +-
 content/docs/ja/develop-tools.html                 |    8 +-
 content/docs/ja/develop-tools/index.html           |    8 +-
 content/docs/ja/functions-api.html                 |   79 +-
 content/docs/ja/functions-api/index.html           |   79 +-
 content/docs/ja/functions-deploying.html           |   28 +-
 content/docs/ja/functions-deploying/index.html     |   28 +-
 content/docs/ja/functions-guarantees.html          |   12 +-
 content/docs/ja/functions-guarantees/index.html    |   12 +-
 content/docs/ja/functions-metrics.html             |    8 +-
 content/docs/ja/functions-metrics/index.html       |    8 +-
 content/docs/ja/functions-overview.html            |   32 +-
 content/docs/ja/functions-overview/index.html      |   32 +-
 content/docs/ja/functions-quickstart.html          |   24 +-
 content/docs/ja/functions-quickstart/index.html    |   24 +-
 content/docs/ja/functions-state.html               |    8 +-
 content/docs/ja/functions-state/index.html         |    8 +-
 content/docs/ja/io-aerospike.html                  |    6 +-
 content/docs/ja/io-aerospike/index.html            |    6 +-
 content/docs/ja/io-cassandra.html                  |    6 +-
 content/docs/ja/io-cassandra/index.html            |    6 +-
 content/docs/ja/io-connectors.html                 |    8 +-
 content/docs/ja/io-connectors/index.html           |    8 +-
 content/docs/ja/io-develop.html                    |    8 +-
 content/docs/ja/io-develop/index.html              |    8 +-
 content/docs/ja/io-kafka.html                      |    6 +-
 content/docs/ja/io-kafka/index.html                |    6 +-
 content/docs/ja/io-kinesis.html                    |    6 +-
 content/docs/ja/io-kinesis/index.html              |    6 +-
 content/docs/ja/io-managing.html                   |   28 +-
 content/docs/ja/io-managing/index.html             |   28 +-
 content/docs/ja/io-overview.html                   |    8 +-
 content/docs/ja/io-overview/index.html             |    8 +-
 content/docs/ja/io-quickstart.html                 |   40 +-
 content/docs/ja/io-quickstart/index.html           |   40 +-
 content/docs/ja/io-rabbitmq.html                   |    6 +-
 content/docs/ja/io-rabbitmq/index.html             |    6 +-
 content/docs/ja/io-twitter.html                    |    6 +-
 content/docs/ja/io-twitter/index.html              |    6 +-
 content/docs/ja/next/adaptors-kafka.html           |    6 +-
 content/docs/ja/next/adaptors-kafka/index.html     |    6 +-
 content/docs/ja/next/adaptors-spark.html           |    6 +-
 content/docs/ja/next/adaptors-spark/index.html     |    6 +-
 content/docs/ja/next/adaptors-storm.html           |    2 +-
 content/docs/ja/next/adaptors-storm/index.html     |    2 +-
 content/docs/ja/next/admin-api-brokers.html        |    2 +-
 content/docs/ja/next/admin-api-brokers/index.html  |    2 +-
 content/docs/ja/next/admin-api-clusters.html       |    2 +-
 content/docs/ja/next/admin-api-clusters/index.html |    2 +-
 content/docs/ja/next/admin-api-namespaces.html     |    2 +-
 .../docs/ja/next/admin-api-namespaces/index.html   |    2 +-
 .../ja/next/admin-api-non-persistent-topics.html   |    2 +-
 .../admin-api-non-persistent-topics/index.html     |    2 +-
 content/docs/ja/next/admin-api-overview.html       |    2 +-
 content/docs/ja/next/admin-api-overview/index.html |    2 +-
 .../docs/ja/next/admin-api-partitioned-topics.html |    2 +-
 .../next/admin-api-partitioned-topics/index.html   |    2 +-
 content/docs/ja/next/admin-api-permissions.html    |    2 +-
 .../docs/ja/next/admin-api-permissions/index.html  |    2 +-
 .../docs/ja/next/admin-api-persistent-topics.html  |    2 +-
 .../ja/next/admin-api-persistent-topics/index.html |    2 +-
 content/docs/ja/next/admin-api-schemas.html        |    2 +-
 content/docs/ja/next/admin-api-schemas/index.html  |    2 +-
 content/docs/ja/next/admin-api-tenants.html        |    2 +-
 content/docs/ja/next/admin-api-tenants/index.html  |    2 +-
 content/docs/ja/next/administration-dashboard.html |    2 +-
 .../ja/next/administration-dashboard/index.html    |    2 +-
 content/docs/ja/next/administration-geo.html       |    2 +-
 content/docs/ja/next/administration-geo/index.html |    2 +-
 .../ja/next/administration-load-distribution.html  |    2 +-
 .../administration-load-distribution/index.html    |    2 +-
 content/docs/ja/next/administration-proxy.html     |    2 +-
 .../docs/ja/next/administration-proxy/index.html   |    2 +-
 content/docs/ja/next/administration-stats.html     |    2 +-
 .../docs/ja/next/administration-stats/index.html   |    2 +-
 content/docs/ja/next/administration-zk-bk.html     |    2 +-
 .../docs/ja/next/administration-zk-bk/index.html   |    2 +-
 content/docs/ja/next/client-libraries-cpp.html     |   12 +-
 .../docs/ja/next/client-libraries-cpp/index.html   |   12 +-
 content/docs/ja/next/client-libraries-go.html      |    4 +-
 .../docs/ja/next/client-libraries-go/index.html    |    4 +-
 content/docs/ja/next/client-libraries-java.html    |   16 +-
 .../docs/ja/next/client-libraries-java/index.html  |   16 +-
 content/docs/ja/next/client-libraries-python.html  |    4 +-
 .../ja/next/client-libraries-python/index.html     |    4 +-
 .../docs/ja/next/client-libraries-websocket.html   |    2 +-
 .../ja/next/client-libraries-websocket/index.html  |    2 +-
 content/docs/ja/next/client-libraries.html         |    2 +-
 content/docs/ja/next/client-libraries/index.html   |    2 +-
 .../ja/next/concepts-architecture-overview.html    |    2 +-
 .../next/concepts-architecture-overview/index.html |    2 +-
 content/docs/ja/next/concepts-authentication.html  |    2 +-
 .../ja/next/concepts-authentication/index.html     |    2 +-
 content/docs/ja/next/concepts-clients.html         |    2 +-
 content/docs/ja/next/concepts-clients/index.html   |    2 +-
 content/docs/ja/next/concepts-messaging.html       |    2 +-
 content/docs/ja/next/concepts-messaging/index.html |    2 +-
 content/docs/ja/next/concepts-multi-tenancy.html   |    2 +-
 .../docs/ja/next/concepts-multi-tenancy/index.html |    2 +-
 content/docs/ja/next/concepts-overview.html        |    2 +-
 content/docs/ja/next/concepts-overview/index.html  |    2 +-
 content/docs/ja/next/concepts-replication.html     |    2 +-
 .../docs/ja/next/concepts-replication/index.html   |    2 +-
 content/docs/ja/next/concepts-schema-registry.html |    2 +-
 .../ja/next/concepts-schema-registry/index.html    |    2 +-
 content/docs/ja/next/concepts-tiered-storage.html  |    2 +-
 .../ja/next/concepts-tiered-storage/index.html     |    2 +-
 .../docs/ja/next/concepts-topic-compaction.html    |    2 +-
 .../ja/next/concepts-topic-compaction/index.html   |    2 +-
 content/docs/ja/next/cookbooks-compaction.html     |    2 +-
 .../docs/ja/next/cookbooks-compaction/index.html   |    2 +-
 content/docs/ja/next/cookbooks-deduplication.html  |    2 +-
 .../ja/next/cookbooks-deduplication/index.html     |    2 +-
 content/docs/ja/next/cookbooks-encryption.html     |    2 +-
 .../docs/ja/next/cookbooks-encryption/index.html   |    2 +-
 content/docs/ja/next/cookbooks-message-queue.html  |    2 +-
 .../ja/next/cookbooks-message-queue/index.html     |    2 +-
 content/docs/ja/next/cookbooks-non-persistent.html |    2 +-
 .../ja/next/cookbooks-non-persistent/index.html    |    2 +-
 content/docs/ja/next/cookbooks-partitioned.html    |    2 +-
 .../docs/ja/next/cookbooks-partitioned/index.html  |    2 +-
 .../docs/ja/next/cookbooks-retention-expiry.html   |    2 +-
 .../ja/next/cookbooks-retention-expiry/index.html  |    2 +-
 content/docs/ja/next/cookbooks-tiered-storage.html |    2 +-
 .../ja/next/cookbooks-tiered-storage/index.html    |    2 +-
 content/docs/ja/next/deploy-aws.html               |    4 +-
 content/docs/ja/next/deploy-aws/index.html         |    4 +-
 .../ja/next/deploy-bare-metal-multi-cluster.html   |   10 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   10 +-
 content/docs/ja/next/deploy-bare-metal.html        |   32 +-
 content/docs/ja/next/deploy-bare-metal/index.html  |   32 +-
 content/docs/ja/next/deploy-dcos.html              |    2 +-
 content/docs/ja/next/deploy-dcos/index.html        |    2 +-
 content/docs/ja/next/deploy-kubernetes.html        |    2 +-
 content/docs/ja/next/deploy-kubernetes/index.html  |    2 +-
 content/docs/ja/next/deploy-monitoring.html        |    2 +-
 content/docs/ja/next/deploy-monitoring/index.html  |    2 +-
 content/docs/ja/next/develop-binary-protocol.html  |    2 +-
 .../ja/next/develop-binary-protocol/index.html     |    2 +-
 content/docs/ja/next/develop-cpp.html              |    2 +-
 content/docs/ja/next/develop-cpp/index.html        |    2 +-
 content/docs/ja/next/develop-load-manager.html     |    2 +-
 .../docs/ja/next/develop-load-manager/index.html   |    2 +-
 content/docs/ja/next/develop-schema.html           |    2 +-
 content/docs/ja/next/develop-schema/index.html     |    2 +-
 content/docs/ja/next/develop-tools.html            |    2 +-
 content/docs/ja/next/develop-tools/index.html      |    2 +-
 content/docs/ja/next/functions-api.html            |    2 +-
 content/docs/ja/next/functions-api/index.html      |    2 +-
 content/docs/ja/next/functions-deploying.html      |    2 +-
 .../docs/ja/next/functions-deploying/index.html    |    2 +-
 content/docs/ja/next/functions-guarantees.html     |    2 +-
 .../docs/ja/next/functions-guarantees/index.html   |    2 +-
 content/docs/ja/next/functions-metrics.html        |    2 +-
 content/docs/ja/next/functions-metrics/index.html  |    2 +-
 content/docs/ja/next/functions-overview.html       |    2 +-
 content/docs/ja/next/functions-overview/index.html |    2 +-
 content/docs/ja/next/functions-quickstart.html     |    8 +-
 .../docs/ja/next/functions-quickstart/index.html   |    8 +-
 content/docs/ja/next/functions-state.html          |    2 +-
 content/docs/ja/next/functions-state/index.html    |    2 +-
 content/docs/ja/next/io-connectors.html            |    2 +-
 content/docs/ja/next/io-connectors/index.html      |    2 +-
 content/docs/ja/next/io-develop.html               |    4 +-
 content/docs/ja/next/io-develop/index.html         |    4 +-
 content/docs/ja/next/io-managing.html              |    2 +-
 content/docs/ja/next/io-managing/index.html        |    2 +-
 content/docs/ja/next/io-overview.html              |    2 +-
 content/docs/ja/next/io-overview/index.html        |    2 +-
 content/docs/ja/next/io-quickstart.html            |   34 +-
 content/docs/ja/next/io-quickstart/index.html      |   34 +-
 content/docs/ja/next/pulsar-2.0.html               |    2 +-
 content/docs/ja/next/pulsar-2.0/index.html         |    2 +-
 content/docs/ja/next/pulsar-admin.html             |    2 +-
 content/docs/ja/next/pulsar-admin/index.html       |    2 +-
 content/docs/ja/next/reference-cli-tools.html      |    2 +-
 .../docs/ja/next/reference-cli-tools/index.html    |    2 +-
 content/docs/ja/next/reference-configuration.html  |    2 +-
 .../ja/next/reference-configuration/index.html     |    2 +-
 content/docs/ja/next/reference-terminology.html    |    2 +-
 .../docs/ja/next/reference-terminology/index.html  |    2 +-
 content/docs/ja/next/security-athenz.html          |    2 +-
 content/docs/ja/next/security-athenz/index.html    |    2 +-
 content/docs/ja/next/security-authorization.html   |    2 +-
 .../docs/ja/next/security-authorization/index.html |    2 +-
 content/docs/ja/next/security-encryption.html      |    2 +-
 .../docs/ja/next/security-encryption/index.html    |    2 +-
 content/docs/ja/next/security-extending.html       |    2 +-
 content/docs/ja/next/security-extending/index.html |    2 +-
 content/docs/ja/next/security-overview.html        |    2 +-
 content/docs/ja/next/security-overview/index.html  |    2 +-
 .../docs/ja/next/security-tls-authentication.html  |    2 +-
 .../ja/next/security-tls-authentication/index.html |    2 +-
 content/docs/ja/next/security-tls-transport.html   |    2 +-
 .../docs/ja/next/security-tls-transport/index.html |    2 +-
 content/docs/ja/next/standalone-docker.html        |    4 +-
 content/docs/ja/next/standalone-docker/index.html  |    4 +-
 content/docs/ja/next/standalone.html               |   32 +-
 content/docs/ja/next/standalone/index.html         |   32 +-
 content/docs/ja/pulsar-2.0.html                    |    8 +-
 content/docs/ja/pulsar-2.0/index.html              |    8 +-
 content/docs/ja/pulsar-admin.html                  |  281 +++-
 content/docs/ja/pulsar-admin/index.html            |  281 +++-
 content/docs/ja/reference-cli-tools.html           |    8 +-
 content/docs/ja/reference-cli-tools/index.html     |    8 +-
 content/docs/ja/reference-configuration.html       |   16 +-
 content/docs/ja/reference-configuration/index.html |   16 +-
 content/docs/ja/reference-terminology.html         |    8 +-
 content/docs/ja/reference-terminology/index.html   |    8 +-
 content/docs/ja/security-athenz.html               |    8 +-
 content/docs/ja/security-athenz/index.html         |    8 +-
 content/docs/ja/security-authorization.html        |    8 +-
 content/docs/ja/security-authorization/index.html  |    8 +-
 content/docs/ja/security-encryption.html           |    8 +-
 content/docs/ja/security-encryption/index.html     |    8 +-
 content/docs/ja/security-extending.html            |    8 +-
 content/docs/ja/security-extending/index.html      |    8 +-
 content/docs/ja/security-overview.html             |    8 +-
 content/docs/ja/security-overview/index.html       |    8 +-
 content/docs/ja/security-tls-authentication.html   |    8 +-
 .../docs/ja/security-tls-authentication/index.html |    8 +-
 content/docs/ja/security-tls-transport.html        |    8 +-
 content/docs/ja/security-tls-transport/index.html  |    8 +-
 content/docs/ja/sql-deployment-configurations.html |  175 +++
 .../ja/sql-deployment-configurations/index.html    |  175 +++
 content/docs/ja/sql-getting-started.html           |  189 +++
 content/docs/ja/sql-getting-started/index.html     |  189 +++
 content/docs/ja/sql-overview.html                  |   82 ++
 content/docs/ja/sql-overview/index.html            |   82 ++
 content/docs/ja/standalone-docker.html             |   10 +-
 content/docs/ja/standalone-docker/index.html       |   10 +-
 content/docs/ja/standalone.html                    |   51 +-
 content/docs/ja/standalone/index.html              |   51 +-
 content/docs/sql-deployment-configurations.html    |   13 +
 .../docs/sql-deployment-configurations/index.html  |   13 +
 content/docs/sql-getting-started.html              |   13 +
 content/docs/sql-getting-started/index.html        |   13 +
 content/docs/sql-overview.html                     |   13 +
 content/docs/sql-overview/index.html               |   13 +
 .../zh-CN/2.1.0-incubating/adaptors-kafka.html     |  335 +++++
 .../2.1.0-incubating/adaptors-kafka/index.html     |  335 +++++
 .../zh-CN/2.1.0-incubating/adaptors-spark.html     |  141 ++
 .../2.1.0-incubating/adaptors-spark/index.html     |  141 ++
 .../zh-CN/2.1.0-incubating/adaptors-storm.html     |  182 +++
 .../2.1.0-incubating/adaptors-storm/index.html     |  182 +++
 .../zh-CN/2.1.0-incubating/admin-api-brokers.html  |  196 +++
 .../2.1.0-incubating/admin-api-brokers/index.html  |  196 +++
 .../zh-CN/2.1.0-incubating/admin-api-clusters.html |  236 +++
 .../2.1.0-incubating/admin-api-clusters/index.html |  236 +++
 .../2.1.0-incubating/admin-api-namespaces.html     |  457 ++++++
 .../admin-api-namespaces/index.html                |  457 ++++++
 .../admin-api-non-persistent-topics.html           |  273 ++++
 .../admin-api-non-persistent-topics/index.html     |  273 ++++
 .../zh-CN/2.1.0-incubating/admin-api-overview.html |  163 +++
 .../2.1.0-incubating/admin-api-overview/index.html |  163 +++
 .../admin-api-partitioned-topics.html              |  343 +++++
 .../admin-api-partitioned-topics/index.html        |  343 +++++
 .../2.1.0-incubating/admin-api-permissions.html    |  167 +++
 .../admin-api-permissions/index.html               |  167 +++
 .../admin-api-persistent-topics.html               |  484 ++++++
 .../admin-api-persistent-topics/index.html         |  484 ++++++
 .../zh-CN/2.1.0-incubating/admin-api-schemas.html  |  163 +++
 .../2.1.0-incubating/admin-api-schemas/index.html  |  163 +++
 .../zh-CN/2.1.0-incubating/admin-api-tenants.html  |  151 ++
 .../2.1.0-incubating/admin-api-tenants/index.html  |  151 ++
 .../2.1.0-incubating/administration-dashboard.html |  127 ++
 .../administration-dashboard/index.html            |  127 ++
 .../zh-CN/2.1.0-incubating/administration-geo.html |  176 +++
 .../2.1.0-incubating/administration-geo/index.html |  176 +++
 .../administration-load-distribution.html          |  201 +++
 .../administration-load-distribution/index.html    |  201 +++
 .../2.1.0-incubating/administration-proxy.html     |  152 ++
 .../administration-proxy/index.html                |  152 ++
 .../2.1.0-incubating/administration-stats.html     |  164 +++
 .../administration-stats/index.html                |  164 +++
 .../2.1.0-incubating/administration-zk-bk.html     |  314 ++++
 .../administration-zk-bk/index.html                |  314 ++++
 .../2.1.0-incubating/client-libraries-cpp.html     |  238 +++
 .../client-libraries-cpp/index.html                |  238 +++
 .../2.1.0-incubating/client-libraries-go.html      |  513 +++++++
 .../client-libraries-go/index.html                 |  513 +++++++
 .../2.1.0-incubating/client-libraries-java.html    |  455 ++++++
 .../client-libraries-java/index.html               |  455 ++++++
 .../2.1.0-incubating/client-libraries-python.html  |  165 +++
 .../client-libraries-python/index.html             |  165 +++
 .../client-libraries-websocket.html                |  445 ++++++
 .../client-libraries-websocket/index.html          |  445 ++++++
 .../zh-CN/2.1.0-incubating/client-libraries.html   |  168 +++
 .../2.1.0-incubating/client-libraries/index.html   |  168 +++
 .../concepts-architecture-overview.html            |  210 +++
 .../concepts-architecture-overview/index.html      |  210 +++
 .../2.1.0-incubating/concepts-architecture.html    |   79 +
 .../concepts-architecture/index.html               |   79 +
 .../2.1.0-incubating/concepts-authentication.html  |  102 ++
 .../concepts-authentication/index.html             |  102 ++
 .../zh-CN/2.1.0-incubating/concepts-clients.html   |  159 ++
 .../2.1.0-incubating/concepts-clients/index.html   |  159 ++
 .../zh-CN/2.1.0-incubating/concepts-messaging.html |  330 +++++
 .../2.1.0-incubating/concepts-messaging/index.html |  330 +++++
 .../2.1.0-incubating/concepts-multi-tenancy.html   |  125 ++
 .../concepts-multi-tenancy/index.html              |  125 ++
 .../zh-CN/2.1.0-incubating/concepts-overview.html  |  126 ++
 .../2.1.0-incubating/concepts-overview/index.html  |  126 ++
 .../2.1.0-incubating/concepts-replication.html     |  102 ++
 .../concepts-replication/index.html                |  102 ++
 .../2.1.0-incubating/concepts-schema-registry.html |  173 +++
 .../concepts-schema-registry/index.html            |  173 +++
 .../2.1.0-incubating/concepts-tiered-storage.html  |  111 ++
 .../concepts-tiered-storage/index.html             |  111 ++
 .../concepts-topic-compaction.html                 |  128 ++
 .../concepts-topic-compaction/index.html           |  128 ++
 .../2.1.0-incubating/cookbooks-compaction.html     |  195 +++
 .../cookbooks-compaction/index.html                |  195 +++
 .../2.1.0-incubating/cookbooks-deduplication.html  |  190 +++
 .../cookbooks-deduplication/index.html             |  190 +++
 .../2.1.0-incubating/cookbooks-encryption.html     |  252 ++++
 .../cookbooks-encryption/index.html                |  252 ++++
 .../2.1.0-incubating/cookbooks-message-queue.html  |  174 +++
 .../cookbooks-message-queue/index.html             |  174 +++
 .../2.1.0-incubating/cookbooks-non-persistent.html |  139 ++
 .../cookbooks-non-persistent/index.html            |  139 ++
 .../2.1.0-incubating/cookbooks-partitioned.html    |  150 ++
 .../cookbooks-partitioned/index.html               |  150 ++
 .../cookbooks-retention-expiry.html                |  279 ++++
 .../cookbooks-retention-expiry/index.html          |  279 ++++
 .../2.1.0-incubating/cookbooks-tiered-storage.html |  186 +++
 .../cookbooks-tiered-storage/index.html            |  186 +++
 .../docs/zh-CN/2.1.0-incubating/deploy-aws.html    |  250 ++++
 .../zh-CN/2.1.0-incubating/deploy-aws/index.html   |  250 ++++
 .../deploy-bare-metal-multi-cluster.html           |  358 +++++
 .../deploy-bare-metal-multi-cluster/index.html     |  358 +++++
 .../zh-CN/2.1.0-incubating/deploy-bare-metal.html  |  356 +++++
 .../2.1.0-incubating/deploy-bare-metal/index.html  |  356 +++++
 .../docs/zh-CN/2.1.0-incubating/deploy-dcos.html   |  203 +++
 .../zh-CN/2.1.0-incubating/deploy-dcos/index.html  |  203 +++
 .../zh-CN/2.1.0-incubating/deploy-kubernetes.html  |  356 +++++
 .../2.1.0-incubating/deploy-kubernetes/index.html  |  356 +++++
 .../zh-CN/2.1.0-incubating/deploy-monitoring.html  |  145 ++
 .../2.1.0-incubating/deploy-monitoring/index.html  |  145 ++
 .../2.1.0-incubating/develop-binary-protocol.html  |  384 +++++
 .../develop-binary-protocol/index.html             |  384 +++++
 .../docs/zh-CN/2.1.0-incubating/develop-cpp.html   |  171 +++
 .../zh-CN/2.1.0-incubating/develop-cpp/index.html  |  171 +++
 .../2.1.0-incubating/develop-load-manager.html     |  245 ++++
 .../develop-load-manager/index.html                |  245 ++++
 .../zh-CN/2.1.0-incubating/develop-schema.html     |  145 ++
 .../2.1.0-incubating/develop-schema/index.html     |  145 ++
 .../docs/zh-CN/2.1.0-incubating/develop-tools.html |  165 +++
 .../2.1.0-incubating/develop-tools/index.html      |  165 +++
 .../docs/zh-CN/2.1.0-incubating/functions-api.html |  693 +++++++++
 .../2.1.0-incubating/functions-api/index.html      |  693 +++++++++
 .../2.1.0-incubating/functions-deploying.html      |  270 ++++
 .../functions-deploying/index.html                 |  270 ++++
 .../2.1.0-incubating/functions-guarantees.html     |  133 ++
 .../functions-guarantees/index.html                |  133 ++
 .../zh-CN/2.1.0-incubating/functions-metrics.html  |  128 ++
 .../2.1.0-incubating/functions-metrics/index.html  |  128 ++
 .../zh-CN/2.1.0-incubating/functions-overview.html |  452 ++++++
 .../2.1.0-incubating/functions-overview/index.html |  452 ++++++
 .../2.1.0-incubating/functions-quickstart.html     |  296 ++++
 .../functions-quickstart/index.html                |  296 ++++
 .../zh-CN/2.1.0-incubating/functions-state.html    |  175 +++
 .../2.1.0-incubating/functions-state/index.html    |  175 +++
 .../docs/zh-CN/2.1.0-incubating/io-aerospike.html  |   91 ++
 .../zh-CN/2.1.0-incubating/io-aerospike/index.html |   91 ++
 .../docs/zh-CN/2.1.0-incubating/io-cassandra.html  |   90 ++
 .../zh-CN/2.1.0-incubating/io-cassandra/index.html |   90 ++
 .../docs/zh-CN/2.1.0-incubating/io-connectors.html |  111 ++
 .../2.1.0-incubating/io-connectors/index.html      |  111 ++
 .../docs/zh-CN/2.1.0-incubating/io-develop.html    |  216 +++
 .../zh-CN/2.1.0-incubating/io-develop/index.html   |  216 +++
 content/docs/zh-CN/2.1.0-incubating/io-kafka.html  |  109 ++
 .../zh-CN/2.1.0-incubating/io-kafka/index.html     |  109 ++
 .../docs/zh-CN/2.1.0-incubating/io-kinesis.html    |   99 ++
 .../zh-CN/2.1.0-incubating/io-kinesis/index.html   |   99 ++
 .../docs/zh-CN/2.1.0-incubating/io-managing.html   |  194 +++
 .../zh-CN/2.1.0-incubating/io-managing/index.html  |  194 +++
 .../docs/zh-CN/2.1.0-incubating/io-overview.html   |  134 ++
 .../zh-CN/2.1.0-incubating/io-overview/index.html  |  134 ++
 .../docs/zh-CN/2.1.0-incubating/io-quickstart.html |  389 +++++
 .../2.1.0-incubating/io-quickstart/index.html      |  389 +++++
 .../docs/zh-CN/2.1.0-incubating/io-rabbitmq.html   |   87 ++
 .../zh-CN/2.1.0-incubating/io-rabbitmq/index.html  |   87 ++
 .../docs/zh-CN/2.1.0-incubating/io-twitter.html    |   91 ++
 .../zh-CN/2.1.0-incubating/io-twitter/index.html   |   91 ++
 .../docs/zh-CN/2.1.0-incubating/pulsar-2.0.html    |  157 ++
 .../zh-CN/2.1.0-incubating/pulsar-2.0/index.html   |  157 ++
 .../docs/zh-CN/2.1.0-incubating/pulsar-admin.html  | 1405 ++++++++++++++++++
 .../zh-CN/2.1.0-incubating/pulsar-admin/index.html | 1405 ++++++++++++++++++
 .../2.1.0-incubating/reference-cli-tools.html      |  586 ++++++++
 .../reference-cli-tools/index.html                 |  586 ++++++++
 .../2.1.0-incubating/reference-configuration.html  |  524 +++++++
 .../reference-configuration/index.html             |  524 +++++++
 .../2.1.0-incubating/reference-terminology.html    |  169 +++
 .../reference-terminology/index.html               |  169 +++
 .../zh-CN/2.1.0-incubating/security-athenz.html    |  163 +++
 .../2.1.0-incubating/security-athenz/index.html    |  163 +++
 .../2.1.0-incubating/security-authorization.html   |  171 +++
 .../security-authorization/index.html              |  171 +++
 .../2.1.0-incubating/security-encryption.html      |  252 ++++
 .../security-encryption/index.html                 |  252 ++++
 .../zh-CN/2.1.0-incubating/security-extending.html |  261 ++++
 .../2.1.0-incubating/security-extending/index.html |  261 ++++
 .../zh-CN/2.1.0-incubating/security-overview.html  |  121 ++
 .../2.1.0-incubating/security-overview/index.html  |  121 ++
 .../security-tls-authentication.html               |  188 +++
 .../security-tls-authentication/index.html         |  188 +++
 .../2.1.0-incubating/security-tls-transport.html   |  228 +++
 .../security-tls-transport/index.html              |  228 +++
 .../zh-CN/2.1.0-incubating/standalone-docker.html  |  210 +++
 .../2.1.0-incubating/standalone-docker/index.html  |  210 +++
 .../docs/zh-CN/2.1.0-incubating/standalone.html    |  237 +++
 .../zh-CN/2.1.0-incubating/standalone/index.html   |  237 +++
 content/docs/zh-CN/adaptors-kafka.html             |   16 +-
 content/docs/zh-CN/adaptors-kafka/index.html       |   16 +-
 content/docs/zh-CN/adaptors-spark.html             |   12 +-
 content/docs/zh-CN/adaptors-spark/index.html       |   12 +-
 content/docs/zh-CN/adaptors-storm.html             |    8 +-
 content/docs/zh-CN/adaptors-storm/index.html       |    8 +-
 content/docs/zh-CN/admin-api-brokers.html          |    8 +-
 content/docs/zh-CN/admin-api-brokers/index.html    |    8 +-
 content/docs/zh-CN/admin-api-clusters.html         |    8 +-
 content/docs/zh-CN/admin-api-clusters/index.html   |    8 +-
 content/docs/zh-CN/admin-api-namespaces.html       |    8 +-
 content/docs/zh-CN/admin-api-namespaces/index.html |    8 +-
 .../zh-CN/admin-api-non-persistent-topics.html     |    8 +-
 .../admin-api-non-persistent-topics/index.html     |    8 +-
 content/docs/zh-CN/admin-api-overview.html         |   10 +-
 content/docs/zh-CN/admin-api-overview/index.html   |   10 +-
 .../docs/zh-CN/admin-api-partitioned-topics.html   |    8 +-
 .../zh-CN/admin-api-partitioned-topics/index.html  |    8 +-
 content/docs/zh-CN/admin-api-permissions.html      |    8 +-
 .../docs/zh-CN/admin-api-permissions/index.html    |    8 +-
 .../docs/zh-CN/admin-api-persistent-topics.html    |    8 +-
 .../zh-CN/admin-api-persistent-topics/index.html   |    8 +-
 content/docs/zh-CN/admin-api-schemas.html          |    8 +-
 content/docs/zh-CN/admin-api-schemas/index.html    |    8 +-
 content/docs/zh-CN/admin-api-tenants.html          |    8 +-
 content/docs/zh-CN/admin-api-tenants/index.html    |    8 +-
 content/docs/zh-CN/administration-dashboard.html   |    8 +-
 .../docs/zh-CN/administration-dashboard/index.html |    8 +-
 content/docs/zh-CN/administration-geo.html         |    8 +-
 content/docs/zh-CN/administration-geo/index.html   |    8 +-
 .../zh-CN/administration-load-distribution.html    |    8 +-
 .../administration-load-distribution/index.html    |    8 +-
 content/docs/zh-CN/administration-proxy.html       |   10 +-
 content/docs/zh-CN/administration-proxy/index.html |   10 +-
 content/docs/zh-CN/administration-stats.html       |    8 +-
 content/docs/zh-CN/administration-stats/index.html |    8 +-
 content/docs/zh-CN/administration-zk-bk.html       |    8 +-
 content/docs/zh-CN/administration-zk-bk/index.html |    8 +-
 content/docs/zh-CN/client-libraries-cpp.html       |   26 +-
 content/docs/zh-CN/client-libraries-cpp/index.html |   26 +-
 content/docs/zh-CN/client-libraries-go.html        |   10 +-
 content/docs/zh-CN/client-libraries-go/index.html  |   10 +-
 content/docs/zh-CN/client-libraries-java.html      |   20 +-
 .../docs/zh-CN/client-libraries-java/index.html    |   20 +-
 content/docs/zh-CN/client-libraries-python.html    |   15 +-
 .../docs/zh-CN/client-libraries-python/index.html  |   15 +-
 content/docs/zh-CN/client-libraries-websocket.html |    8 +-
 .../zh-CN/client-libraries-websocket/index.html    |    8 +-
 content/docs/zh-CN/client-libraries.html           |   33 +-
 content/docs/zh-CN/client-libraries/index.html     |   33 +-
 .../docs/zh-CN/concepts-architecture-overview.html |   10 +-
 .../concepts-architecture-overview/index.html      |   10 +-
 content/docs/zh-CN/concepts-architecture.html      |    6 +-
 .../docs/zh-CN/concepts-architecture/index.html    |    6 +-
 content/docs/zh-CN/concepts-authentication.html    |    8 +-
 .../docs/zh-CN/concepts-authentication/index.html  |    8 +-
 content/docs/zh-CN/concepts-clients.html           |   10 +-
 content/docs/zh-CN/concepts-clients/index.html     |   10 +-
 content/docs/zh-CN/concepts-messaging.html         |   10 +-
 content/docs/zh-CN/concepts-messaging/index.html   |   10 +-
 content/docs/zh-CN/concepts-multi-tenancy.html     |   10 +-
 .../docs/zh-CN/concepts-multi-tenancy/index.html   |   10 +-
 content/docs/zh-CN/concepts-overview.html          |   10 +-
 content/docs/zh-CN/concepts-overview/index.html    |   10 +-
 content/docs/zh-CN/concepts-replication.html       |   10 +-
 content/docs/zh-CN/concepts-replication/index.html |   10 +-
 content/docs/zh-CN/concepts-schema-registry.html   |   10 +-
 .../docs/zh-CN/concepts-schema-registry/index.html |   10 +-
 content/docs/zh-CN/concepts-tiered-storage.html    |    8 +-
 .../docs/zh-CN/concepts-tiered-storage/index.html  |    8 +-
 content/docs/zh-CN/concepts-topic-compaction.html  |   10 +-
 .../zh-CN/concepts-topic-compaction/index.html     |   10 +-
 content/docs/zh-CN/cookbooks-compaction.html       |    8 +-
 content/docs/zh-CN/cookbooks-compaction/index.html |    8 +-
 content/docs/zh-CN/cookbooks-deduplication.html    |    8 +-
 .../docs/zh-CN/cookbooks-deduplication/index.html  |    8 +-
 content/docs/zh-CN/cookbooks-encryption.html       |    8 +-
 content/docs/zh-CN/cookbooks-encryption/index.html |    8 +-
 content/docs/zh-CN/cookbooks-message-queue.html    |    8 +-
 .../docs/zh-CN/cookbooks-message-queue/index.html  |    8 +-
 content/docs/zh-CN/cookbooks-non-persistent.html   |    8 +-
 .../docs/zh-CN/cookbooks-non-persistent/index.html |    8 +-
 content/docs/zh-CN/cookbooks-partitioned.html      |    8 +-
 .../docs/zh-CN/cookbooks-partitioned/index.html    |    8 +-
 content/docs/zh-CN/cookbooks-retention-expiry.html |    8 +-
 .../zh-CN/cookbooks-retention-expiry/index.html    |    8 +-
 content/docs/zh-CN/cookbooks-tiered-storage.html   |   85 +-
 .../docs/zh-CN/cookbooks-tiered-storage/index.html |   85 +-
 content/docs/zh-CN/deploy-aws.html                 |    8 +-
 content/docs/zh-CN/deploy-aws/index.html           |    8 +-
 .../zh-CN/deploy-bare-metal-multi-cluster.html     |   16 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   16 +-
 content/docs/zh-CN/deploy-bare-metal.html          |   42 +-
 content/docs/zh-CN/deploy-bare-metal/index.html    |   42 +-
 content/docs/zh-CN/deploy-dcos.html                |    8 +-
 content/docs/zh-CN/deploy-dcos/index.html          |    8 +-
 content/docs/zh-CN/deploy-kubernetes.html          |    8 +-
 content/docs/zh-CN/deploy-kubernetes/index.html    |    8 +-
 content/docs/zh-CN/deploy-monitoring.html          |    8 +-
 content/docs/zh-CN/deploy-monitoring/index.html    |    8 +-
 content/docs/zh-CN/develop-binary-protocol.html    |    8 +-
 .../docs/zh-CN/develop-binary-protocol/index.html  |    8 +-
 content/docs/zh-CN/develop-cpp.html                |    8 +-
 content/docs/zh-CN/develop-cpp/index.html          |    8 +-
 content/docs/zh-CN/develop-load-manager.html       |    8 +-
 content/docs/zh-CN/develop-load-manager/index.html |    8 +-
 content/docs/zh-CN/develop-schema.html             |   10 +-
 content/docs/zh-CN/develop-schema/index.html       |   10 +-
 content/docs/zh-CN/develop-tools.html              |    8 +-
 content/docs/zh-CN/develop-tools/index.html        |    8 +-
 content/docs/zh-CN/functions-api.html              |   79 +-
 content/docs/zh-CN/functions-api/index.html        |   79 +-
 content/docs/zh-CN/functions-deploying.html        |   28 +-
 content/docs/zh-CN/functions-deploying/index.html  |   28 +-
 content/docs/zh-CN/functions-guarantees.html       |   12 +-
 content/docs/zh-CN/functions-guarantees/index.html |   12 +-
 content/docs/zh-CN/functions-metrics.html          |    8 +-
 content/docs/zh-CN/functions-metrics/index.html    |    8 +-
 content/docs/zh-CN/functions-overview.html         |   32 +-
 content/docs/zh-CN/functions-overview/index.html   |   32 +-
 content/docs/zh-CN/functions-quickstart.html       |   24 +-
 content/docs/zh-CN/functions-quickstart/index.html |   24 +-
 content/docs/zh-CN/functions-state.html            |    8 +-
 content/docs/zh-CN/functions-state/index.html      |    8 +-
 content/docs/zh-CN/io-aerospike.html               |    6 +-
 content/docs/zh-CN/io-aerospike/index.html         |    6 +-
 content/docs/zh-CN/io-cassandra.html               |    6 +-
 content/docs/zh-CN/io-cassandra/index.html         |    6 +-
 content/docs/zh-CN/io-connectors.html              |    8 +-
 content/docs/zh-CN/io-connectors/index.html        |    8 +-
 content/docs/zh-CN/io-develop.html                 |    8 +-
 content/docs/zh-CN/io-develop/index.html           |    8 +-
 content/docs/zh-CN/io-kafka.html                   |    6 +-
 content/docs/zh-CN/io-kafka/index.html             |    6 +-
 content/docs/zh-CN/io-kinesis.html                 |    6 +-
 content/docs/zh-CN/io-kinesis/index.html           |    6 +-
 content/docs/zh-CN/io-managing.html                |   28 +-
 content/docs/zh-CN/io-managing/index.html          |   28 +-
 content/docs/zh-CN/io-overview.html                |    8 +-
 content/docs/zh-CN/io-overview/index.html          |    8 +-
 content/docs/zh-CN/io-quickstart.html              |   40 +-
 content/docs/zh-CN/io-quickstart/index.html        |   40 +-
 content/docs/zh-CN/io-rabbitmq.html                |    6 +-
 content/docs/zh-CN/io-rabbitmq/index.html          |    6 +-
 content/docs/zh-CN/io-twitter.html                 |    6 +-
 content/docs/zh-CN/io-twitter/index.html           |    6 +-
 content/docs/zh-CN/next/adaptors-kafka.html        |    6 +-
 content/docs/zh-CN/next/adaptors-kafka/index.html  |    6 +-
 content/docs/zh-CN/next/adaptors-spark.html        |    6 +-
 content/docs/zh-CN/next/adaptors-spark/index.html  |    6 +-
 content/docs/zh-CN/next/adaptors-storm.html        |    2 +-
 content/docs/zh-CN/next/adaptors-storm/index.html  |    2 +-
 content/docs/zh-CN/next/admin-api-brokers.html     |    2 +-
 .../docs/zh-CN/next/admin-api-brokers/index.html   |    2 +-
 content/docs/zh-CN/next/admin-api-clusters.html    |    2 +-
 .../docs/zh-CN/next/admin-api-clusters/index.html  |    2 +-
 content/docs/zh-CN/next/admin-api-namespaces.html  |    2 +-
 .../zh-CN/next/admin-api-namespaces/index.html     |    2 +-
 .../next/admin-api-non-persistent-topics.html      |    2 +-
 .../admin-api-non-persistent-topics/index.html     |    2 +-
 content/docs/zh-CN/next/admin-api-overview.html    |    2 +-
 .../docs/zh-CN/next/admin-api-overview/index.html  |    2 +-
 .../zh-CN/next/admin-api-partitioned-topics.html   |    2 +-
 .../next/admin-api-partitioned-topics/index.html   |    2 +-
 content/docs/zh-CN/next/admin-api-permissions.html |    2 +-
 .../zh-CN/next/admin-api-permissions/index.html    |    2 +-
 .../zh-CN/next/admin-api-persistent-topics.html    |    2 +-
 .../next/admin-api-persistent-topics/index.html    |    2 +-
 content/docs/zh-CN/next/admin-api-schemas.html     |    2 +-
 .../docs/zh-CN/next/admin-api-schemas/index.html   |    2 +-
 content/docs/zh-CN/next/admin-api-tenants.html     |    2 +-
 .../docs/zh-CN/next/admin-api-tenants/index.html   |    2 +-
 .../docs/zh-CN/next/administration-dashboard.html  |    2 +-
 .../zh-CN/next/administration-dashboard/index.html |    2 +-
 content/docs/zh-CN/next/administration-geo.html    |    2 +-
 .../docs/zh-CN/next/administration-geo/index.html  |    2 +-
 .../next/administration-load-distribution.html     |    2 +-
 .../administration-load-distribution/index.html    |    2 +-
 content/docs/zh-CN/next/administration-proxy.html  |    2 +-
 .../zh-CN/next/administration-proxy/index.html     |    2 +-
 content/docs/zh-CN/next/administration-stats.html  |    2 +-
 .../zh-CN/next/administration-stats/index.html     |    2 +-
 content/docs/zh-CN/next/administration-zk-bk.html  |    2 +-
 .../zh-CN/next/administration-zk-bk/index.html     |    2 +-
 content/docs/zh-CN/next/client-libraries-cpp.html  |   12 +-
 .../zh-CN/next/client-libraries-cpp/index.html     |   12 +-
 content/docs/zh-CN/next/client-libraries-go.html   |    4 +-
 .../docs/zh-CN/next/client-libraries-go/index.html |    4 +-
 content/docs/zh-CN/next/client-libraries-java.html |   16 +-
 .../zh-CN/next/client-libraries-java/index.html    |   16 +-
 .../docs/zh-CN/next/client-libraries-python.html   |    4 +-
 .../zh-CN/next/client-libraries-python/index.html  |    4 +-
 .../zh-CN/next/client-libraries-websocket.html     |    2 +-
 .../next/client-libraries-websocket/index.html     |    2 +-
 content/docs/zh-CN/next/client-libraries.html      |    2 +-
 .../docs/zh-CN/next/client-libraries/index.html    |    2 +-
 .../zh-CN/next/concepts-architecture-overview.html |    2 +-
 .../next/concepts-architecture-overview/index.html |    2 +-
 .../docs/zh-CN/next/concepts-authentication.html   |    2 +-
 .../zh-CN/next/concepts-authentication/index.html  |    2 +-
 content/docs/zh-CN/next/concepts-clients.html      |    2 +-
 .../docs/zh-CN/next/concepts-clients/index.html    |    2 +-
 content/docs/zh-CN/next/concepts-messaging.html    |    2 +-
 .../docs/zh-CN/next/concepts-messaging/index.html  |    2 +-
 .../docs/zh-CN/next/concepts-multi-tenancy.html    |    2 +-
 .../zh-CN/next/concepts-multi-tenancy/index.html   |    2 +-
 content/docs/zh-CN/next/concepts-overview.html     |    2 +-
 .../docs/zh-CN/next/concepts-overview/index.html   |    2 +-
 content/docs/zh-CN/next/concepts-replication.html  |    2 +-
 .../zh-CN/next/concepts-replication/index.html     |    2 +-
 .../docs/zh-CN/next/concepts-schema-registry.html  |    2 +-
 .../zh-CN/next/concepts-schema-registry/index.html |    2 +-
 .../docs/zh-CN/next/concepts-tiered-storage.html   |    2 +-
 .../zh-CN/next/concepts-tiered-storage/index.html  |    2 +-
 .../docs/zh-CN/next/concepts-topic-compaction.html |    2 +-
 .../next/concepts-topic-compaction/index.html      |    2 +-
 content/docs/zh-CN/next/cookbooks-compaction.html  |    2 +-
 .../zh-CN/next/cookbooks-compaction/index.html     |    2 +-
 .../docs/zh-CN/next/cookbooks-deduplication.html   |    2 +-
 .../zh-CN/next/cookbooks-deduplication/index.html  |    2 +-
 content/docs/zh-CN/next/cookbooks-encryption.html  |    2 +-
 .../zh-CN/next/cookbooks-encryption/index.html     |    2 +-
 .../docs/zh-CN/next/cookbooks-message-queue.html   |    2 +-
 .../zh-CN/next/cookbooks-message-queue/index.html  |    2 +-
 .../docs/zh-CN/next/cookbooks-non-persistent.html  |    2 +-
 .../zh-CN/next/cookbooks-non-persistent/index.html |    2 +-
 content/docs/zh-CN/next/cookbooks-partitioned.html |    2 +-
 .../zh-CN/next/cookbooks-partitioned/index.html    |    2 +-
 .../zh-CN/next/cookbooks-retention-expiry.html     |    2 +-
 .../next/cookbooks-retention-expiry/index.html     |    2 +-
 .../docs/zh-CN/next/cookbooks-tiered-storage.html  |    2 +-
 .../zh-CN/next/cookbooks-tiered-storage/index.html |    2 +-
 content/docs/zh-CN/next/deploy-aws.html            |    4 +-
 content/docs/zh-CN/next/deploy-aws/index.html      |    4 +-
 .../next/deploy-bare-metal-multi-cluster.html      |   10 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   10 +-
 content/docs/zh-CN/next/deploy-bare-metal.html     |   32 +-
 .../docs/zh-CN/next/deploy-bare-metal/index.html   |   32 +-
 content/docs/zh-CN/next/deploy-dcos.html           |    2 +-
 content/docs/zh-CN/next/deploy-dcos/index.html     |    2 +-
 content/docs/zh-CN/next/deploy-kubernetes.html     |    2 +-
 .../docs/zh-CN/next/deploy-kubernetes/index.html   |    2 +-
 content/docs/zh-CN/next/deploy-monitoring.html     |    2 +-
 .../docs/zh-CN/next/deploy-monitoring/index.html   |    2 +-
 .../docs/zh-CN/next/develop-binary-protocol.html   |    2 +-
 .../zh-CN/next/develop-binary-protocol/index.html  |    2 +-
 content/docs/zh-CN/next/develop-cpp.html           |    2 +-
 content/docs/zh-CN/next/develop-cpp/index.html     |    2 +-
 content/docs/zh-CN/next/develop-load-manager.html  |    2 +-
 .../zh-CN/next/develop-load-manager/index.html     |    2 +-
 content/docs/zh-CN/next/develop-schema.html        |    2 +-
 content/docs/zh-CN/next/develop-schema/index.html  |    2 +-
 content/docs/zh-CN/next/develop-tools.html         |    2 +-
 content/docs/zh-CN/next/develop-tools/index.html   |    2 +-
 content/docs/zh-CN/next/functions-api.html         |    2 +-
 content/docs/zh-CN/next/functions-api/index.html   |    2 +-
 content/docs/zh-CN/next/functions-deploying.html   |    2 +-
 .../docs/zh-CN/next/functions-deploying/index.html |    2 +-
 content/docs/zh-CN/next/functions-guarantees.html  |    2 +-
 .../zh-CN/next/functions-guarantees/index.html     |    2 +-
 content/docs/zh-CN/next/functions-metrics.html     |    2 +-
 .../docs/zh-CN/next/functions-metrics/index.html   |    2 +-
 content/docs/zh-CN/next/functions-overview.html    |    2 +-
 .../docs/zh-CN/next/functions-overview/index.html  |    2 +-
 content/docs/zh-CN/next/functions-quickstart.html  |    8 +-
 .../zh-CN/next/functions-quickstart/index.html     |    8 +-
 content/docs/zh-CN/next/functions-state.html       |    2 +-
 content/docs/zh-CN/next/functions-state/index.html |    2 +-
 content/docs/zh-CN/next/io-connectors.html         |    2 +-
 content/docs/zh-CN/next/io-connectors/index.html   |    2 +-
 content/docs/zh-CN/next/io-develop.html            |    4 +-
 content/docs/zh-CN/next/io-develop/index.html      |    4 +-
 content/docs/zh-CN/next/io-managing.html           |    2 +-
 content/docs/zh-CN/next/io-managing/index.html     |    2 +-
 content/docs/zh-CN/next/io-overview.html           |    2 +-
 content/docs/zh-CN/next/io-overview/index.html     |    2 +-
 content/docs/zh-CN/next/io-quickstart.html         |   34 +-
 content/docs/zh-CN/next/io-quickstart/index.html   |   34 +-
 content/docs/zh-CN/next/pulsar-2.0.html            |    2 +-
 content/docs/zh-CN/next/pulsar-2.0/index.html      |    2 +-
 content/docs/zh-CN/next/pulsar-admin.html          |    2 +-
 content/docs/zh-CN/next/pulsar-admin/index.html    |    2 +-
 content/docs/zh-CN/next/reference-cli-tools.html   |    2 +-
 .../docs/zh-CN/next/reference-cli-tools/index.html |    2 +-
 .../docs/zh-CN/next/reference-configuration.html   |    2 +-
 .../zh-CN/next/reference-configuration/index.html  |    2 +-
 content/docs/zh-CN/next/reference-terminology.html |    2 +-
 .../zh-CN/next/reference-terminology/index.html    |    2 +-
 content/docs/zh-CN/next/security-athenz.html       |    2 +-
 content/docs/zh-CN/next/security-athenz/index.html |    2 +-
 .../docs/zh-CN/next/security-authorization.html    |    2 +-
 .../zh-CN/next/security-authorization/index.html   |    2 +-
 content/docs/zh-CN/next/security-encryption.html   |    2 +-
 .../docs/zh-CN/next/security-encryption/index.html |    2 +-
 content/docs/zh-CN/next/security-extending.html    |    2 +-
 .../docs/zh-CN/next/security-extending/index.html  |    2 +-
 content/docs/zh-CN/next/security-overview.html     |    2 +-
 .../docs/zh-CN/next/security-overview/index.html   |    2 +-
 .../zh-CN/next/security-tls-authentication.html    |    2 +-
 .../next/security-tls-authentication/index.html    |    2 +-
 .../docs/zh-CN/next/security-tls-transport.html    |    2 +-
 .../zh-CN/next/security-tls-transport/index.html   |    2 +-
 content/docs/zh-CN/next/standalone-docker.html     |    4 +-
 .../docs/zh-CN/next/standalone-docker/index.html   |    4 +-
 content/docs/zh-CN/next/standalone.html            |   32 +-
 content/docs/zh-CN/next/standalone/index.html      |   32 +-
 content/docs/zh-CN/pulsar-2.0.html                 |    8 +-
 content/docs/zh-CN/pulsar-2.0/index.html           |    8 +-
 content/docs/zh-CN/pulsar-admin.html               |  281 +++-
 content/docs/zh-CN/pulsar-admin/index.html         |  281 +++-
 content/docs/zh-CN/reference-cli-tools.html        |    8 +-
 content/docs/zh-CN/reference-cli-tools/index.html  |    8 +-
 content/docs/zh-CN/reference-configuration.html    |   16 +-
 .../docs/zh-CN/reference-configuration/index.html  |   16 +-
 content/docs/zh-CN/reference-terminology.html      |   10 +-
 .../docs/zh-CN/reference-terminology/index.html    |   10 +-
 content/docs/zh-CN/security-athenz.html            |    8 +-
 content/docs/zh-CN/security-athenz/index.html      |    8 +-
 content/docs/zh-CN/security-authorization.html     |    8 +-
 .../docs/zh-CN/security-authorization/index.html   |    8 +-
 content/docs/zh-CN/security-encryption.html        |    8 +-
 content/docs/zh-CN/security-encryption/index.html  |    8 +-
 content/docs/zh-CN/security-extending.html         |    8 +-
 content/docs/zh-CN/security-extending/index.html   |    8 +-
 content/docs/zh-CN/security-overview.html          |   10 +-
 content/docs/zh-CN/security-overview/index.html    |   10 +-
 .../docs/zh-CN/security-tls-authentication.html    |   10 +-
 .../zh-CN/security-tls-authentication/index.html   |   10 +-
 content/docs/zh-CN/security-tls-transport.html     |   10 +-
 .../docs/zh-CN/security-tls-transport/index.html   |   10 +-
 .../docs/zh-CN/sql-deployment-configurations.html  |  175 +++
 .../zh-CN/sql-deployment-configurations/index.html |  175 +++
 content/docs/zh-CN/sql-getting-started.html        |  189 +++
 content/docs/zh-CN/sql-getting-started/index.html  |  189 +++
 content/docs/zh-CN/sql-overview.html               |   82 ++
 content/docs/zh-CN/sql-overview/index.html         |   82 ++
 content/docs/zh-CN/standalone-docker.html          |   12 +-
 content/docs/zh-CN/standalone-docker/index.html    |   12 +-
 content/docs/zh-CN/standalone.html                 |   51 +-
 content/docs/zh-CN/standalone/index.html           |   51 +-
 content/download.html                              |    8 +-
 content/download/index.html                        |    8 +-
 content/en/admin-rest-api.html                     |    4 +-
 content/en/admin-rest-api/index.html               |    4 +-
 content/en/contact.html                            |    4 +-
 content/en/contact/index.html                      |    4 +-
 content/en/contributing.html                       |    4 +-
 content/en/contributing/index.html                 |    4 +-
 content/en/download.html                           |    8 +-
 content/en/download/index.html                     |    8 +-
 content/en/events.html                             |    4 +-
 content/en/events/index.html                       |    4 +-
 content/en/index.html                              |    4 +-
 content/en/release-notes.html                      |   18 +-
 content/en/release-notes/index.html                |   18 +-
 content/en/resources.html                          |    4 +-
 content/en/resources/index.html                    |    4 +-
 content/en/team.html                               |    4 +-
 content/en/team/index.html                         |    4 +-
 content/en/versions.html                           |    6 +-
 content/en/versions/index.html                     |    6 +-
 content/events.html                                |    4 +-
 content/events/index.html                          |    4 +-
 content/fr/admin-rest-api.html                     |    4 +-
 content/fr/admin-rest-api/index.html               |    4 +-
 content/fr/contact.html                            |    4 +-
 content/fr/contact/index.html                      |    4 +-
 content/fr/contributing.html                       |    4 +-
 content/fr/contributing/index.html                 |    4 +-
 content/fr/download.html                           |    8 +-
 content/fr/download/index.html                     |    8 +-
 content/fr/events.html                             |    4 +-
 content/fr/events/index.html                       |    4 +-
 content/fr/index.html                              |    4 +-
 content/fr/release-notes.html                      |   18 +-
 content/fr/release-notes/index.html                |   18 +-
 content/fr/resources.html                          |    4 +-
 content/fr/resources/index.html                    |    4 +-
 content/fr/team.html                               |    4 +-
 content/fr/team/index.html                         |    4 +-
 content/fr/versions.html                           |    6 +-
 content/fr/versions/index.html                     |    6 +-
 content/index.html                                 |    4 +-
 content/ja/admin-rest-api.html                     |    4 +-
 content/ja/admin-rest-api/index.html               |    4 +-
 content/ja/contact.html                            |    4 +-
 content/ja/contact/index.html                      |    4 +-
 content/ja/contributing.html                       |    4 +-
 content/ja/contributing/index.html                 |    4 +-
 content/ja/download.html                           |    8 +-
 content/ja/download/index.html                     |    8 +-
 content/ja/events.html                             |    4 +-
 content/ja/events/index.html                       |    4 +-
 content/ja/index.html                              |    4 +-
 content/ja/release-notes.html                      |   18 +-
 content/ja/release-notes/index.html                |   18 +-
 content/ja/resources.html                          |    4 +-
 content/ja/resources/index.html                    |    4 +-
 content/ja/team.html                               |    4 +-
 content/ja/team/index.html                         |    4 +-
 content/ja/versions.html                           |    6 +-
 content/ja/versions/index.html                     |    6 +-
 content/release-notes.html                         |   18 +-
 content/release-notes/index.html                   |   18 +-
 content/resources.html                             |    4 +-
 content/resources/index.html                       |    4 +-
 content/sitemap.xml                                |   93 +-
 content/swagger/swagger.json                       |   48 +-
 content/team.html                                  |    4 +-
 content/team/index.html                            |    4 +-
 content/versions.html                              |    6 +-
 content/versions/index.html                        |    6 +-
 content/zh-CN/admin-rest-api.html                  |    4 +-
 content/zh-CN/admin-rest-api/index.html            |    4 +-
 content/zh-CN/contact.html                         |    4 +-
 content/zh-CN/contact/index.html                   |    4 +-
 content/zh-CN/contributing.html                    |    4 +-
 content/zh-CN/contributing/index.html              |    4 +-
 content/zh-CN/download.html                        |    8 +-
 content/zh-CN/download/index.html                  |    8 +-
 content/zh-CN/events.html                          |    4 +-
 content/zh-CN/events/index.html                    |    4 +-
 content/zh-CN/index.html                           |    4 +-
 content/zh-CN/release-notes.html                   |   18 +-
 content/zh-CN/release-notes/index.html             |   18 +-
 content/zh-CN/resources.html                       |    4 +-
 content/zh-CN/resources/index.html                 |    4 +-
 content/zh-CN/team.html                            |    4 +-
 content/zh-CN/team/index.html                      |    4 +-
 content/zh-CN/versions.html                        |    6 +-
 content/zh-CN/versions/index.html                  |    6 +-
 2336 files changed, 181734 insertions(+), 6091 deletions(-)

diff --git a/content/admin-rest-api.html b/content/admin-rest-api.html
index 7ec293b..8a94c26 100644
--- a/content/admin-rest-api.html
+++ b/content/admin-rest-api.html
@@ -6,7 +6,7 @@
 
               ga('create', 'UA-102219959-1', 'auto');
               ga('send', 'pageview');
-            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -69,6 +69,6 @@
                 apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
                 indexName: 'apache_pulsar',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.1-incubating"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/content/admin-rest-api/index.html b/content/admin-rest-api/index.html
index 7ec293b..8a94c26 100644
--- a/content/admin-rest-api/index.html
+++ b/content/admin-rest-api/index.html
@@ -6,7 +6,7 @@
 
               ga('create', 'UA-102219959-1', 'auto');
               ga('send', 'pageview');
-            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -69,6 +69,6 @@
                 apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
                 indexName: 'apache_pulsar',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.1-incubating"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/content/blog/2018/08/06/Apache-Pulsar-2-1-0.html b/content/blog/2018/08/06/Apache-Pulsar-2-1-0.html
index 9a3ac61..cb1120d 100644
--- a/content/blog/2018/08/06/Apache-Pulsar-2-1-0.html
+++ b/content/blog/2018/08/06/Apache-Pulsar-2-1-0.html
@@ -6,7 +6,7 @@
 
               ga('create', 'UA-102219959-1', 'auto');
               ga('send', 'pageview');
-            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -157,6 +157,6 @@ support for <a href="https://avro.apache.org/">Avro</a> and <a href="https://dev
                 apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
                 indexName: 'apache_pulsar',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.1-incubating"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/content/blog/2018/08/06/Apache-Pulsar-2-1-0/index.html b/content/blog/2018/08/06/Apache-Pulsar-2-1-0/index.html
index 9a3ac61..cb1120d 100644
--- a/content/blog/2018/08/06/Apache-Pulsar-2-1-0/index.html
+++ b/content/blog/2018/08/06/Apache-Pulsar-2-1-0/index.html
@@ -6,7 +6,7 @@
 
               ga('create', 'UA-102219959-1', 'auto');
               ga('send', 'pageview');
-            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -157,6 +157,6 @@ support for <a href="https://avro.apache.org/">Avro</a> and <a href="https://dev
                 apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
                 indexName: 'apache_pulsar',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.1-incubating"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/content/blog/index.html b/content/blog/index.html
index 63385c0..20305d5 100644
--- a/content/blog/index.html
+++ b/content/blog/index.html
@@ -6,7 +6,7 @@
 
               ga('create', 'UA-102219959-1', 'auto');
               ga('send', 'pageview');
-            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="blog"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header [...]
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="blog"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -109,6 +109,6 @@ and <a href="https://github.com/apache/incubator-pulsar/blob/v2.1.0-incubating/p
                 apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
                 indexName: 'apache_pulsar',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.1-incubating"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/content/contact.html b/content/contact.html
index 66e68ab..5009385 100644
--- a/content/contact.html
+++ b/content/contact.html
@@ -6,7 +6,7 @@
 
               ga('create', 'UA-102219959-1', 'auto');
               ga('send', 'pageview');
-            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -69,6 +69,6 @@
                 apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
                 indexName: 'apache_pulsar',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.1-incubating"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/content/contact/index.html b/content/contact/index.html
index 66e68ab..5009385 100644
--- a/content/contact/index.html
+++ b/content/contact/index.html
@@ -6,7 +6,7 @@
 
               ga('create', 'UA-102219959-1', 'auto');
               ga('send', 'pageview');
-            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -69,6 +69,6 @@
                 apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
                 indexName: 'apache_pulsar',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.1-incubating"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/content/contributing.html b/content/contributing.html
index 685341a..bdba6ef 100644
--- a/content/contributing.html
+++ b/content/contributing.html
@@ -6,7 +6,7 @@
 
               ga('create', 'UA-102219959-1', 'auto');
               ga('send', 'pageview');
-            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -310,6 +310,6 @@ for a more detailed explanation of the duties and roles of the PMC.</p>
                 apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
                 indexName: 'apache_pulsar',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.1-incubating"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/content/contributing/index.html b/content/contributing/index.html
index 685341a..bdba6ef 100644
--- a/content/contributing/index.html
+++ b/content/contributing/index.html
@@ -6,7 +6,7 @@
 
               ga('create', 'UA-102219959-1', 'auto');
               ga('send', 'pageview');
-            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -310,6 +310,6 @@ for a more detailed explanation of the duties and roles of the PMC.</p>
                 apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
                 indexName: 'apache_pulsar',
                 inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.1-incubating"]}
               });
             </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/adaptors-kafka.html b/content/docs/2.1.0-incubating/adaptors-kafka.html
new file mode 100644
index 0000000..4f41a2f
--- /dev/null
+++ b/content/docs/2.1.0-incubating/adaptors-kafka.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/adaptors-kafka";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/adaptors-kafka/index.html b/content/docs/2.1.0-incubating/adaptors-kafka/index.html
new file mode 100644
index 0000000..4f41a2f
--- /dev/null
+++ b/content/docs/2.1.0-incubating/adaptors-kafka/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/adaptors-kafka";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/adaptors-spark.html b/content/docs/2.1.0-incubating/adaptors-spark.html
new file mode 100644
index 0000000..f8b3efe
--- /dev/null
+++ b/content/docs/2.1.0-incubating/adaptors-spark.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/adaptors-spark";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/adaptors-spark/index.html b/content/docs/2.1.0-incubating/adaptors-spark/index.html
new file mode 100644
index 0000000..f8b3efe
--- /dev/null
+++ b/content/docs/2.1.0-incubating/adaptors-spark/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/adaptors-spark";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/adaptors-storm.html b/content/docs/2.1.0-incubating/adaptors-storm.html
new file mode 100644
index 0000000..abf8a75
--- /dev/null
+++ b/content/docs/2.1.0-incubating/adaptors-storm.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/adaptors-storm";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/adaptors-storm/index.html b/content/docs/2.1.0-incubating/adaptors-storm/index.html
new file mode 100644
index 0000000..abf8a75
--- /dev/null
+++ b/content/docs/2.1.0-incubating/adaptors-storm/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/adaptors-storm";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-brokers.html b/content/docs/2.1.0-incubating/admin-api-brokers.html
new file mode 100644
index 0000000..bee3157
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-brokers.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-brokers";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-brokers/index.html b/content/docs/2.1.0-incubating/admin-api-brokers/index.html
new file mode 100644
index 0000000..bee3157
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-brokers/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-brokers";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-clusters.html b/content/docs/2.1.0-incubating/admin-api-clusters.html
new file mode 100644
index 0000000..07fe235
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-clusters.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-clusters";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-clusters/index.html b/content/docs/2.1.0-incubating/admin-api-clusters/index.html
new file mode 100644
index 0000000..07fe235
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-clusters/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-clusters";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-namespaces.html b/content/docs/2.1.0-incubating/admin-api-namespaces.html
new file mode 100644
index 0000000..2ede717
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-namespaces.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-namespaces";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-namespaces/index.html b/content/docs/2.1.0-incubating/admin-api-namespaces/index.html
new file mode 100644
index 0000000..2ede717
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-namespaces/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-namespaces";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-non-persistent-topics.html b/content/docs/2.1.0-incubating/admin-api-non-persistent-topics.html
new file mode 100644
index 0000000..8c905ff
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-non-persistent-topics.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-non-persistent-topics";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-non-persistent-topics/index.html b/content/docs/2.1.0-incubating/admin-api-non-persistent-topics/index.html
new file mode 100644
index 0000000..8c905ff
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-non-persistent-topics/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-non-persistent-topics";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-overview.html b/content/docs/2.1.0-incubating/admin-api-overview.html
new file mode 100644
index 0000000..6c6a280
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-overview.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-overview/index.html b/content/docs/2.1.0-incubating/admin-api-overview/index.html
new file mode 100644
index 0000000..6c6a280
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-overview/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-partitioned-topics.html b/content/docs/2.1.0-incubating/admin-api-partitioned-topics.html
new file mode 100644
index 0000000..2569b81
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-partitioned-topics.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-partitioned-topics";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-partitioned-topics/index.html b/content/docs/2.1.0-incubating/admin-api-partitioned-topics/index.html
new file mode 100644
index 0000000..2569b81
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-partitioned-topics/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-partitioned-topics";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-permissions.html b/content/docs/2.1.0-incubating/admin-api-permissions.html
new file mode 100644
index 0000000..ad9cee7
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-permissions.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-permissions";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-permissions/index.html b/content/docs/2.1.0-incubating/admin-api-permissions/index.html
new file mode 100644
index 0000000..ad9cee7
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-permissions/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-permissions";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-persistent-topics.html b/content/docs/2.1.0-incubating/admin-api-persistent-topics.html
new file mode 100644
index 0000000..a37432a
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-persistent-topics.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-persistent-topics";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-persistent-topics/index.html b/content/docs/2.1.0-incubating/admin-api-persistent-topics/index.html
new file mode 100644
index 0000000..a37432a
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-persistent-topics/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-persistent-topics";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-schemas.html b/content/docs/2.1.0-incubating/admin-api-schemas.html
new file mode 100644
index 0000000..1d8fb4d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-schemas.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-schemas";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-schemas/index.html b/content/docs/2.1.0-incubating/admin-api-schemas/index.html
new file mode 100644
index 0000000..1d8fb4d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-schemas/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-schemas";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-tenants.html b/content/docs/2.1.0-incubating/admin-api-tenants.html
new file mode 100644
index 0000000..432ba27
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-tenants.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-tenants";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/admin-api-tenants/index.html b/content/docs/2.1.0-incubating/admin-api-tenants/index.html
new file mode 100644
index 0000000..432ba27
--- /dev/null
+++ b/content/docs/2.1.0-incubating/admin-api-tenants/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/admin-api-tenants";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-dashboard.html b/content/docs/2.1.0-incubating/administration-dashboard.html
new file mode 100644
index 0000000..e6c2cca
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-dashboard.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-dashboard";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-dashboard/index.html b/content/docs/2.1.0-incubating/administration-dashboard/index.html
new file mode 100644
index 0000000..e6c2cca
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-dashboard/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-dashboard";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-geo.html b/content/docs/2.1.0-incubating/administration-geo.html
new file mode 100644
index 0000000..7a2d507
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-geo.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-geo";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-geo/index.html b/content/docs/2.1.0-incubating/administration-geo/index.html
new file mode 100644
index 0000000..7a2d507
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-geo/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-geo";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-load-distribution.html b/content/docs/2.1.0-incubating/administration-load-distribution.html
new file mode 100644
index 0000000..4b44b1b
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-load-distribution.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-load-distribution";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-load-distribution/index.html b/content/docs/2.1.0-incubating/administration-load-distribution/index.html
new file mode 100644
index 0000000..4b44b1b
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-load-distribution/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-load-distribution";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-proxy.html b/content/docs/2.1.0-incubating/administration-proxy.html
new file mode 100644
index 0000000..9a3e2a5
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-proxy.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-proxy";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-proxy/index.html b/content/docs/2.1.0-incubating/administration-proxy/index.html
new file mode 100644
index 0000000..9a3e2a5
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-proxy/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-proxy";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-stats.html b/content/docs/2.1.0-incubating/administration-stats.html
new file mode 100644
index 0000000..d0a90fe
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-stats.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-stats";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-stats/index.html b/content/docs/2.1.0-incubating/administration-stats/index.html
new file mode 100644
index 0000000..d0a90fe
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-stats/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-stats";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-zk-bk.html b/content/docs/2.1.0-incubating/administration-zk-bk.html
new file mode 100644
index 0000000..70831b6
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-zk-bk.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-zk-bk";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/administration-zk-bk/index.html b/content/docs/2.1.0-incubating/administration-zk-bk/index.html
new file mode 100644
index 0000000..70831b6
--- /dev/null
+++ b/content/docs/2.1.0-incubating/administration-zk-bk/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/administration-zk-bk";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries-cpp.html b/content/docs/2.1.0-incubating/client-libraries-cpp.html
new file mode 100644
index 0000000..1238fdd
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries-cpp.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries-cpp";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries-cpp/index.html b/content/docs/2.1.0-incubating/client-libraries-cpp/index.html
new file mode 100644
index 0000000..1238fdd
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries-cpp/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries-cpp";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries-go.html b/content/docs/2.1.0-incubating/client-libraries-go.html
new file mode 100644
index 0000000..3f13e65
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries-go.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries-go";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries-go/index.html b/content/docs/2.1.0-incubating/client-libraries-go/index.html
new file mode 100644
index 0000000..3f13e65
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries-go/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries-go";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries-java.html b/content/docs/2.1.0-incubating/client-libraries-java.html
new file mode 100644
index 0000000..9f7e970
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries-java.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries-java";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries-java/index.html b/content/docs/2.1.0-incubating/client-libraries-java/index.html
new file mode 100644
index 0000000..9f7e970
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries-java/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries-java";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries-python.html b/content/docs/2.1.0-incubating/client-libraries-python.html
new file mode 100644
index 0000000..14d67fc
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries-python.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries-python";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries-python/index.html b/content/docs/2.1.0-incubating/client-libraries-python/index.html
new file mode 100644
index 0000000..14d67fc
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries-python/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries-python";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries-websocket.html b/content/docs/2.1.0-incubating/client-libraries-websocket.html
new file mode 100644
index 0000000..0ac93ee
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries-websocket.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries-websocket";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries-websocket/index.html b/content/docs/2.1.0-incubating/client-libraries-websocket/index.html
new file mode 100644
index 0000000..0ac93ee
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries-websocket/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries-websocket";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries.html b/content/docs/2.1.0-incubating/client-libraries.html
new file mode 100644
index 0000000..d831b57
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/client-libraries/index.html b/content/docs/2.1.0-incubating/client-libraries/index.html
new file mode 100644
index 0000000..d831b57
--- /dev/null
+++ b/content/docs/2.1.0-incubating/client-libraries/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/client-libraries";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-architecture-overview.html b/content/docs/2.1.0-incubating/concepts-architecture-overview.html
new file mode 100644
index 0000000..59cc11b
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-architecture-overview.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-architecture-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-architecture-overview/index.html b/content/docs/2.1.0-incubating/concepts-architecture-overview/index.html
new file mode 100644
index 0000000..59cc11b
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-architecture-overview/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-architecture-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-architecture.html b/content/docs/2.1.0-incubating/concepts-architecture.html
new file mode 100644
index 0000000..442507e
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-architecture.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-architecture";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-architecture/index.html b/content/docs/2.1.0-incubating/concepts-architecture/index.html
new file mode 100644
index 0000000..442507e
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-architecture/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-architecture";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-authentication.html b/content/docs/2.1.0-incubating/concepts-authentication.html
new file mode 100644
index 0000000..a80e39d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-authentication.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-authentication";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-authentication/index.html b/content/docs/2.1.0-incubating/concepts-authentication/index.html
new file mode 100644
index 0000000..a80e39d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-authentication/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-authentication";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-clients.html b/content/docs/2.1.0-incubating/concepts-clients.html
new file mode 100644
index 0000000..6450bc7
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-clients.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-clients";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-clients/index.html b/content/docs/2.1.0-incubating/concepts-clients/index.html
new file mode 100644
index 0000000..6450bc7
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-clients/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-clients";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-messaging.html b/content/docs/2.1.0-incubating/concepts-messaging.html
new file mode 100644
index 0000000..a17e3a5
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-messaging.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-messaging";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-messaging/index.html b/content/docs/2.1.0-incubating/concepts-messaging/index.html
new file mode 100644
index 0000000..a17e3a5
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-messaging/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-messaging";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-multi-tenancy.html b/content/docs/2.1.0-incubating/concepts-multi-tenancy.html
new file mode 100644
index 0000000..c78f5bf
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-multi-tenancy.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-multi-tenancy";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-multi-tenancy/index.html b/content/docs/2.1.0-incubating/concepts-multi-tenancy/index.html
new file mode 100644
index 0000000..c78f5bf
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-multi-tenancy/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-multi-tenancy";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-overview.html b/content/docs/2.1.0-incubating/concepts-overview.html
new file mode 100644
index 0000000..45080e2
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-overview.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-overview/index.html b/content/docs/2.1.0-incubating/concepts-overview/index.html
new file mode 100644
index 0000000..45080e2
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-overview/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-replication.html b/content/docs/2.1.0-incubating/concepts-replication.html
new file mode 100644
index 0000000..9e26219
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-replication.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-replication";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-replication/index.html b/content/docs/2.1.0-incubating/concepts-replication/index.html
new file mode 100644
index 0000000..9e26219
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-replication/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-replication";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-schema-registry.html b/content/docs/2.1.0-incubating/concepts-schema-registry.html
new file mode 100644
index 0000000..0f79692
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-schema-registry.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-schema-registry";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-schema-registry/index.html b/content/docs/2.1.0-incubating/concepts-schema-registry/index.html
new file mode 100644
index 0000000..0f79692
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-schema-registry/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-schema-registry";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-tiered-storage.html b/content/docs/2.1.0-incubating/concepts-tiered-storage.html
new file mode 100644
index 0000000..3401023
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-tiered-storage.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-tiered-storage";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-tiered-storage/index.html b/content/docs/2.1.0-incubating/concepts-tiered-storage/index.html
new file mode 100644
index 0000000..3401023
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-tiered-storage/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-tiered-storage";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-topic-compaction.html b/content/docs/2.1.0-incubating/concepts-topic-compaction.html
new file mode 100644
index 0000000..cfc54ff
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-topic-compaction.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-topic-compaction";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/concepts-topic-compaction/index.html b/content/docs/2.1.0-incubating/concepts-topic-compaction/index.html
new file mode 100644
index 0000000..cfc54ff
--- /dev/null
+++ b/content/docs/2.1.0-incubating/concepts-topic-compaction/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/concepts-topic-compaction";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-compaction.html b/content/docs/2.1.0-incubating/cookbooks-compaction.html
new file mode 100644
index 0000000..a0250a3
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-compaction.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-compaction";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-compaction/index.html b/content/docs/2.1.0-incubating/cookbooks-compaction/index.html
new file mode 100644
index 0000000..a0250a3
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-compaction/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-compaction";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-deduplication.html b/content/docs/2.1.0-incubating/cookbooks-deduplication.html
new file mode 100644
index 0000000..fb0b433
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-deduplication.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-deduplication";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-deduplication/index.html b/content/docs/2.1.0-incubating/cookbooks-deduplication/index.html
new file mode 100644
index 0000000..fb0b433
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-deduplication/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-deduplication";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-encryption.html b/content/docs/2.1.0-incubating/cookbooks-encryption.html
new file mode 100644
index 0000000..0eb67da
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-encryption.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-encryption";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-encryption/index.html b/content/docs/2.1.0-incubating/cookbooks-encryption/index.html
new file mode 100644
index 0000000..0eb67da
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-encryption/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-encryption";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-message-queue.html b/content/docs/2.1.0-incubating/cookbooks-message-queue.html
new file mode 100644
index 0000000..3f540ed
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-message-queue.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-message-queue";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-message-queue/index.html b/content/docs/2.1.0-incubating/cookbooks-message-queue/index.html
new file mode 100644
index 0000000..3f540ed
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-message-queue/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-message-queue";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-non-persistent.html b/content/docs/2.1.0-incubating/cookbooks-non-persistent.html
new file mode 100644
index 0000000..032bb64
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-non-persistent.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-non-persistent";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-non-persistent/index.html b/content/docs/2.1.0-incubating/cookbooks-non-persistent/index.html
new file mode 100644
index 0000000..032bb64
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-non-persistent/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-non-persistent";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-partitioned.html b/content/docs/2.1.0-incubating/cookbooks-partitioned.html
new file mode 100644
index 0000000..5025936
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-partitioned.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-partitioned";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-partitioned/index.html b/content/docs/2.1.0-incubating/cookbooks-partitioned/index.html
new file mode 100644
index 0000000..5025936
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-partitioned/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-partitioned";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-retention-expiry.html b/content/docs/2.1.0-incubating/cookbooks-retention-expiry.html
new file mode 100644
index 0000000..da1b102
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-retention-expiry.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-retention-expiry";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-retention-expiry/index.html b/content/docs/2.1.0-incubating/cookbooks-retention-expiry/index.html
new file mode 100644
index 0000000..da1b102
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-retention-expiry/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-retention-expiry";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-tiered-storage.html b/content/docs/2.1.0-incubating/cookbooks-tiered-storage.html
new file mode 100644
index 0000000..f19ed53
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-tiered-storage.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-tiered-storage";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/cookbooks-tiered-storage/index.html b/content/docs/2.1.0-incubating/cookbooks-tiered-storage/index.html
new file mode 100644
index 0000000..f19ed53
--- /dev/null
+++ b/content/docs/2.1.0-incubating/cookbooks-tiered-storage/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/cookbooks-tiered-storage";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-aws.html b/content/docs/2.1.0-incubating/deploy-aws.html
new file mode 100644
index 0000000..b9b4e07
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-aws.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-aws";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-aws/index.html b/content/docs/2.1.0-incubating/deploy-aws/index.html
new file mode 100644
index 0000000..b9b4e07
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-aws/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-aws";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-bare-metal-multi-cluster.html b/content/docs/2.1.0-incubating/deploy-bare-metal-multi-cluster.html
new file mode 100644
index 0000000..3d868a1
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-bare-metal-multi-cluster.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-bare-metal-multi-cluster";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-bare-metal-multi-cluster/index.html b/content/docs/2.1.0-incubating/deploy-bare-metal-multi-cluster/index.html
new file mode 100644
index 0000000..3d868a1
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-bare-metal-multi-cluster/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-bare-metal-multi-cluster";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-bare-metal.html b/content/docs/2.1.0-incubating/deploy-bare-metal.html
new file mode 100644
index 0000000..e5c0468
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-bare-metal.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-bare-metal";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-bare-metal/index.html b/content/docs/2.1.0-incubating/deploy-bare-metal/index.html
new file mode 100644
index 0000000..e5c0468
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-bare-metal/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-bare-metal";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-dcos.html b/content/docs/2.1.0-incubating/deploy-dcos.html
new file mode 100644
index 0000000..55ebc86
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-dcos.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-dcos";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-dcos/index.html b/content/docs/2.1.0-incubating/deploy-dcos/index.html
new file mode 100644
index 0000000..55ebc86
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-dcos/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-dcos";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-kubernetes.html b/content/docs/2.1.0-incubating/deploy-kubernetes.html
new file mode 100644
index 0000000..cb94b1d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-kubernetes.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-kubernetes";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-kubernetes/index.html b/content/docs/2.1.0-incubating/deploy-kubernetes/index.html
new file mode 100644
index 0000000..cb94b1d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-kubernetes/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-kubernetes";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-monitoring.html b/content/docs/2.1.0-incubating/deploy-monitoring.html
new file mode 100644
index 0000000..78ca19f
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-monitoring.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-monitoring";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/deploy-monitoring/index.html b/content/docs/2.1.0-incubating/deploy-monitoring/index.html
new file mode 100644
index 0000000..78ca19f
--- /dev/null
+++ b/content/docs/2.1.0-incubating/deploy-monitoring/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/deploy-monitoring";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/develop-binary-protocol.html b/content/docs/2.1.0-incubating/develop-binary-protocol.html
new file mode 100644
index 0000000..89c3a2d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/develop-binary-protocol.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/develop-binary-protocol";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/develop-binary-protocol/index.html b/content/docs/2.1.0-incubating/develop-binary-protocol/index.html
new file mode 100644
index 0000000..89c3a2d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/develop-binary-protocol/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/develop-binary-protocol";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/develop-cpp.html b/content/docs/2.1.0-incubating/develop-cpp.html
new file mode 100644
index 0000000..dc61b56
--- /dev/null
+++ b/content/docs/2.1.0-incubating/develop-cpp.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/develop-cpp";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/develop-cpp/index.html b/content/docs/2.1.0-incubating/develop-cpp/index.html
new file mode 100644
index 0000000..dc61b56
--- /dev/null
+++ b/content/docs/2.1.0-incubating/develop-cpp/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/develop-cpp";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/develop-load-manager.html b/content/docs/2.1.0-incubating/develop-load-manager.html
new file mode 100644
index 0000000..7f93b85
--- /dev/null
+++ b/content/docs/2.1.0-incubating/develop-load-manager.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/develop-load-manager";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/develop-load-manager/index.html b/content/docs/2.1.0-incubating/develop-load-manager/index.html
new file mode 100644
index 0000000..7f93b85
--- /dev/null
+++ b/content/docs/2.1.0-incubating/develop-load-manager/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/develop-load-manager";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/develop-schema.html b/content/docs/2.1.0-incubating/develop-schema.html
new file mode 100644
index 0000000..aa71602
--- /dev/null
+++ b/content/docs/2.1.0-incubating/develop-schema.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/develop-schema";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/develop-schema/index.html b/content/docs/2.1.0-incubating/develop-schema/index.html
new file mode 100644
index 0000000..aa71602
--- /dev/null
+++ b/content/docs/2.1.0-incubating/develop-schema/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/develop-schema";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/develop-tools.html b/content/docs/2.1.0-incubating/develop-tools.html
new file mode 100644
index 0000000..164c55a
--- /dev/null
+++ b/content/docs/2.1.0-incubating/develop-tools.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/develop-tools";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/develop-tools/index.html b/content/docs/2.1.0-incubating/develop-tools/index.html
new file mode 100644
index 0000000..164c55a
--- /dev/null
+++ b/content/docs/2.1.0-incubating/develop-tools/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/develop-tools";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-api.html b/content/docs/2.1.0-incubating/functions-api.html
new file mode 100644
index 0000000..975b4a0
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-api.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-api";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-api/index.html b/content/docs/2.1.0-incubating/functions-api/index.html
new file mode 100644
index 0000000..975b4a0
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-api/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-api";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-deploying.html b/content/docs/2.1.0-incubating/functions-deploying.html
new file mode 100644
index 0000000..4a62b99
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-deploying.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-deploying";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-deploying/index.html b/content/docs/2.1.0-incubating/functions-deploying/index.html
new file mode 100644
index 0000000..4a62b99
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-deploying/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-deploying";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-guarantees.html b/content/docs/2.1.0-incubating/functions-guarantees.html
new file mode 100644
index 0000000..f1d2c9d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-guarantees.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-guarantees";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-guarantees/index.html b/content/docs/2.1.0-incubating/functions-guarantees/index.html
new file mode 100644
index 0000000..f1d2c9d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-guarantees/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-guarantees";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-metrics.html b/content/docs/2.1.0-incubating/functions-metrics.html
new file mode 100644
index 0000000..846dc1c
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-metrics.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-metrics";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-metrics/index.html b/content/docs/2.1.0-incubating/functions-metrics/index.html
new file mode 100644
index 0000000..846dc1c
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-metrics/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-metrics";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-overview.html b/content/docs/2.1.0-incubating/functions-overview.html
new file mode 100644
index 0000000..5a57be9
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-overview.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-overview/index.html b/content/docs/2.1.0-incubating/functions-overview/index.html
new file mode 100644
index 0000000..5a57be9
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-overview/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-quickstart.html b/content/docs/2.1.0-incubating/functions-quickstart.html
new file mode 100644
index 0000000..410e62d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-quickstart.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-quickstart";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-quickstart/index.html b/content/docs/2.1.0-incubating/functions-quickstart/index.html
new file mode 100644
index 0000000..410e62d
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-quickstart/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-quickstart";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-state.html b/content/docs/2.1.0-incubating/functions-state.html
new file mode 100644
index 0000000..f5c1ce7
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-state.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-state";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/functions-state/index.html b/content/docs/2.1.0-incubating/functions-state/index.html
new file mode 100644
index 0000000..f5c1ce7
--- /dev/null
+++ b/content/docs/2.1.0-incubating/functions-state/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/functions-state";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-aerospike.html b/content/docs/2.1.0-incubating/io-aerospike.html
new file mode 100644
index 0000000..621ff36
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-aerospike.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-aerospike";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-aerospike/index.html b/content/docs/2.1.0-incubating/io-aerospike/index.html
new file mode 100644
index 0000000..621ff36
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-aerospike/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-aerospike";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-cassandra.html b/content/docs/2.1.0-incubating/io-cassandra.html
new file mode 100644
index 0000000..92d2e83
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-cassandra.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-cassandra";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-cassandra/index.html b/content/docs/2.1.0-incubating/io-cassandra/index.html
new file mode 100644
index 0000000..92d2e83
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-cassandra/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-cassandra";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-connectors.html b/content/docs/2.1.0-incubating/io-connectors.html
new file mode 100644
index 0000000..3b3a484
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-connectors.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-connectors";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-connectors/index.html b/content/docs/2.1.0-incubating/io-connectors/index.html
new file mode 100644
index 0000000..3b3a484
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-connectors/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-connectors";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-develop.html b/content/docs/2.1.0-incubating/io-develop.html
new file mode 100644
index 0000000..f891305
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-develop.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-develop";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-develop/index.html b/content/docs/2.1.0-incubating/io-develop/index.html
new file mode 100644
index 0000000..f891305
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-develop/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-develop";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-kafka.html b/content/docs/2.1.0-incubating/io-kafka.html
new file mode 100644
index 0000000..1764b23
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-kafka.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-kafka";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-kafka/index.html b/content/docs/2.1.0-incubating/io-kafka/index.html
new file mode 100644
index 0000000..1764b23
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-kafka/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-kafka";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-kinesis.html b/content/docs/2.1.0-incubating/io-kinesis.html
new file mode 100644
index 0000000..59f27b6
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-kinesis.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-kinesis";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-kinesis/index.html b/content/docs/2.1.0-incubating/io-kinesis/index.html
new file mode 100644
index 0000000..59f27b6
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-kinesis/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-kinesis";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-managing.html b/content/docs/2.1.0-incubating/io-managing.html
new file mode 100644
index 0000000..29ea06b
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-managing.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-managing";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-managing/index.html b/content/docs/2.1.0-incubating/io-managing/index.html
new file mode 100644
index 0000000..29ea06b
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-managing/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-managing";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-overview.html b/content/docs/2.1.0-incubating/io-overview.html
new file mode 100644
index 0000000..f1a6c9c
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-overview.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-overview/index.html b/content/docs/2.1.0-incubating/io-overview/index.html
new file mode 100644
index 0000000..f1a6c9c
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-overview/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-quickstart.html b/content/docs/2.1.0-incubating/io-quickstart.html
new file mode 100644
index 0000000..124ba0e
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-quickstart.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-quickstart";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-quickstart/index.html b/content/docs/2.1.0-incubating/io-quickstart/index.html
new file mode 100644
index 0000000..124ba0e
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-quickstart/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-quickstart";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-rabbitmq.html b/content/docs/2.1.0-incubating/io-rabbitmq.html
new file mode 100644
index 0000000..52adf98
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-rabbitmq.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-rabbitmq";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-rabbitmq/index.html b/content/docs/2.1.0-incubating/io-rabbitmq/index.html
new file mode 100644
index 0000000..52adf98
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-rabbitmq/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-rabbitmq";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-twitter.html b/content/docs/2.1.0-incubating/io-twitter.html
new file mode 100644
index 0000000..822b243
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-twitter.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-twitter";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/io-twitter/index.html b/content/docs/2.1.0-incubating/io-twitter/index.html
new file mode 100644
index 0000000..822b243
--- /dev/null
+++ b/content/docs/2.1.0-incubating/io-twitter/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/io-twitter";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/pulsar-2.0.html b/content/docs/2.1.0-incubating/pulsar-2.0.html
new file mode 100644
index 0000000..4d21161
--- /dev/null
+++ b/content/docs/2.1.0-incubating/pulsar-2.0.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/pulsar-2.0";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/pulsar-2.0/index.html b/content/docs/2.1.0-incubating/pulsar-2.0/index.html
new file mode 100644
index 0000000..4d21161
--- /dev/null
+++ b/content/docs/2.1.0-incubating/pulsar-2.0/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/pulsar-2.0";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/pulsar-admin.html b/content/docs/2.1.0-incubating/pulsar-admin.html
new file mode 100644
index 0000000..886a2d2
--- /dev/null
+++ b/content/docs/2.1.0-incubating/pulsar-admin.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/pulsar-admin";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/pulsar-admin/index.html b/content/docs/2.1.0-incubating/pulsar-admin/index.html
new file mode 100644
index 0000000..886a2d2
--- /dev/null
+++ b/content/docs/2.1.0-incubating/pulsar-admin/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/pulsar-admin";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/reference-cli-tools.html b/content/docs/2.1.0-incubating/reference-cli-tools.html
new file mode 100644
index 0000000..9df23b7
--- /dev/null
+++ b/content/docs/2.1.0-incubating/reference-cli-tools.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/reference-cli-tools";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/reference-cli-tools/index.html b/content/docs/2.1.0-incubating/reference-cli-tools/index.html
new file mode 100644
index 0000000..9df23b7
--- /dev/null
+++ b/content/docs/2.1.0-incubating/reference-cli-tools/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/reference-cli-tools";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/reference-configuration.html b/content/docs/2.1.0-incubating/reference-configuration.html
new file mode 100644
index 0000000..3d638e6
--- /dev/null
+++ b/content/docs/2.1.0-incubating/reference-configuration.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/reference-configuration";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/reference-configuration/index.html b/content/docs/2.1.0-incubating/reference-configuration/index.html
new file mode 100644
index 0000000..3d638e6
--- /dev/null
+++ b/content/docs/2.1.0-incubating/reference-configuration/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/reference-configuration";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/reference-terminology.html b/content/docs/2.1.0-incubating/reference-terminology.html
new file mode 100644
index 0000000..99f1d37
--- /dev/null
+++ b/content/docs/2.1.0-incubating/reference-terminology.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/reference-terminology";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/reference-terminology/index.html b/content/docs/2.1.0-incubating/reference-terminology/index.html
new file mode 100644
index 0000000..99f1d37
--- /dev/null
+++ b/content/docs/2.1.0-incubating/reference-terminology/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/reference-terminology";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-athenz.html b/content/docs/2.1.0-incubating/security-athenz.html
new file mode 100644
index 0000000..6699525
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-athenz.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-athenz";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-athenz/index.html b/content/docs/2.1.0-incubating/security-athenz/index.html
new file mode 100644
index 0000000..6699525
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-athenz/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-athenz";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-authorization.html b/content/docs/2.1.0-incubating/security-authorization.html
new file mode 100644
index 0000000..8b34feb
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-authorization.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-authorization";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-authorization/index.html b/content/docs/2.1.0-incubating/security-authorization/index.html
new file mode 100644
index 0000000..8b34feb
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-authorization/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-authorization";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-encryption.html b/content/docs/2.1.0-incubating/security-encryption.html
new file mode 100644
index 0000000..8e4f711
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-encryption.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-encryption";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-encryption/index.html b/content/docs/2.1.0-incubating/security-encryption/index.html
new file mode 100644
index 0000000..8e4f711
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-encryption/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-encryption";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-extending.html b/content/docs/2.1.0-incubating/security-extending.html
new file mode 100644
index 0000000..60bbfc3
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-extending.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-extending";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-extending/index.html b/content/docs/2.1.0-incubating/security-extending/index.html
new file mode 100644
index 0000000..60bbfc3
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-extending/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-extending";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-overview.html b/content/docs/2.1.0-incubating/security-overview.html
new file mode 100644
index 0000000..5752d6e
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-overview.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-overview/index.html b/content/docs/2.1.0-incubating/security-overview/index.html
new file mode 100644
index 0000000..5752d6e
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-overview/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-overview";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-tls-authentication.html b/content/docs/2.1.0-incubating/security-tls-authentication.html
new file mode 100644
index 0000000..cd18c70
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-tls-authentication.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-tls-authentication";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-tls-authentication/index.html b/content/docs/2.1.0-incubating/security-tls-authentication/index.html
new file mode 100644
index 0000000..cd18c70
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-tls-authentication/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-tls-authentication";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-tls-transport.html b/content/docs/2.1.0-incubating/security-tls-transport.html
new file mode 100644
index 0000000..71b4722
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-tls-transport.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-tls-transport";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/security-tls-transport/index.html b/content/docs/2.1.0-incubating/security-tls-transport/index.html
new file mode 100644
index 0000000..71b4722
--- /dev/null
+++ b/content/docs/2.1.0-incubating/security-tls-transport/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/security-tls-transport";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/standalone-docker.html b/content/docs/2.1.0-incubating/standalone-docker.html
new file mode 100644
index 0000000..40488c8
--- /dev/null
+++ b/content/docs/2.1.0-incubating/standalone-docker.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/standalone-docker";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/standalone-docker/index.html b/content/docs/2.1.0-incubating/standalone-docker/index.html
new file mode 100644
index 0000000..40488c8
--- /dev/null
+++ b/content/docs/2.1.0-incubating/standalone-docker/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/standalone-docker";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/standalone.html b/content/docs/2.1.0-incubating/standalone.html
new file mode 100644
index 0000000..9ada3a4
--- /dev/null
+++ b/content/docs/2.1.0-incubating/standalone.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/standalone";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/2.1.0-incubating/standalone/index.html b/content/docs/2.1.0-incubating/standalone/index.html
new file mode 100644
index 0000000..9ada3a4
--- /dev/null
+++ b/content/docs/2.1.0-incubating/standalone/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar · </title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta property="og:title" content="Apache Pulsar · "/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" c [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body><script>
+                <!--
+                window.location.href = "/docs/en/2.1.0-incubating/standalone";
+                // -->
+                </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/adaptors-kafka.html b/content/docs/en/2.1.0-incubating/adaptors-kafka.html
new file mode 100644
index 0000000..e4d888c
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/adaptors-kafka.html
@@ -0,0 +1,342 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar adaptor for Apache Kafka · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Pulsar provides an easy option for applications that are currently written using the [Apache Kafka](http://kafka.apache.org) Java client API."/><meta name="docsearch:version" content="2 [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Ada [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/adaptors-kafka.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Pulsar adaptor for Apache Kafka</h1></header><article><div><span><p>Pulsar provides an easy option for applications that are currently writte [...]
+<h2><a class="anchor" aria-hidden="true" id="using-the-pulsar-kafka-compatibility-wrapper"></a><a href="#using-the-pulsar-kafka-compatibility-wrapper" 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-1v [...]
+<p>In an existing application, change the regular Kafka client dependency and replace it with the Pulsar Kafka wrapper. Remove:</p>
+<pre><code class="hljs css language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.kafka<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>kakfa-clients<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>0.10.2.1<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</code></pre>
+<p>Then include this dependency for the Pulsar Kafka wrapper:</p>
+<pre><code class="hljs css language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.pulsar<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>pulsar-client-kafka<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>2.1.1-incubating<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</code></pre>
+<p>With the new dependency, the existing code should work without any changes. The only
+thing that needs to be adjusted is the configuration, to make sure to point the
+producers and consumers to Pulsar service rather than Kafka and to use a particular
+Pulsar topic.</p>
+<h2><a class="anchor" aria-hidden="true" id="using-the-pulsar-kafka-compatibility-wrapper-together-with-existing-kafka-client"></a><a href="#using-the-pulsar-kafka-compatibility-wrapper-together-with-existing-kafka-client" 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 [...]
+<p>When migrating from Kafka to Pulsar, the application might have to use the original kafka client
+and the pulsar kafka wrapper together during migration. Then you should consider using the
+unshaded pulsar kafka client wrapper.</p>
+<pre><code class="hljs css language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.pulsar<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>pulsar-client-kafka-original<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>2.1.1-incubating<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</code></pre>
+<p>When using this dependency, you need to construct producer using <code>org.apache.kafka.clients.producer.PulsarKafkaProducer</code>
+instead of <code>org.apache.kafka.clients.producer.KafkaProducer</code> and <code>org.apache.kafka.clients.producer.PulsarKafkaConsumer</code> for consumers.</p>
+<h2><a class="anchor" aria-hidden="true" id="producer-example"></a><a href="#producer-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. [...]
+<pre><code class="hljs css language-java"><span class="hljs-comment">// Topic needs to be a regular Pulsar topic</span>
+String topic = <span class="hljs-string">"persistent://public/default/my-topic"</span>;
+
+Properties props = <span class="hljs-keyword">new</span> Properties();
+<span class="hljs-comment">// Point to a Pulsar service</span>
+props.put(<span class="hljs-string">"bootstrap.servers"</span>, <span class="hljs-string">"pulsar://localhost:6650"</span>);
+
+props.put(<span class="hljs-string">"key.serializer"</span>, IntegerSerializer.class.getName());
+props.put(<span class="hljs-string">"value.serializer"</span>, StringSerializer.class.getName());
+
+Producer&lt;Integer, String&gt; producer = <span class="hljs-keyword">new</span> KafkaProducer&lt;&gt;(props);
+
+<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-number">10</span>; i++) {
+    producer.send(<span class="hljs-keyword">new</span> ProducerRecord&lt;Integer, String&gt;(topic, i, <span class="hljs-string">"hello-"</span> + i));
+    log.info(<span class="hljs-string">"Message {} sent successfully"</span>, i);
+}
+
+producer.close();
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="consumer-example"></a><a href="#consumer-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. [...]
+<pre><code class="hljs css language-java">String topic = <span class="hljs-string">"persistent://public/default/my-topic"</span>;
+
+Properties props = <span class="hljs-keyword">new</span> Properties();
+<span class="hljs-comment">// Point to a Pulsar service</span>
+props.put(<span class="hljs-string">"bootstrap.servers"</span>, <span class="hljs-string">"pulsar://localhost:6650"</span>);
+props.put(<span class="hljs-string">"group.id"</span>, <span class="hljs-string">"my-subscription-name"</span>);
+props.put(<span class="hljs-string">"enable.auto.commit"</span>, <span class="hljs-string">"false"</span>);
+props.put(<span class="hljs-string">"key.deserializer"</span>, IntegerDeserializer.class.getName());
+props.put(<span class="hljs-string">"value.deserializer"</span>, StringDeserializer.class.getName());
+
+Consumer&lt;Integer, String&gt; consumer = <span class="hljs-keyword">new</span> KafkaConsumer&lt;&gt;(props);
+consumer.subscribe(Arrays.asList(topic));
+
+<span class="hljs-keyword">while</span> (<span class="hljs-keyword">true</span>) {
+    ConsumerRecords&lt;Integer, String&gt; records = consumer.poll(<span class="hljs-number">100</span>);
+    records.forEach(record -&gt; {
+        log.info(<span class="hljs-string">"Received record: {}"</span>, record);
+    });
+
+    <span class="hljs-comment">// Commit last offset</span>
+    consumer.commitSync();
+}
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="complete-examples"></a><a href="#complete-examples" 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>You can find the complete producer and consumer examples
+<a href="https://github.com/apache/incubator-pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">here</a>.</p>
+<h2><a class="anchor" aria-hidden="true" id="compatibility-matrix"></a><a href="#compatibility-matrix" 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>Currently the Pulsar Kafka wrapper supports most of the operations offered by the Kafka API.</p>
+<h4><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-.83.42-1.64  [...]
+<p>APIs:</p>
+<table>
+<thead>
+<tr><th style="text-align:left">Producer Method</th><th style="text-align:left">Supported</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>Future&lt;RecordMetadata&gt; send(ProducerRecord&lt;K, V&gt; record)</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Currently no support for explicitly set the partition id when publishing</td></tr>
+<tr><td style="text-align:left"><code>Future&lt;RecordMetadata&gt; send(ProducerRecord&lt;K, V&gt; record, Callback callback)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void flush()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>List&lt;PartitionInfo&gt; partitionsFor(String topic)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;MetricName, ? extends Metric&gt; metrics()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void close()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void close(long timeout, TimeUnit unit)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+</tbody>
+</table>
+<p>Properties:</p>
+<table>
+<thead>
+<tr><th style="text-align:left">Config property</th><th style="text-align:left">Supported</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>acks</code></td><td style="text-align:left">Ignored</td><td style="text-align:left">Durability and quorum writes are configured at the namespace level</td></tr>
+<tr><td style="text-align:left"><code>batch.size</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>block.on.buffer.full</code></td><td style="text-align:left">Yes</td><td style="text-align:left">If true it will block producer, otherwise give error</td></tr>
+<tr><td style="text-align:left"><code>bootstrap.servers</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Needs to point to a single Pulsar service URL</td></tr>
+<tr><td style="text-align:left"><code>buffer.memory</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>client.id</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>compression.type</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Allows <code>gzip</code> and <code>lz4</code>. No <code>snappy</code>.</td></tr>
+<tr><td style="text-align:left"><code>connections.max.idle.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>interceptor.classes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>key.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>linger.ms</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Controls the group commit time when batching messages</td></tr>
+<tr><td style="text-align:left"><code>max.block.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>max.in.flight.requests.per.connection</code></td><td style="text-align:left">Ignored</td><td style="text-align:left">In Pulsar ordering is maintained even with multiple requests in flight</td></tr>
+<tr><td style="text-align:left"><code>max.request.size</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>metric.reporters</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>metrics.num.samples</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>metrics.sample.window.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>partitioner.class</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>receive.buffer.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>reconnect.backoff.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>request.timeout.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>retries</code></td><td style="text-align:left">Ignored</td><td style="text-align:left">Pulsar client retries with exponential backoff until the send timeout expires</td></tr>
+<tr><td style="text-align:left"><code>send.buffer.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>timeout.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+</tbody>
+</table>
+<h4><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-.83.42-1.64  [...]
+<p>APIs:</p>
+<table>
+<thead>
+<tr><th style="text-align:left">Consumer Method</th><th style="text-align:left">Supported</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>Set&lt;TopicPartition&gt; assignment()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Set&lt;String&gt; subscription()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void subscribe(Collection&lt;String&gt; topics)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void subscribe(Collection&lt;String&gt; topics, ConsumerRebalanceListener callback)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void assign(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void subscribe(Pattern pattern, ConsumerRebalanceListener callback)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void unsubscribe()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>ConsumerRecords&lt;K, V&gt; poll(long timeoutMillis)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void commitSync()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void commitSync(Map&lt;TopicPartition, OffsetAndMetadata&gt; offsets)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void commitAsync()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void commitAsync(OffsetCommitCallback callback)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void commitAsync(Map&lt;TopicPartition, OffsetAndMetadata&gt; offsets, OffsetCommitCallback callback)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void seek(TopicPartition partition, long offset)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void seekToBeginning(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void seekToEnd(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>long position(TopicPartition partition)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>OffsetAndMetadata committed(TopicPartition partition)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;MetricName, ? extends Metric&gt; metrics()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>List&lt;PartitionInfo&gt; partitionsFor(String topic)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;String, List&lt;PartitionInfo&gt;&gt; listTopics()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Set&lt;TopicPartition&gt; paused()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void pause(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void resume(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;TopicPartition, OffsetAndTimestamp&gt; offsetsForTimes(Map&lt;TopicPartition, Long&gt; timestampsToSearch)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;TopicPartition, Long&gt; beginningOffsets(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;TopicPartition, Long&gt; endOffsets(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void close()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void close(long timeout, TimeUnit unit)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void wakeup()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+</tbody>
+</table>
+<p>Properties:</p>
+<table>
+<thead>
+<tr><th style="text-align:left">Config property</th><th style="text-align:left">Supported</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>group.id</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Maps to a Pulsar subscription name</td></tr>
+<tr><td style="text-align:left"><code>max.poll.records</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>max.poll.interval.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left">Messages are &quot;pushed&quot; from broker</td></tr>
+<tr><td style="text-align:left"><code>session.timeout.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>heartbeat.interval.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>bootstrap.servers</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Needs to point to a single Pulsar service URL</td></tr>
+<tr><td style="text-align:left"><code>enable.auto.commit</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>auto.commit.interval.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left">With auto-commit, acks are sent immediately to broker</td></tr>
+<tr><td style="text-align:left"><code>partition.assignment.strategy</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>auto.offset.reset</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>fetch.min.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>fetch.max.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>fetch.max.wait.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>metadata.max.age.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>max.partition.fetch.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>send.buffer.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>receive.buffer.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>client.id</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="custom-pulsar-configurations"></a><a href="#custom-pulsar-configurations" 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 [...]
+<p>You can configure Pulsar authentication provider directly from the Kafka properties.</p>
+<h3><a class="anchor" aria-hidden="true" id="pulsar-client-properties"></a><a href="#pulsar-client-properties" 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-. [...]
+<table>
+<thead>
+<tr><th style="text-align:left">Config property</th><th style="text-align:left">Default</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>pulsar.authentication.class</code></td><td style="text-align:left"></td><td style="text-align:left">Configure to auth provider. Eg. <code>org.apache.pulsar.client.impl.auth.AuthenticationTls</code></td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setUseTls-boolean-"><code>pulsar.use.tls</code></a></td><td style="text-align:left"><code>false</code></td><td style="text-align:left">Enable TLS transport encryption</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setTlsTrustCertsFilePath-java.lang.String-"><code>pulsar.tls.trust.certs.file.path</code></a></td><td style="text-align:left"></td><td style="text-align:left">Path for the TLS trust certificate store</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setTlsAllowInsecureConnection-boolean-"><code>pulsar.tls.allow.insecure.connection</code></a></td><td style="text-align:left"><code>false</code></td><td style="text-align:left">Accept self-signed certificates from brokers</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setOperationTimeout-int-java.util.concurrent.TimeUnit-"><code>pulsar.operation.timeout.ms</code></a></td><td style="text-align:left"><code>30000</code></td><td style="text-align:left">General operations timeout</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setStatsInterval-long-java.util.concurrent.TimeUnit-"><code>pulsar.stats.interval.seconds</code></a></td><td style="text-align:left"><code>60</code></td><td style="text-align:left">Pulsar client lib stats printing interval</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setIoThreads-int-"><code>pulsar.num.io.threads</code></a></td><td style="text-align:left"><code>1</code></td><td style="text-align:left">Number of Netty IO threads to use</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setConnectionsPerBroker-int-"><code>pulsar.connections.per.broker</code></a></td><td style="text-align:left"><code>1</code></td><td style="text-align:left">Max number of connection to open to each broker</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setUseTcpNoDelay-boolean-"><code>pulsar.use.tcp.nodelay</code></a></td><td style="text-align:left"><code>true</code></td><td style="text-align:left">TCP no-delay</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setConcurrentLookupRequest-int-"><code>pulsar.concurrent.lookup.requests</code></a></td><td style="text-align:left"><code>50000</code></td><td style="text-align:left">Max number of concurrent topic lookups</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setMaxNumberOfRejectedRequestPerConnection-int-"><code>pulsar.max.number.rejected.request.per.connection</code></a></td><td style="text-align:left"><code>50</code></td><td style="text-align:left">Threshold of errors to forcefully close a connection</td></tr>
+</tbody>
+</table>
+<h3><a class="anchor" aria-hidden="true" id="pulsar-producer-properties"></a><a href="#pulsar-producer-properties" 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 12H [...]
+<table>
+<thead>
+<tr><th style="text-align:left">Config property</th><th style="text-align:left">Default</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setProducerName-java.lang.String-"><code>pulsar.producer.name</code></a></td><td style="text-align:left"></td><td style="text-align:left">Specify producer name</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setInitialSequenceId-long-"><code>pulsar.producer.initial.sequence.id</code></a></td><td style="text-align:left"></td><td style="text-align:left">Specify baseline for sequence id for this producer</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setMaxPendingMessages-int-"><code>pulsar.producer.max.pending.messages</code></a></td><td style="text-align:left"><code>1000</code></td><td style="text-align:left">Set the max size of the queue holding the messages pending to receive an acknowledgment from the broker.</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setMaxPendingMessagesAcrossPartitions-int-"><code>pulsar.producer.max.pending.messages.across.partitions</code></a></td><td style="text-align:left"><code>50000</code></td><td style="text-align:left">Set the number of max pending messages across all the partitions</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setBatchingEnabled-boolean-"><code>pulsar.producer.batching.enabled</code></a></td><td style="text-align:left"><code>true</code></td><td style="text-align:left">Control whether automatic batching of messages is enabled for the producer</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setBatchingMaxMessages-int-"><code>pulsar.producer.batching.max.messages</code></a></td><td style="text-align:left"><code>1000</code></td><td style="text-align:left">The maximum number of messages permitted in a batch</td></tr>
+</tbody>
+</table>
+<h3><a class="anchor" aria-hidden="true" id="pulsar-consumer-properties"></a><a href="#pulsar-consumer-properties" 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 12H [...]
+<table>
+<thead>
+<tr><th style="text-align:left">Config property</th><th style="text-align:left">Default</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ConsumerConfiguration.html#setConsumerName-java.lang.String-"><code>pulsar.consumer.name</code></a></td><td style="text-align:left"></td><td style="text-align:left">Set the consumer name</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ConsumerConfiguration.html#setReceiverQueueSize-int-"><code>pulsar.consumer.receiver.queue.size</code></a></td><td style="text-align:left">1000</td><td style="text-align:left">Sets the size of the consumer receive queue</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ConsumerConfiguration.html#setMaxTotalReceiverQueueSizeAcrossPartitions-int-"><code>pulsar.consumer.total.receiver.queue.size.across.partitions</code></a></td><td style="text-align:left">50000</td><td style="text-align:left">Set the max total receiver queue size across partitons</td></tr>
+</tbody>
+</table>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/admin-api-schemas"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/adaptors-spark"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#using-the-pulsar-kafka-compatibility-wrapper">Using the Pulsar Kafka compa [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/adaptors-kafka/index.html b/content/docs/en/2.1.0-incubating/adaptors-kafka/index.html
new file mode 100644
index 0000000..e4d888c
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/adaptors-kafka/index.html
@@ -0,0 +1,342 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar adaptor for Apache Kafka · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Pulsar provides an easy option for applications that are currently written using the [Apache Kafka](http://kafka.apache.org) Java client API."/><meta name="docsearch:version" content="2 [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Ada [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/adaptors-kafka.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Pulsar adaptor for Apache Kafka</h1></header><article><div><span><p>Pulsar provides an easy option for applications that are currently writte [...]
+<h2><a class="anchor" aria-hidden="true" id="using-the-pulsar-kafka-compatibility-wrapper"></a><a href="#using-the-pulsar-kafka-compatibility-wrapper" 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-1v [...]
+<p>In an existing application, change the regular Kafka client dependency and replace it with the Pulsar Kafka wrapper. Remove:</p>
+<pre><code class="hljs css language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.kafka<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>kakfa-clients<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>0.10.2.1<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</code></pre>
+<p>Then include this dependency for the Pulsar Kafka wrapper:</p>
+<pre><code class="hljs css language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.pulsar<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>pulsar-client-kafka<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>2.1.1-incubating<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</code></pre>
+<p>With the new dependency, the existing code should work without any changes. The only
+thing that needs to be adjusted is the configuration, to make sure to point the
+producers and consumers to Pulsar service rather than Kafka and to use a particular
+Pulsar topic.</p>
+<h2><a class="anchor" aria-hidden="true" id="using-the-pulsar-kafka-compatibility-wrapper-together-with-existing-kafka-client"></a><a href="#using-the-pulsar-kafka-compatibility-wrapper-together-with-existing-kafka-client" 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 [...]
+<p>When migrating from Kafka to Pulsar, the application might have to use the original kafka client
+and the pulsar kafka wrapper together during migration. Then you should consider using the
+unshaded pulsar kafka client wrapper.</p>
+<pre><code class="hljs css language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.pulsar<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>pulsar-client-kafka-original<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>2.1.1-incubating<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</code></pre>
+<p>When using this dependency, you need to construct producer using <code>org.apache.kafka.clients.producer.PulsarKafkaProducer</code>
+instead of <code>org.apache.kafka.clients.producer.KafkaProducer</code> and <code>org.apache.kafka.clients.producer.PulsarKafkaConsumer</code> for consumers.</p>
+<h2><a class="anchor" aria-hidden="true" id="producer-example"></a><a href="#producer-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. [...]
+<pre><code class="hljs css language-java"><span class="hljs-comment">// Topic needs to be a regular Pulsar topic</span>
+String topic = <span class="hljs-string">"persistent://public/default/my-topic"</span>;
+
+Properties props = <span class="hljs-keyword">new</span> Properties();
+<span class="hljs-comment">// Point to a Pulsar service</span>
+props.put(<span class="hljs-string">"bootstrap.servers"</span>, <span class="hljs-string">"pulsar://localhost:6650"</span>);
+
+props.put(<span class="hljs-string">"key.serializer"</span>, IntegerSerializer.class.getName());
+props.put(<span class="hljs-string">"value.serializer"</span>, StringSerializer.class.getName());
+
+Producer&lt;Integer, String&gt; producer = <span class="hljs-keyword">new</span> KafkaProducer&lt;&gt;(props);
+
+<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-number">10</span>; i++) {
+    producer.send(<span class="hljs-keyword">new</span> ProducerRecord&lt;Integer, String&gt;(topic, i, <span class="hljs-string">"hello-"</span> + i));
+    log.info(<span class="hljs-string">"Message {} sent successfully"</span>, i);
+}
+
+producer.close();
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="consumer-example"></a><a href="#consumer-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. [...]
+<pre><code class="hljs css language-java">String topic = <span class="hljs-string">"persistent://public/default/my-topic"</span>;
+
+Properties props = <span class="hljs-keyword">new</span> Properties();
+<span class="hljs-comment">// Point to a Pulsar service</span>
+props.put(<span class="hljs-string">"bootstrap.servers"</span>, <span class="hljs-string">"pulsar://localhost:6650"</span>);
+props.put(<span class="hljs-string">"group.id"</span>, <span class="hljs-string">"my-subscription-name"</span>);
+props.put(<span class="hljs-string">"enable.auto.commit"</span>, <span class="hljs-string">"false"</span>);
+props.put(<span class="hljs-string">"key.deserializer"</span>, IntegerDeserializer.class.getName());
+props.put(<span class="hljs-string">"value.deserializer"</span>, StringDeserializer.class.getName());
+
+Consumer&lt;Integer, String&gt; consumer = <span class="hljs-keyword">new</span> KafkaConsumer&lt;&gt;(props);
+consumer.subscribe(Arrays.asList(topic));
+
+<span class="hljs-keyword">while</span> (<span class="hljs-keyword">true</span>) {
+    ConsumerRecords&lt;Integer, String&gt; records = consumer.poll(<span class="hljs-number">100</span>);
+    records.forEach(record -&gt; {
+        log.info(<span class="hljs-string">"Received record: {}"</span>, record);
+    });
+
+    <span class="hljs-comment">// Commit last offset</span>
+    consumer.commitSync();
+}
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="complete-examples"></a><a href="#complete-examples" 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>You can find the complete producer and consumer examples
+<a href="https://github.com/apache/incubator-pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">here</a>.</p>
+<h2><a class="anchor" aria-hidden="true" id="compatibility-matrix"></a><a href="#compatibility-matrix" 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>Currently the Pulsar Kafka wrapper supports most of the operations offered by the Kafka API.</p>
+<h4><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-.83.42-1.64  [...]
+<p>APIs:</p>
+<table>
+<thead>
+<tr><th style="text-align:left">Producer Method</th><th style="text-align:left">Supported</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>Future&lt;RecordMetadata&gt; send(ProducerRecord&lt;K, V&gt; record)</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Currently no support for explicitly set the partition id when publishing</td></tr>
+<tr><td style="text-align:left"><code>Future&lt;RecordMetadata&gt; send(ProducerRecord&lt;K, V&gt; record, Callback callback)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void flush()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>List&lt;PartitionInfo&gt; partitionsFor(String topic)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;MetricName, ? extends Metric&gt; metrics()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void close()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void close(long timeout, TimeUnit unit)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+</tbody>
+</table>
+<p>Properties:</p>
+<table>
+<thead>
+<tr><th style="text-align:left">Config property</th><th style="text-align:left">Supported</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>acks</code></td><td style="text-align:left">Ignored</td><td style="text-align:left">Durability and quorum writes are configured at the namespace level</td></tr>
+<tr><td style="text-align:left"><code>batch.size</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>block.on.buffer.full</code></td><td style="text-align:left">Yes</td><td style="text-align:left">If true it will block producer, otherwise give error</td></tr>
+<tr><td style="text-align:left"><code>bootstrap.servers</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Needs to point to a single Pulsar service URL</td></tr>
+<tr><td style="text-align:left"><code>buffer.memory</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>client.id</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>compression.type</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Allows <code>gzip</code> and <code>lz4</code>. No <code>snappy</code>.</td></tr>
+<tr><td style="text-align:left"><code>connections.max.idle.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>interceptor.classes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>key.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>linger.ms</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Controls the group commit time when batching messages</td></tr>
+<tr><td style="text-align:left"><code>max.block.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>max.in.flight.requests.per.connection</code></td><td style="text-align:left">Ignored</td><td style="text-align:left">In Pulsar ordering is maintained even with multiple requests in flight</td></tr>
+<tr><td style="text-align:left"><code>max.request.size</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>metric.reporters</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>metrics.num.samples</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>metrics.sample.window.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>partitioner.class</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>receive.buffer.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>reconnect.backoff.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>request.timeout.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>retries</code></td><td style="text-align:left">Ignored</td><td style="text-align:left">Pulsar client retries with exponential backoff until the send timeout expires</td></tr>
+<tr><td style="text-align:left"><code>send.buffer.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>timeout.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+</tbody>
+</table>
+<h4><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-.83.42-1.64  [...]
+<p>APIs:</p>
+<table>
+<thead>
+<tr><th style="text-align:left">Consumer Method</th><th style="text-align:left">Supported</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>Set&lt;TopicPartition&gt; assignment()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Set&lt;String&gt; subscription()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void subscribe(Collection&lt;String&gt; topics)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void subscribe(Collection&lt;String&gt; topics, ConsumerRebalanceListener callback)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void assign(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void subscribe(Pattern pattern, ConsumerRebalanceListener callback)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void unsubscribe()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>ConsumerRecords&lt;K, V&gt; poll(long timeoutMillis)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void commitSync()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void commitSync(Map&lt;TopicPartition, OffsetAndMetadata&gt; offsets)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void commitAsync()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void commitAsync(OffsetCommitCallback callback)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void commitAsync(Map&lt;TopicPartition, OffsetAndMetadata&gt; offsets, OffsetCommitCallback callback)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void seek(TopicPartition partition, long offset)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void seekToBeginning(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void seekToEnd(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>long position(TopicPartition partition)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>OffsetAndMetadata committed(TopicPartition partition)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;MetricName, ? extends Metric&gt; metrics()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>List&lt;PartitionInfo&gt; partitionsFor(String topic)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;String, List&lt;PartitionInfo&gt;&gt; listTopics()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Set&lt;TopicPartition&gt; paused()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void pause(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void resume(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;TopicPartition, OffsetAndTimestamp&gt; offsetsForTimes(Map&lt;TopicPartition, Long&gt; timestampsToSearch)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;TopicPartition, Long&gt; beginningOffsets(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>Map&lt;TopicPartition, Long&gt; endOffsets(Collection&lt;TopicPartition&gt; partitions)</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void close()</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void close(long timeout, TimeUnit unit)</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>void wakeup()</code></td><td style="text-align:left">No</td><td style="text-align:left"></td></tr>
+</tbody>
+</table>
+<p>Properties:</p>
+<table>
+<thead>
+<tr><th style="text-align:left">Config property</th><th style="text-align:left">Supported</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>group.id</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Maps to a Pulsar subscription name</td></tr>
+<tr><td style="text-align:left"><code>max.poll.records</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>max.poll.interval.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left">Messages are &quot;pushed&quot; from broker</td></tr>
+<tr><td style="text-align:left"><code>session.timeout.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>heartbeat.interval.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>bootstrap.servers</code></td><td style="text-align:left">Yes</td><td style="text-align:left">Needs to point to a single Pulsar service URL</td></tr>
+<tr><td style="text-align:left"><code>enable.auto.commit</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>auto.commit.interval.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left">With auto-commit, acks are sent immediately to broker</td></tr>
+<tr><td style="text-align:left"><code>partition.assignment.strategy</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>auto.offset.reset</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>fetch.min.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>fetch.max.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>fetch.max.wait.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>metadata.max.age.ms</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>max.partition.fetch.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>send.buffer.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>receive.buffer.bytes</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+<tr><td style="text-align:left"><code>client.id</code></td><td style="text-align:left">Ignored</td><td style="text-align:left"></td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="custom-pulsar-configurations"></a><a href="#custom-pulsar-configurations" 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 [...]
+<p>You can configure Pulsar authentication provider directly from the Kafka properties.</p>
+<h3><a class="anchor" aria-hidden="true" id="pulsar-client-properties"></a><a href="#pulsar-client-properties" 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-. [...]
+<table>
+<thead>
+<tr><th style="text-align:left">Config property</th><th style="text-align:left">Default</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>pulsar.authentication.class</code></td><td style="text-align:left"></td><td style="text-align:left">Configure to auth provider. Eg. <code>org.apache.pulsar.client.impl.auth.AuthenticationTls</code></td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setUseTls-boolean-"><code>pulsar.use.tls</code></a></td><td style="text-align:left"><code>false</code></td><td style="text-align:left">Enable TLS transport encryption</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setTlsTrustCertsFilePath-java.lang.String-"><code>pulsar.tls.trust.certs.file.path</code></a></td><td style="text-align:left"></td><td style="text-align:left">Path for the TLS trust certificate store</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setTlsAllowInsecureConnection-boolean-"><code>pulsar.tls.allow.insecure.connection</code></a></td><td style="text-align:left"><code>false</code></td><td style="text-align:left">Accept self-signed certificates from brokers</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setOperationTimeout-int-java.util.concurrent.TimeUnit-"><code>pulsar.operation.timeout.ms</code></a></td><td style="text-align:left"><code>30000</code></td><td style="text-align:left">General operations timeout</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setStatsInterval-long-java.util.concurrent.TimeUnit-"><code>pulsar.stats.interval.seconds</code></a></td><td style="text-align:left"><code>60</code></td><td style="text-align:left">Pulsar client lib stats printing interval</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setIoThreads-int-"><code>pulsar.num.io.threads</code></a></td><td style="text-align:left"><code>1</code></td><td style="text-align:left">Number of Netty IO threads to use</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setConnectionsPerBroker-int-"><code>pulsar.connections.per.broker</code></a></td><td style="text-align:left"><code>1</code></td><td style="text-align:left">Max number of connection to open to each broker</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setUseTcpNoDelay-boolean-"><code>pulsar.use.tcp.nodelay</code></a></td><td style="text-align:left"><code>true</code></td><td style="text-align:left">TCP no-delay</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setConcurrentLookupRequest-int-"><code>pulsar.concurrent.lookup.requests</code></a></td><td style="text-align:left"><code>50000</code></td><td style="text-align:left">Max number of concurrent topic lookups</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ClientConfiguration.html#setMaxNumberOfRejectedRequestPerConnection-int-"><code>pulsar.max.number.rejected.request.per.connection</code></a></td><td style="text-align:left"><code>50</code></td><td style="text-align:left">Threshold of errors to forcefully close a connection</td></tr>
+</tbody>
+</table>
+<h3><a class="anchor" aria-hidden="true" id="pulsar-producer-properties"></a><a href="#pulsar-producer-properties" 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 12H [...]
+<table>
+<thead>
+<tr><th style="text-align:left">Config property</th><th style="text-align:left">Default</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setProducerName-java.lang.String-"><code>pulsar.producer.name</code></a></td><td style="text-align:left"></td><td style="text-align:left">Specify producer name</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setInitialSequenceId-long-"><code>pulsar.producer.initial.sequence.id</code></a></td><td style="text-align:left"></td><td style="text-align:left">Specify baseline for sequence id for this producer</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setMaxPendingMessages-int-"><code>pulsar.producer.max.pending.messages</code></a></td><td style="text-align:left"><code>1000</code></td><td style="text-align:left">Set the max size of the queue holding the messages pending to receive an acknowledgment from the broker.</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setMaxPendingMessagesAcrossPartitions-int-"><code>pulsar.producer.max.pending.messages.across.partitions</code></a></td><td style="text-align:left"><code>50000</code></td><td style="text-align:left">Set the number of max pending messages across all the partitions</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setBatchingEnabled-boolean-"><code>pulsar.producer.batching.enabled</code></a></td><td style="text-align:left"><code>true</code></td><td style="text-align:left">Control whether automatic batching of messages is enabled for the producer</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ProducerConfiguration.html#setBatchingMaxMessages-int-"><code>pulsar.producer.batching.max.messages</code></a></td><td style="text-align:left"><code>1000</code></td><td style="text-align:left">The maximum number of messages permitted in a batch</td></tr>
+</tbody>
+</table>
+<h3><a class="anchor" aria-hidden="true" id="pulsar-consumer-properties"></a><a href="#pulsar-consumer-properties" 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 12H [...]
+<table>
+<thead>
+<tr><th style="text-align:left">Config property</th><th style="text-align:left">Default</th><th style="text-align:left">Notes</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ConsumerConfiguration.html#setConsumerName-java.lang.String-"><code>pulsar.consumer.name</code></a></td><td style="text-align:left"></td><td style="text-align:left">Set the consumer name</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ConsumerConfiguration.html#setReceiverQueueSize-int-"><code>pulsar.consumer.receiver.queue.size</code></a></td><td style="text-align:left">1000</td><td style="text-align:left">Sets the size of the consumer receive queue</td></tr>
+<tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/org/apache/pulsar/client/api/ConsumerConfiguration.html#setMaxTotalReceiverQueueSizeAcrossPartitions-int-"><code>pulsar.consumer.total.receiver.queue.size.across.partitions</code></a></td><td style="text-align:left">50000</td><td style="text-align:left">Set the max total receiver queue size across partitons</td></tr>
+</tbody>
+</table>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/admin-api-schemas"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/adaptors-spark"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#using-the-pulsar-kafka-compatibility-wrapper">Using the Pulsar Kafka compa [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/adaptors-spark.html b/content/docs/en/2.1.0-incubating/adaptors-spark.html
new file mode 100644
index 0000000..ba0a015
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/adaptors-spark.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar adaptor for Apache Spark · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="The Spark Streaming receiver for Pulsar is a custom receiver that enables Apache [Spark Streaming](https://spark.apache.org/streaming/) to receive data from Pulsar."/><meta name="docsea [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Ada [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/adaptors-spark.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Pulsar adaptor for Apache Spark</h1></header><article><div><span><p>The Spark Streaming receiver for Pulsar is a custom receiver that enables [...]
+<p>An application can receive data in <a href="https://spark.apache.org/docs/latest/programming-guide.html#resilient-distributed-datasets-rdds">Resilient Distributed Dataset</a> (RDD) format via the Spark Streaming Pulsar receiver and can process it in a variety of ways.</p>
+<h2><a class="anchor" aria-hidden="true" id="prerequisites"></a><a href="#prerequisites" 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>To use the receiver, include a dependency for the <code>pulsar-spark</code> library in your Java configuration.</p>
+<h3><a class="anchor" aria-hidden="true" id="maven"></a><a href="#maven" 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>If you're using Maven, add this to your <code>pom.xml</code>:</p>
+<pre><code class="hljs css language-xml"><span class="hljs-comment">&lt;!-- in your &lt;properties&gt; block --&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">pulsar.version</span>&gt;</span>2.1.1-incubating<span class="hljs-tag">&lt;/<span class="hljs-name">pulsar.version</span>&gt;</span>
+
+<span class="hljs-comment">&lt;!-- in your &lt;dependencies&gt; block --&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.pulsar<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>pulsar-spark<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>${pulsar.version}<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="gradle"></a><a href="#gradle" 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>If you're using Gradle, add this to your <code>build.gradle</code> file:</p>
+<pre><code class="hljs css language-groovy"><span class="hljs-keyword">def</span> pulsarVersion = <span class="hljs-string">"2.1.1-incubating"</span>
+
+dependencies {
+    compile <span class="hljs-string">group:</span> <span class="hljs-string">'org.apache.pulsar'</span>, <span class="hljs-string">name:</span> <span class="hljs-string">'pulsar-spark'</span>, <span class="hljs-string">version:</span> pulsarVersion
+}
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="usage"></a><a href="#usage" 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>Pass an instance of <code>SparkStreamingPulsarReceiver</code> to the <code>receiverStream</code> method in <code>JavaStreamingContext</code>:</p>
+<pre><code class="hljs css language-java">SparkConf conf = <span class="hljs-keyword">new</span> SparkConf().setMaster(<span class="hljs-string">"local[*]"</span>).setAppName(<span class="hljs-string">"pulsar-spark"</span>);
+JavaStreamingContext jssc = <span class="hljs-keyword">new</span> JavaStreamingContext(conf, Durations.seconds(<span class="hljs-number">5</span>));
+
+ClientConfiguration clientConf = <span class="hljs-keyword">new</span> ClientConfiguration();
+ConsumerConfiguration consConf = <span class="hljs-keyword">new</span> ConsumerConfiguration();
+String url = <span class="hljs-string">"pulsar://localhost:6650/"</span>;
+String topic = <span class="hljs-string">"persistent://public/default/topic1"</span>;
+String subs = <span class="hljs-string">"sub1"</span>;
+
+JavaReceiverInputDStream&lt;<span class="hljs-keyword">byte</span>[]&gt; msgs = jssc
+        .receiverStream(<span class="hljs-keyword">new</span> SparkStreamingPulsarReceiver(clientConf, consConf, url, topic, subs));
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>You can find a complete example <a href="https://github.com/apache/incubator-pulsar/tree/master/pulsar-spark/src/test/java/org/apache/pulsar/spark/example/SparkStreamingPulsarReceiverExample.java">here</a>.
+In this example, the number of messages which contain the string &quot;Pulsar&quot; in received messages is counted.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/adaptors-kafka"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/adaptors-storm"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#prerequisites">Prerequisites</a><ul class="toc-headings"><li><a href="#maven" [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/adaptors-spark/index.html b/content/docs/en/2.1.0-incubating/adaptors-spark/index.html
new file mode 100644
index 0000000..ba0a015
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/adaptors-spark/index.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar adaptor for Apache Spark · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="The Spark Streaming receiver for Pulsar is a custom receiver that enables Apache [Spark Streaming](https://spark.apache.org/streaming/) to receive data from Pulsar."/><meta name="docsea [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Ada [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/adaptors-spark.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Pulsar adaptor for Apache Spark</h1></header><article><div><span><p>The Spark Streaming receiver for Pulsar is a custom receiver that enables [...]
+<p>An application can receive data in <a href="https://spark.apache.org/docs/latest/programming-guide.html#resilient-distributed-datasets-rdds">Resilient Distributed Dataset</a> (RDD) format via the Spark Streaming Pulsar receiver and can process it in a variety of ways.</p>
+<h2><a class="anchor" aria-hidden="true" id="prerequisites"></a><a href="#prerequisites" 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>To use the receiver, include a dependency for the <code>pulsar-spark</code> library in your Java configuration.</p>
+<h3><a class="anchor" aria-hidden="true" id="maven"></a><a href="#maven" 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>If you're using Maven, add this to your <code>pom.xml</code>:</p>
+<pre><code class="hljs css language-xml"><span class="hljs-comment">&lt;!-- in your &lt;properties&gt; block --&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">pulsar.version</span>&gt;</span>2.1.1-incubating<span class="hljs-tag">&lt;/<span class="hljs-name">pulsar.version</span>&gt;</span>
+
+<span class="hljs-comment">&lt;!-- in your &lt;dependencies&gt; block --&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.pulsar<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>pulsar-spark<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>${pulsar.version}<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="gradle"></a><a href="#gradle" 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>If you're using Gradle, add this to your <code>build.gradle</code> file:</p>
+<pre><code class="hljs css language-groovy"><span class="hljs-keyword">def</span> pulsarVersion = <span class="hljs-string">"2.1.1-incubating"</span>
+
+dependencies {
+    compile <span class="hljs-string">group:</span> <span class="hljs-string">'org.apache.pulsar'</span>, <span class="hljs-string">name:</span> <span class="hljs-string">'pulsar-spark'</span>, <span class="hljs-string">version:</span> pulsarVersion
+}
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="usage"></a><a href="#usage" 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>Pass an instance of <code>SparkStreamingPulsarReceiver</code> to the <code>receiverStream</code> method in <code>JavaStreamingContext</code>:</p>
+<pre><code class="hljs css language-java">SparkConf conf = <span class="hljs-keyword">new</span> SparkConf().setMaster(<span class="hljs-string">"local[*]"</span>).setAppName(<span class="hljs-string">"pulsar-spark"</span>);
+JavaStreamingContext jssc = <span class="hljs-keyword">new</span> JavaStreamingContext(conf, Durations.seconds(<span class="hljs-number">5</span>));
+
+ClientConfiguration clientConf = <span class="hljs-keyword">new</span> ClientConfiguration();
+ConsumerConfiguration consConf = <span class="hljs-keyword">new</span> ConsumerConfiguration();
+String url = <span class="hljs-string">"pulsar://localhost:6650/"</span>;
+String topic = <span class="hljs-string">"persistent://public/default/topic1"</span>;
+String subs = <span class="hljs-string">"sub1"</span>;
+
+JavaReceiverInputDStream&lt;<span class="hljs-keyword">byte</span>[]&gt; msgs = jssc
+        .receiverStream(<span class="hljs-keyword">new</span> SparkStreamingPulsarReceiver(clientConf, consConf, url, topic, subs));
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>You can find a complete example <a href="https://github.com/apache/incubator-pulsar/tree/master/pulsar-spark/src/test/java/org/apache/pulsar/spark/example/SparkStreamingPulsarReceiverExample.java">here</a>.
+In this example, the number of messages which contain the string &quot;Pulsar&quot; in received messages is counted.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/adaptors-kafka"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/adaptors-storm"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#prerequisites">Prerequisites</a><ul class="toc-headings"><li><a href="#maven" [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/adaptors-storm.html b/content/docs/en/2.1.0-incubating/adaptors-storm.html
new file mode 100644
index 0000000..bf1fb89
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/adaptors-storm.html
@@ -0,0 +1,182 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar adaptor for Apache Storm · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Pulsar Storm is an adaptor for integrating with [Apache Storm](http://storm.apache.org/) topologies. It provides core Storm implementations for sending and receiving data."/><meta name= [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Ada [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/adaptors-storm.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Pulsar adaptor for Apache Storm</h1></header><article><div><span><p>Pulsar Storm is an adaptor for integrating with <a href="http://storm.apa [...]
+<p>An application can inject data into a Storm topology via a generic Pulsar spout, as well as consume data from a Storm topology via a generic Pulsar bolt.</p>
+<h2><a class="anchor" aria-hidden="true" id="using-the-pulsar-storm-adaptor"></a><a href="#using-the-pulsar-storm-adaptor" 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 1 [...]
+<p>Include dependency for Pulsar Storm Adaptor:</p>
+<pre><code class="hljs css language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.pulsar<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>pulsar-storm<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>${pulsar.version}<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="pulsar-spout"></a><a href="#pulsar-spout" 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>The Pulsar Spout allows for the data published on a topic to be consumed by a Storm topology. It emits a Storm tuple based on the message received and the <code>MessageToValuesMapper</code> provided by the client.</p>
+<p>The tuples that fail to be processed by the downstream bolts will be re-injected by the spout with an exponential backoff, within a configurable timeout (the default is 60 seconds) or a configurable number of retries, whichever comes first, after which it is acknowledged by the consumer. Here's an example construction of a spout:</p>
+<pre><code class="hljs css language-java"><span class="hljs-comment">// Configure a Pulsar Client</span>
+ClientConfiguration clientConf = <span class="hljs-keyword">new</span> ClientConfiguration();
+
+<span class="hljs-comment">// Configure a Pulsar Consumer</span>
+ConsumerConfiguration consumerConf = <span class="hljs-keyword">new</span> ConsumerConfiguration();  
+
+<span class="hljs-meta">@SuppressWarnings</span>(<span class="hljs-string">"serial"</span>)
+MessageToValuesMapper messageToValuesMapper = <span class="hljs-keyword">new</span> MessageToValuesMapper() {
+
+    <span class="hljs-meta">@Override</span>
+    <span class="hljs-function"><span class="hljs-keyword">public</span> Values <span class="hljs-title">toValues</span><span class="hljs-params">(Message msg)</span> </span>{
+        <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> Values(<span class="hljs-keyword">new</span> String(msg.getData()));
+    }
+
+    <span class="hljs-meta">@Override</span>
+    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">declareOutputFields</span><span class="hljs-params">(OutputFieldsDeclarer declarer)</span> </span>{
+        <span class="hljs-comment">// declare the output fields</span>
+        declarer.declare(<span class="hljs-keyword">new</span> Fields(<span class="hljs-string">"string"</span>));
+    }
+};
+
+<span class="hljs-comment">// Configure a Pulsar Spout</span>
+PulsarSpoutConfiguration spoutConf = <span class="hljs-keyword">new</span> PulsarSpoutConfiguration();
+spoutConf.setServiceUrl(<span class="hljs-string">"pulsar://broker.messaging.usw.example.com:6650"</span>);
+spoutConf.setTopic(<span class="hljs-string">"persistent://my-property/usw/my-ns/my-topic1"</span>);
+spoutConf.setSubscriptionName(<span class="hljs-string">"my-subscriber-name1"</span>);
+spoutConf.setMessageToValuesMapper(messageToValuesMapper);
+
+<span class="hljs-comment">// Create a Pulsar Spout</span>
+PulsarSpout spout = <span class="hljs-keyword">new</span> PulsarSpout(spoutConf, clientConf, consumerConf);
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="pulsar-bolt"></a><a href="#pulsar-bolt" 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 [...]
+<p>The Pulsar bolt allows data in a Storm topology to be published on a topic. It publishes messages based on the Storm tuple received and the <code>TupleToMessageMapper</code> provided by the client.</p>
+<p>A partitioned topic can also be used to publish messages on different topics. In the implementation of the <code>TupleToMessageMapper</code>, a &quot;key&quot; will need to be provided in the message which will send the messages with the same key to the same topic. Here's an example bolt:</p>
+<pre><code class="hljs css language-java"><span class="hljs-comment">// Configure a Pulsar Client</span>
+ClientConfiguration clientConf = <span class="hljs-keyword">new</span> ClientConfiguration();
+
+<span class="hljs-comment">// Configure a Pulsar Producer  </span>
+ProducerConfiguration producerConf = <span class="hljs-keyword">new</span> ProducerConfiguration();
+
+<span class="hljs-meta">@SuppressWarnings</span>(<span class="hljs-string">"serial"</span>)
+TupleToMessageMapper tupleToMessageMapper = <span class="hljs-keyword">new</span> TupleToMessageMapper() {
+
+    <span class="hljs-meta">@Override</span>
+    <span class="hljs-function"><span class="hljs-keyword">public</span> Message <span class="hljs-title">toMessage</span><span class="hljs-params">(Tuple tuple)</span> </span>{
+        String receivedMessage = tuple.getString(<span class="hljs-number">0</span>);
+        <span class="hljs-comment">// message processing</span>
+        String processedMsg = receivedMessage + <span class="hljs-string">"-processed"</span>;
+        <span class="hljs-keyword">return</span> MessageBuilder.create().setContent(processedMsg.getBytes()).build();
+    }
+
+    <span class="hljs-meta">@Override</span>
+    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">declareOutputFields</span><span class="hljs-params">(OutputFieldsDeclarer declarer)</span> </span>{
+        <span class="hljs-comment">// declare the output fields</span>
+    }
+};
+
+<span class="hljs-comment">// Configure a Pulsar Bolt</span>
+PulsarBoltConfiguration boltConf = <span class="hljs-keyword">new</span> PulsarBoltConfiguration();
+boltConf.setServiceUrl(<span class="hljs-string">"pulsar://broker.messaging.usw.example.com:6650"</span>);
+boltConf.setTopic(<span class="hljs-string">"persistent://my-property/usw/my-ns/my-topic2"</span>);
+boltConf.setTupleToMessageMapper(tupleToMessageMapper);
+
+<span class="hljs-comment">// Create a Pulsar Bolt</span>
+PulsarBolt bolt = <span class="hljs-keyword">new</span> PulsarBolt(boltConf, clientConf);
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>You can find a complete example <a href="https://github.com/apache/incubator-pulsar/tree/master/pulsar-storm/src/test/java/org/apache/pulsar/storm/example/StormExample.java">here</a>.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/adaptors-spark"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/cookbooks-tiered-storage"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#using-the-pulsar-storm-adaptor">Using the Pulsar Storm Adaptor</a>< [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/adaptors-storm/index.html b/content/docs/en/2.1.0-incubating/adaptors-storm/index.html
new file mode 100644
index 0000000..bf1fb89
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/adaptors-storm/index.html
@@ -0,0 +1,182 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar adaptor for Apache Storm · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Pulsar Storm is an adaptor for integrating with [Apache Storm](http://storm.apache.org/) topologies. It provides core Storm implementations for sending and receiving data."/><meta name= [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Ada [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/adaptors-storm.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Pulsar adaptor for Apache Storm</h1></header><article><div><span><p>Pulsar Storm is an adaptor for integrating with <a href="http://storm.apa [...]
+<p>An application can inject data into a Storm topology via a generic Pulsar spout, as well as consume data from a Storm topology via a generic Pulsar bolt.</p>
+<h2><a class="anchor" aria-hidden="true" id="using-the-pulsar-storm-adaptor"></a><a href="#using-the-pulsar-storm-adaptor" 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 1 [...]
+<p>Include dependency for Pulsar Storm Adaptor:</p>
+<pre><code class="hljs css language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.pulsar<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>pulsar-storm<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>${pulsar.version}<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="pulsar-spout"></a><a href="#pulsar-spout" 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>The Pulsar Spout allows for the data published on a topic to be consumed by a Storm topology. It emits a Storm tuple based on the message received and the <code>MessageToValuesMapper</code> provided by the client.</p>
+<p>The tuples that fail to be processed by the downstream bolts will be re-injected by the spout with an exponential backoff, within a configurable timeout (the default is 60 seconds) or a configurable number of retries, whichever comes first, after which it is acknowledged by the consumer. Here's an example construction of a spout:</p>
+<pre><code class="hljs css language-java"><span class="hljs-comment">// Configure a Pulsar Client</span>
+ClientConfiguration clientConf = <span class="hljs-keyword">new</span> ClientConfiguration();
+
+<span class="hljs-comment">// Configure a Pulsar Consumer</span>
+ConsumerConfiguration consumerConf = <span class="hljs-keyword">new</span> ConsumerConfiguration();  
+
+<span class="hljs-meta">@SuppressWarnings</span>(<span class="hljs-string">"serial"</span>)
+MessageToValuesMapper messageToValuesMapper = <span class="hljs-keyword">new</span> MessageToValuesMapper() {
+
+    <span class="hljs-meta">@Override</span>
+    <span class="hljs-function"><span class="hljs-keyword">public</span> Values <span class="hljs-title">toValues</span><span class="hljs-params">(Message msg)</span> </span>{
+        <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> Values(<span class="hljs-keyword">new</span> String(msg.getData()));
+    }
+
+    <span class="hljs-meta">@Override</span>
+    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">declareOutputFields</span><span class="hljs-params">(OutputFieldsDeclarer declarer)</span> </span>{
+        <span class="hljs-comment">// declare the output fields</span>
+        declarer.declare(<span class="hljs-keyword">new</span> Fields(<span class="hljs-string">"string"</span>));
+    }
+};
+
+<span class="hljs-comment">// Configure a Pulsar Spout</span>
+PulsarSpoutConfiguration spoutConf = <span class="hljs-keyword">new</span> PulsarSpoutConfiguration();
+spoutConf.setServiceUrl(<span class="hljs-string">"pulsar://broker.messaging.usw.example.com:6650"</span>);
+spoutConf.setTopic(<span class="hljs-string">"persistent://my-property/usw/my-ns/my-topic1"</span>);
+spoutConf.setSubscriptionName(<span class="hljs-string">"my-subscriber-name1"</span>);
+spoutConf.setMessageToValuesMapper(messageToValuesMapper);
+
+<span class="hljs-comment">// Create a Pulsar Spout</span>
+PulsarSpout spout = <span class="hljs-keyword">new</span> PulsarSpout(spoutConf, clientConf, consumerConf);
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="pulsar-bolt"></a><a href="#pulsar-bolt" 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 [...]
+<p>The Pulsar bolt allows data in a Storm topology to be published on a topic. It publishes messages based on the Storm tuple received and the <code>TupleToMessageMapper</code> provided by the client.</p>
+<p>A partitioned topic can also be used to publish messages on different topics. In the implementation of the <code>TupleToMessageMapper</code>, a &quot;key&quot; will need to be provided in the message which will send the messages with the same key to the same topic. Here's an example bolt:</p>
+<pre><code class="hljs css language-java"><span class="hljs-comment">// Configure a Pulsar Client</span>
+ClientConfiguration clientConf = <span class="hljs-keyword">new</span> ClientConfiguration();
+
+<span class="hljs-comment">// Configure a Pulsar Producer  </span>
+ProducerConfiguration producerConf = <span class="hljs-keyword">new</span> ProducerConfiguration();
+
+<span class="hljs-meta">@SuppressWarnings</span>(<span class="hljs-string">"serial"</span>)
+TupleToMessageMapper tupleToMessageMapper = <span class="hljs-keyword">new</span> TupleToMessageMapper() {
+
+    <span class="hljs-meta">@Override</span>
+    <span class="hljs-function"><span class="hljs-keyword">public</span> Message <span class="hljs-title">toMessage</span><span class="hljs-params">(Tuple tuple)</span> </span>{
+        String receivedMessage = tuple.getString(<span class="hljs-number">0</span>);
+        <span class="hljs-comment">// message processing</span>
+        String processedMsg = receivedMessage + <span class="hljs-string">"-processed"</span>;
+        <span class="hljs-keyword">return</span> MessageBuilder.create().setContent(processedMsg.getBytes()).build();
+    }
+
+    <span class="hljs-meta">@Override</span>
+    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">declareOutputFields</span><span class="hljs-params">(OutputFieldsDeclarer declarer)</span> </span>{
+        <span class="hljs-comment">// declare the output fields</span>
+    }
+};
+
+<span class="hljs-comment">// Configure a Pulsar Bolt</span>
+PulsarBoltConfiguration boltConf = <span class="hljs-keyword">new</span> PulsarBoltConfiguration();
+boltConf.setServiceUrl(<span class="hljs-string">"pulsar://broker.messaging.usw.example.com:6650"</span>);
+boltConf.setTopic(<span class="hljs-string">"persistent://my-property/usw/my-ns/my-topic2"</span>);
+boltConf.setTupleToMessageMapper(tupleToMessageMapper);
+
+<span class="hljs-comment">// Create a Pulsar Bolt</span>
+PulsarBolt bolt = <span class="hljs-keyword">new</span> PulsarBolt(boltConf, clientConf);
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>You can find a complete example <a href="https://github.com/apache/incubator-pulsar/tree/master/pulsar-storm/src/test/java/org/apache/pulsar/storm/example/StormExample.java">here</a>.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/adaptors-spark"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/cookbooks-tiered-storage"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#using-the-pulsar-storm-adaptor">Using the Pulsar Storm Adaptor</a>< [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/admin-api-brokers.html b/content/docs/en/2.1.0-incubating/admin-api-brokers.html
new file mode 100644
index 0000000..5132f55
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/admin-api-brokers.html
@@ -0,0 +1,196 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Managing Brokers · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Pulsar brokers consist of two components:"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Managing Brokers [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Adm [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/admin-api-brokers.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Managing Brokers</h1></header><article><div><span><p>Pulsar brokers consist of two components:</p>
+<ol>
+<li>An HTTP server exposing a <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ interface administration and <a href="/docs/en/2.1.0-incubating/reference-terminology#topic">topic</a> lookup.</li>
+<li>A dispatcher that handles all Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#message">message</a> transfers.</li>
+</ol>
+<p><a href="/docs/en/2.1.0-incubating/reference-terminology#broker">Brokers</a> can be managed via:</p>
+<ul>
+<li>The <a href="/docs/en/2.1.0-incubating/pulsar-admin#brokers"><code>brokers</code></a> command of the <a href="/docs/en/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool</li>
+<li>The <code>/admin/v2/brokers</code> endpoint of the admin <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API</li>
+<li>The <code>brokers</code> method of the <a href="https://pulsar.incubator.apache.org/api/admin/org/apache/pulsar/client/admin/PulsarAdmin.html">PulsarAdmin</a>
+ object in the <a href="/docs/en/2.1.0-incubating/client-libraries-java">Java API</a></li>
+</ul>
+<p>In addition to being configurable when you start them up, brokers can also be <a href="#dynamic-broker-configuration">dynamically configured</a>.</p>
+<blockquote>
+<p>See the <a href="/docs/en/2.1.0-incubating/reference-configuration#broker">Configuration</a> page for a full listing of broker-specific configuration parameters.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="brokers-resources"></a><a href="#brokers-resources" 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- [...]
+<h3><a class="anchor" aria-hidden="true" id="list-active-brokers"></a><a href="#list-active-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.2 [...]
+<p>Fetch all available active brokers that are serving traffic.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin"></a><a href="#pulsar-admin" 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. [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin brokers list use</span>
+</code></pre>
+<pre><code class="hljs"><span class="hljs-selector-tag">broker1</span><span class="hljs-selector-class">.use</span><span class="hljs-selector-class">.org</span><span class="hljs-selector-class">.com</span><span class="hljs-selector-pseudo">:8080</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest"></a><a href="#rest" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getActiveBrokers"><b>GET</b> <i>/admin/v2/brokers/:cluster</i></a>
+</p>
+<h6><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<pre><code class="hljs css language-java">admin.brokers().getActiveBrokers(clusterName)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="list-of-namespaces-owned-by-a-given-broker"></a><a href="#list-of-namespaces-owned-by-a-given-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-1v1h1c [...]
+<p>It finds all namespaces which are owned and served by a given broker.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli"></a><a href="#cli" 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.2 [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin brokers namespaces use \</span>
+  --url broker1.use.org.com:8080
+</code></pre>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"my-property/use/my-ns/0x00000000_0xffffffff"</span>: {
+    <span class="hljs-attr">"broker_assignment"</span>: <span class="hljs-string">"shared"</span>,
+    <span class="hljs-attr">"is_controlled"</span>: <span class="hljs-literal">false</span>,
+    <span class="hljs-attr">"is_active"</span>: <span class="hljs-literal">true</span>
+  }
+}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-1"></a><a href="#rest-1" 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="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getOwnedNamespaes"><b>GET</b> <i>/admin/v2/brokers/:cluster/:broker/ownedNamespaces</i></a>
+</p>
+<h6><a class="anchor" aria-hidden="true" id="java-1"></a><a href="#java-1" 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. [...]
+<pre><code class="hljs css language-java">admin.brokers().getOwnedNamespaces(cluster,brokerUrl);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="dynamic-broker-configuration"></a><a href="#dynamic-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 [...]
+<p>One way to configure a Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#broker">broker</a> is to supply a <a href="/docs/en/2.1.0-incubating/reference-configuration#broker">configuration</a> when the broker is <a href="/docs/en/2.1.0-incubating/reference-cli-tools#pulsar-broker">started up</a>.</p>
+<p>But since all broker configuration in Pulsar is stored in ZooKeeper, configuration values can also be dynamically updated <em>while the broker is running</em>. When you update broker configuration dynamically, ZooKeeper will notify the broker of the change and the broker will then override any existing configuration values.</p>
+<ul>
+<li>The <a href="/docs/en/2.1.0-incubating/pulsar-admin#brokers"><code>brokers</code></a> command for the <a href="/docs/en/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool has a variety of subcommands that enable you to manipulate a broker's configuration dynamically, enabling you to <a href="#update-dynamic-configuration">update config values</a> and more.</li>
+<li>In the Pulsar admin <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API, dynamic configuration is managed through the <code>/admin/v2/brokers/configuration</code> endpoint.</li>
+</ul>
+<h3><a class="anchor" aria-hidden="true" id="update-dynamic-configuration"></a><a href="#update-dynamic-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 [...]
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-1"></a><a href="#pulsar-admin-1" 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>The <a href="/docs/en/2.1.0-incubating/pulsar-admin#brokers-update-dynamic-config"><code>update-dynamic-config</code></a> subcommand will update existing configuration. It takes two arguments: the name of the parameter and the new value. Here's an example for the <a href="/docs/en/2.1.0-incubating/reference-configuration#broker-brokerShutdownTimeoutMs"><code>brokerShutdownTimeoutMs</code></a> parameter:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin brokers update-dynamic-config brokerShutdownTimeoutMs 100</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api"></a><a href="#rest-api" 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  [...]
+<p><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/updateDynamicConfiguration"><b>POST</b> <i>/admin/v2/brokers/configuration/:configName/:configValue</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-2"></a><a href="#java-2" 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. [...]
+<pre><code class="hljs css language-java">admin.brokers().updateDynamicConfiguration(configName, configValue);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="list-updated-values"></a><a href="#list-updated-values" 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.2 [...]
+<p>Fetch a list of all potentially updatable configuration parameters.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-2"></a><a href="#pulsar-admin-2" 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- [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin brokers list-dynamic-config</span>
+brokerShutdownTimeoutMs
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getDynamicConfigurationName"><b>GET</b> <i>/admin/v2/brokers/configuration</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-3"></a><a href="#java-3" 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. [...]
+<pre><code class="hljs css language-java">admin.brokers().getDynamicConfigurationNames();
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="list-all"></a><a href="#list-all" 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  [...]
+<p>Fetch a list of all parameters that have been dynamically updated.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-3"></a><a href="#pulsar-admin-3" 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- [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin brokers get-all-dynamic-config</span>
+brokerShutdownTimeoutMs:100
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-2"></a><a href="#rest-api-2" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getAllDynamicConfigurations"><b>GET</b> <i>/admin/v2/brokers/configuration/values</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-4"></a><a href="#java-4" 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. [...]
+<pre><code class="hljs css language-java">admin.brokers().getAllDynamicConfigurations();
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/admin-api-tenants"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/admin-api-namespaces"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#brokers-resources">Brokers resources</a><ul class="toc-headings"><li [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/admin-api-brokers/index.html b/content/docs/en/2.1.0-incubating/admin-api-brokers/index.html
new file mode 100644
index 0000000..5132f55
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/admin-api-brokers/index.html
@@ -0,0 +1,196 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Managing Brokers · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Pulsar brokers consist of two components:"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Managing Brokers [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Adm [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/admin-api-brokers.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Managing Brokers</h1></header><article><div><span><p>Pulsar brokers consist of two components:</p>
+<ol>
+<li>An HTTP server exposing a <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ interface administration and <a href="/docs/en/2.1.0-incubating/reference-terminology#topic">topic</a> lookup.</li>
+<li>A dispatcher that handles all Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#message">message</a> transfers.</li>
+</ol>
+<p><a href="/docs/en/2.1.0-incubating/reference-terminology#broker">Brokers</a> can be managed via:</p>
+<ul>
+<li>The <a href="/docs/en/2.1.0-incubating/pulsar-admin#brokers"><code>brokers</code></a> command of the <a href="/docs/en/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool</li>
+<li>The <code>/admin/v2/brokers</code> endpoint of the admin <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API</li>
+<li>The <code>brokers</code> method of the <a href="https://pulsar.incubator.apache.org/api/admin/org/apache/pulsar/client/admin/PulsarAdmin.html">PulsarAdmin</a>
+ object in the <a href="/docs/en/2.1.0-incubating/client-libraries-java">Java API</a></li>
+</ul>
+<p>In addition to being configurable when you start them up, brokers can also be <a href="#dynamic-broker-configuration">dynamically configured</a>.</p>
+<blockquote>
+<p>See the <a href="/docs/en/2.1.0-incubating/reference-configuration#broker">Configuration</a> page for a full listing of broker-specific configuration parameters.</p>
+</blockquote>
+<h2><a class="anchor" aria-hidden="true" id="brokers-resources"></a><a href="#brokers-resources" 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- [...]
+<h3><a class="anchor" aria-hidden="true" id="list-active-brokers"></a><a href="#list-active-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.2 [...]
+<p>Fetch all available active brokers that are serving traffic.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin"></a><a href="#pulsar-admin" 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. [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin brokers list use</span>
+</code></pre>
+<pre><code class="hljs"><span class="hljs-selector-tag">broker1</span><span class="hljs-selector-class">.use</span><span class="hljs-selector-class">.org</span><span class="hljs-selector-class">.com</span><span class="hljs-selector-pseudo">:8080</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest"></a><a href="#rest" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getActiveBrokers"><b>GET</b> <i>/admin/v2/brokers/:cluster</i></a>
+</p>
+<h6><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<pre><code class="hljs css language-java">admin.brokers().getActiveBrokers(clusterName)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="list-of-namespaces-owned-by-a-given-broker"></a><a href="#list-of-namespaces-owned-by-a-given-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-1v1h1c [...]
+<p>It finds all namespaces which are owned and served by a given broker.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli"></a><a href="#cli" 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.2 [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin brokers namespaces use \</span>
+  --url broker1.use.org.com:8080
+</code></pre>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"my-property/use/my-ns/0x00000000_0xffffffff"</span>: {
+    <span class="hljs-attr">"broker_assignment"</span>: <span class="hljs-string">"shared"</span>,
+    <span class="hljs-attr">"is_controlled"</span>: <span class="hljs-literal">false</span>,
+    <span class="hljs-attr">"is_active"</span>: <span class="hljs-literal">true</span>
+  }
+}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-1"></a><a href="#rest-1" 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="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getOwnedNamespaes"><b>GET</b> <i>/admin/v2/brokers/:cluster/:broker/ownedNamespaces</i></a>
+</p>
+<h6><a class="anchor" aria-hidden="true" id="java-1"></a><a href="#java-1" 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. [...]
+<pre><code class="hljs css language-java">admin.brokers().getOwnedNamespaces(cluster,brokerUrl);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="dynamic-broker-configuration"></a><a href="#dynamic-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 [...]
+<p>One way to configure a Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#broker">broker</a> is to supply a <a href="/docs/en/2.1.0-incubating/reference-configuration#broker">configuration</a> when the broker is <a href="/docs/en/2.1.0-incubating/reference-cli-tools#pulsar-broker">started up</a>.</p>
+<p>But since all broker configuration in Pulsar is stored in ZooKeeper, configuration values can also be dynamically updated <em>while the broker is running</em>. When you update broker configuration dynamically, ZooKeeper will notify the broker of the change and the broker will then override any existing configuration values.</p>
+<ul>
+<li>The <a href="/docs/en/2.1.0-incubating/pulsar-admin#brokers"><code>brokers</code></a> command for the <a href="/docs/en/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool has a variety of subcommands that enable you to manipulate a broker's configuration dynamically, enabling you to <a href="#update-dynamic-configuration">update config values</a> and more.</li>
+<li>In the Pulsar admin <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API, dynamic configuration is managed through the <code>/admin/v2/brokers/configuration</code> endpoint.</li>
+</ul>
+<h3><a class="anchor" aria-hidden="true" id="update-dynamic-configuration"></a><a href="#update-dynamic-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 [...]
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-1"></a><a href="#pulsar-admin-1" 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>The <a href="/docs/en/2.1.0-incubating/pulsar-admin#brokers-update-dynamic-config"><code>update-dynamic-config</code></a> subcommand will update existing configuration. It takes two arguments: the name of the parameter and the new value. Here's an example for the <a href="/docs/en/2.1.0-incubating/reference-configuration#broker-brokerShutdownTimeoutMs"><code>brokerShutdownTimeoutMs</code></a> parameter:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin brokers update-dynamic-config brokerShutdownTimeoutMs 100</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api"></a><a href="#rest-api" 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  [...]
+<p><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/updateDynamicConfiguration"><b>POST</b> <i>/admin/v2/brokers/configuration/:configName/:configValue</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-2"></a><a href="#java-2" 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. [...]
+<pre><code class="hljs css language-java">admin.brokers().updateDynamicConfiguration(configName, configValue);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="list-updated-values"></a><a href="#list-updated-values" 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.2 [...]
+<p>Fetch a list of all potentially updatable configuration parameters.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-2"></a><a href="#pulsar-admin-2" 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- [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin brokers list-dynamic-config</span>
+brokerShutdownTimeoutMs
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getDynamicConfigurationName"><b>GET</b> <i>/admin/v2/brokers/configuration</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-3"></a><a href="#java-3" 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. [...]
+<pre><code class="hljs css language-java">admin.brokers().getDynamicConfigurationNames();
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="list-all"></a><a href="#list-all" 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  [...]
+<p>Fetch a list of all parameters that have been dynamically updated.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-3"></a><a href="#pulsar-admin-3" 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- [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin brokers get-all-dynamic-config</span>
+brokerShutdownTimeoutMs:100
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-2"></a><a href="#rest-api-2" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getAllDynamicConfigurations"><b>GET</b> <i>/admin/v2/brokers/configuration/values</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-4"></a><a href="#java-4" 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. [...]
+<pre><code class="hljs css language-java">admin.brokers().getAllDynamicConfigurations();
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/admin-api-tenants"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/admin-api-namespaces"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#brokers-resources">Brokers resources</a><ul class="toc-headings"><li [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/admin-api-clusters.html b/content/docs/en/2.1.0-incubating/admin-api-clusters.html
new file mode 100644
index 0000000..416ceed
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/admin-api-clusters.html
@@ -0,0 +1,240 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Managing Clusters · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Pulsar clusters consist of one or more Pulsar [brokers](/docs/en/2.1.0-incubating/reference-terminology#broker), one or more [BookKeeper](/docs/en/2.1.0-incubating/reference-terminology#bookkeeper)"/ [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Adm [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/admin-api-clusters.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Managing Clusters</h1></header><article><div><span><p>Pulsar clusters consist of one or more Pulsar <a href="/docs/en/2.1.0-incubating/re [...]
+servers (aka <a href="/docs/en/2.1.0-incubating/reference-terminology#bookie">bookies</a>), and a <a href="https://zookeeper.apache.org">ZooKeeper</a> cluster that provides configuration and coordination management.</p>
+<p>Clusters can be managed via:</p>
+<ul>
+<li>The <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters"><code>clusters</code></a> command of the <a href="/docs/en/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool</li>
+<li>The <code>/admin/v2/clusters</code> endpoint of the admin <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API</li>
+<li>The <code>clusters</code> method of the <a href="https://pulsar.incubator.apache.org/api/admin/org/apache/pulsar/client/admin/PulsarAdmin">PulsarAdmin</a>
+ object in the <a href="/docs/en/2.1.0-incubating/client-libraries-java">Java API</a></li>
+</ul>
+<h2><a class="anchor" aria-hidden="true" id="clusters-resources"></a><a href="#clusters-resources" 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- [...]
+<h3><a class="anchor" aria-hidden="true" id="provision"></a><a href="#provision" 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>New clusters can be provisioned using the admin interface.</p>
+<blockquote>
+<p>Please note that this operation requires superuser privileges.</p>
+</blockquote>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin"></a><a href="#pulsar-admin" 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>You can provision a new cluster using the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-create"><code>create</code></a> subcommand. Here's an example:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin clusters create cluster-1 \</span>
+  --url http://my-cluster.org.com:8080 \
+  --broker-url pulsar://my-cluster.org.com:6650
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api"></a><a href="#rest-api" 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  [...]
+<p><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/createCluster"><b>PUT</b> <i>/admin/v2/clusters/:cluster</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<pre><code class="hljs css language-java">ClusterData clusterData = <span class="hljs-keyword">new</span> ClusterData(
+        serviceUrl,
+        serviceUrlTls,
+        brokerServiceUrl,
+        brokerServiceUrlTls
+);
+admin.clusters().createCluster(clusterName, clusterData);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="initialize-cluster-metadata"></a><a href="#initialize-cluster-metadata" 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 1 [...]
+<p>When provision a new cluster, you need to initialize that cluster's <a href="/docs/en/2.1.0-incubating/concepts-architecture-overview#metadata-store">metadata</a>. When initializing cluster metadata, you need to specify all of the following:</p>
+<ul>
+<li>The name of the cluster</li>
+<li>The local ZooKeeper connection string for the cluster</li>
+<li>The global ZooKeeper connection string for the entire instance</li>
+<li>The web service URL for the cluster</li>
+<li>A broker service URL enabling interaction with the <a href="/docs/en/2.1.0-incubating/reference-terminology#broker">brokers</a> in the cluster</li>
+</ul>
+<p>You must initialize cluster metadata <em>before</em> starting up any <a href="/docs/en/2.1.0-incubating/admin-api-brokers">brokers</a> that will belong to the cluster.</p>
+<blockquote>
+<h4><a class="anchor" aria-hidden="true" id="no-cluster-metadata-initialization-through-the-rest-api-or-the-java-admin-api"></a><a href="#no-cluster-metadata-initialization-through-the-rest-api-or-the-java-admin-api" 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.2 [...]
+<p>Unlike most other admin functions in Pulsar, cluster metadata initialization cannot be performed via the admin REST API
+or the admin Java client, as metadata initialization involves communicating with ZooKeeper directly.
+Instead, you can use the <a href="/docs/en/2.1.0-incubating/reference-cli-tools#pulsar"><code>pulsar</code></a> CLI tool, in particular
+the <a href="/docs/en/2.1.0-incubating/reference-cli-tools#pulsar-initialize-cluster-metadata"><code>initialize-cluster-metadata</code></a> command.</p>
+</blockquote>
+<p>Here's an example cluster metadata initialization command:</p>
+<pre><code class="hljs css language-shell">bin/pulsar initialize-cluster-metadata \
+  --cluster us-west \
+  --zookeeper zk1.us-west.example.com:2181 \
+  --global-zookeeper zk1.us-west.example.com:2184 \
+  --web-service-url http://pulsar.us-west.example.com:8080/ \
+  --web-service-url-tls https://pulsar.us-west.example.com:8443/ \
+  --broker-service-url pulsar://pulsar.us-west.example.com:6650/ \
+  --broker-service-url-tls pulsar+ssl://pulsar.us-west.example.com:6651/
+</code></pre>
+<p>You'll need to use <code>--*-tls</code> flags only if you're using <a href="/docs/en/2.1.0-incubating/security-tls-authentication">TLS authentication</a> in your instance.</p>
+<h3><a class="anchor" aria-hidden="true" id="get-configuration"></a><a href="#get-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.22-2- [...]
+<p>You can fetch the <a href="/docs/en/2.1.0-incubating/reference-configuration">configuration</a> for an existing cluster at any time.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-1"></a><a href="#pulsar-admin-1" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-get"><code>get</code></a> subcommand and specify the name of the cluster. Here's an example:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin clusters get cluster-1</span>
+{
+    "serviceUrl": "http://my-cluster.org.com:8080/",
+    "serviceUrlTls": null,
+    "brokerServiceUrl": "pulsar://my-cluster.org.com:6650/",
+    "brokerServiceUrlTls": null
+    "peerClusterNames": null
+}
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getCluster"><b>GET</b> <i>/admin/v2/clusters/:cluster</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-1"></a><a href="#java-1" 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. [...]
+<pre><code class="hljs css language-java">admin.clusters().getCluster(clusterName);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="update"></a><a href="#update" 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>You can update the configuration for an existing cluster at any time.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-2"></a><a href="#pulsar-admin-2" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-update"><code>update</code></a> subcommand and specify new configuration values using flags.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin clusters update cluster-1 \</span>
+  --url http://my-cluster.org.com:4081 \
+  --broker-url pulsar://my-cluster.org.com:3350
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest"></a><a href="#rest" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/updateCluster"><b>POST</b> <i>/admin/v2/clusters/:cluster</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-2"></a><a href="#java-2" 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. [...]
+<pre><code class="hljs css language-java">ClusterData clusterData = <span class="hljs-keyword">new</span> ClusterData(
+        serviceUrl,
+        serviceUrlTls,
+        brokerServiceUrl,
+        brokerServiceUrlTls
+);
+admin.clusters().updateCluster(clusterName, clusterData);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="delete"></a><a href="#delete" 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>Clusters can be deleted from a Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#instance">instance</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-3"></a><a href="#pulsar-admin-3" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-delete"><code>delete</code></a> subcommand and specify the name of the cluster.</p>
+<pre><code class="hljs">$ pulsar-admin clusters <span class="hljs-keyword">delete</span> <span class="hljs-keyword">cluster</span><span class="hljs-number">-1</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-2"></a><a href="#rest-api-2" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/deleteCluster"><b>DELETE</b> <i>/admin/v2/clusters/:cluster</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-3"></a><a href="#java-3" 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. [...]
+<pre><code class="hljs css language-java">admin.clusters().deleteCluster(clusterName);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="list"></a><a href="#list" 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>You can fetch a list of all clusters in a Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#instance">instance</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-4"></a><a href="#pulsar-admin-4" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-list"><code>list</code></a> subcommand.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin clusters list</span>
+cluster-1
+cluster-2
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-3"></a><a href="#rest-api-3" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getClusters"><b>GET</b> <i>/admin/v2/clusters</i></a>
+</p>
+<h6><a class="anchor" aria-hidden="true" id="java-4"></a><a href="#java-4" 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. [...]
+<pre><code class="hljs css language-java">admin.clusters().getClusters();
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="update-peer-cluster-data"></a><a href="#update-peer-cluster-data" 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-. [...]
+<p>Peer clusters can be configured for a given cluster in a Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#instance">instance</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-5"></a><a href="#pulsar-admin-5" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-update-peer-clusters"><code>update-peer-clusters</code></a> subcommand and specify the list of peer-cluster names.</p>
+<pre><code class="hljs">$ pulsar-admin <span class="hljs-keyword">update</span>-peer-clusters <span class="hljs-keyword">cluster</span><span class="hljs-number">-1</span> --peer-clusters <span class="hljs-keyword">cluster</span><span class="hljs-number">-2</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-4"></a><a href="#rest-api-4" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/setPeerClusterNames"><b>POST</b> <i>/admin/v2/clusters/:cluster/peers</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-5"></a><a href="#java-5" 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. [...]
+<pre><code class="hljs css language-java">admin.clusters().updatePeerClusterNames(clusterName, peerClusterList);
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/admin-api-overview"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/admin-api-tenants"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#clusters-resources">Clusters resources</a><ul class="toc-headings"><li [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/admin-api-clusters/index.html b/content/docs/en/2.1.0-incubating/admin-api-clusters/index.html
new file mode 100644
index 0000000..416ceed
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/admin-api-clusters/index.html
@@ -0,0 +1,240 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Managing Clusters · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Pulsar clusters consist of one or more Pulsar [brokers](/docs/en/2.1.0-incubating/reference-terminology#broker), one or more [BookKeeper](/docs/en/2.1.0-incubating/reference-terminology#bookkeeper)"/ [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Adm [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/admin-api-clusters.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Managing Clusters</h1></header><article><div><span><p>Pulsar clusters consist of one or more Pulsar <a href="/docs/en/2.1.0-incubating/re [...]
+servers (aka <a href="/docs/en/2.1.0-incubating/reference-terminology#bookie">bookies</a>), and a <a href="https://zookeeper.apache.org">ZooKeeper</a> cluster that provides configuration and coordination management.</p>
+<p>Clusters can be managed via:</p>
+<ul>
+<li>The <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters"><code>clusters</code></a> command of the <a href="/docs/en/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool</li>
+<li>The <code>/admin/v2/clusters</code> endpoint of the admin <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API</li>
+<li>The <code>clusters</code> method of the <a href="https://pulsar.incubator.apache.org/api/admin/org/apache/pulsar/client/admin/PulsarAdmin">PulsarAdmin</a>
+ object in the <a href="/docs/en/2.1.0-incubating/client-libraries-java">Java API</a></li>
+</ul>
+<h2><a class="anchor" aria-hidden="true" id="clusters-resources"></a><a href="#clusters-resources" 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- [...]
+<h3><a class="anchor" aria-hidden="true" id="provision"></a><a href="#provision" 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>New clusters can be provisioned using the admin interface.</p>
+<blockquote>
+<p>Please note that this operation requires superuser privileges.</p>
+</blockquote>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin"></a><a href="#pulsar-admin" 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>You can provision a new cluster using the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-create"><code>create</code></a> subcommand. Here's an example:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin clusters create cluster-1 \</span>
+  --url http://my-cluster.org.com:8080 \
+  --broker-url pulsar://my-cluster.org.com:6650
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api"></a><a href="#rest-api" 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  [...]
+<p><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/createCluster"><b>PUT</b> <i>/admin/v2/clusters/:cluster</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<pre><code class="hljs css language-java">ClusterData clusterData = <span class="hljs-keyword">new</span> ClusterData(
+        serviceUrl,
+        serviceUrlTls,
+        brokerServiceUrl,
+        brokerServiceUrlTls
+);
+admin.clusters().createCluster(clusterName, clusterData);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="initialize-cluster-metadata"></a><a href="#initialize-cluster-metadata" 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 1 [...]
+<p>When provision a new cluster, you need to initialize that cluster's <a href="/docs/en/2.1.0-incubating/concepts-architecture-overview#metadata-store">metadata</a>. When initializing cluster metadata, you need to specify all of the following:</p>
+<ul>
+<li>The name of the cluster</li>
+<li>The local ZooKeeper connection string for the cluster</li>
+<li>The global ZooKeeper connection string for the entire instance</li>
+<li>The web service URL for the cluster</li>
+<li>A broker service URL enabling interaction with the <a href="/docs/en/2.1.0-incubating/reference-terminology#broker">brokers</a> in the cluster</li>
+</ul>
+<p>You must initialize cluster metadata <em>before</em> starting up any <a href="/docs/en/2.1.0-incubating/admin-api-brokers">brokers</a> that will belong to the cluster.</p>
+<blockquote>
+<h4><a class="anchor" aria-hidden="true" id="no-cluster-metadata-initialization-through-the-rest-api-or-the-java-admin-api"></a><a href="#no-cluster-metadata-initialization-through-the-rest-api-or-the-java-admin-api" 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.2 [...]
+<p>Unlike most other admin functions in Pulsar, cluster metadata initialization cannot be performed via the admin REST API
+or the admin Java client, as metadata initialization involves communicating with ZooKeeper directly.
+Instead, you can use the <a href="/docs/en/2.1.0-incubating/reference-cli-tools#pulsar"><code>pulsar</code></a> CLI tool, in particular
+the <a href="/docs/en/2.1.0-incubating/reference-cli-tools#pulsar-initialize-cluster-metadata"><code>initialize-cluster-metadata</code></a> command.</p>
+</blockquote>
+<p>Here's an example cluster metadata initialization command:</p>
+<pre><code class="hljs css language-shell">bin/pulsar initialize-cluster-metadata \
+  --cluster us-west \
+  --zookeeper zk1.us-west.example.com:2181 \
+  --global-zookeeper zk1.us-west.example.com:2184 \
+  --web-service-url http://pulsar.us-west.example.com:8080/ \
+  --web-service-url-tls https://pulsar.us-west.example.com:8443/ \
+  --broker-service-url pulsar://pulsar.us-west.example.com:6650/ \
+  --broker-service-url-tls pulsar+ssl://pulsar.us-west.example.com:6651/
+</code></pre>
+<p>You'll need to use <code>--*-tls</code> flags only if you're using <a href="/docs/en/2.1.0-incubating/security-tls-authentication">TLS authentication</a> in your instance.</p>
+<h3><a class="anchor" aria-hidden="true" id="get-configuration"></a><a href="#get-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.22-2- [...]
+<p>You can fetch the <a href="/docs/en/2.1.0-incubating/reference-configuration">configuration</a> for an existing cluster at any time.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-1"></a><a href="#pulsar-admin-1" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-get"><code>get</code></a> subcommand and specify the name of the cluster. Here's an example:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin clusters get cluster-1</span>
+{
+    "serviceUrl": "http://my-cluster.org.com:8080/",
+    "serviceUrlTls": null,
+    "brokerServiceUrl": "pulsar://my-cluster.org.com:6650/",
+    "brokerServiceUrlTls": null
+    "peerClusterNames": null
+}
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getCluster"><b>GET</b> <i>/admin/v2/clusters/:cluster</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-1"></a><a href="#java-1" 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. [...]
+<pre><code class="hljs css language-java">admin.clusters().getCluster(clusterName);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="update"></a><a href="#update" 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>You can update the configuration for an existing cluster at any time.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-2"></a><a href="#pulsar-admin-2" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-update"><code>update</code></a> subcommand and specify new configuration values using flags.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin clusters update cluster-1 \</span>
+  --url http://my-cluster.org.com:4081 \
+  --broker-url pulsar://my-cluster.org.com:3350
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest"></a><a href="#rest" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/updateCluster"><b>POST</b> <i>/admin/v2/clusters/:cluster</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-2"></a><a href="#java-2" 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. [...]
+<pre><code class="hljs css language-java">ClusterData clusterData = <span class="hljs-keyword">new</span> ClusterData(
+        serviceUrl,
+        serviceUrlTls,
+        brokerServiceUrl,
+        brokerServiceUrlTls
+);
+admin.clusters().updateCluster(clusterName, clusterData);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="delete"></a><a href="#delete" 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>Clusters can be deleted from a Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#instance">instance</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-3"></a><a href="#pulsar-admin-3" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-delete"><code>delete</code></a> subcommand and specify the name of the cluster.</p>
+<pre><code class="hljs">$ pulsar-admin clusters <span class="hljs-keyword">delete</span> <span class="hljs-keyword">cluster</span><span class="hljs-number">-1</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-2"></a><a href="#rest-api-2" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/deleteCluster"><b>DELETE</b> <i>/admin/v2/clusters/:cluster</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-3"></a><a href="#java-3" 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. [...]
+<pre><code class="hljs css language-java">admin.clusters().deleteCluster(clusterName);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="list"></a><a href="#list" 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>You can fetch a list of all clusters in a Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#instance">instance</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-4"></a><a href="#pulsar-admin-4" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-list"><code>list</code></a> subcommand.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin clusters list</span>
+cluster-1
+cluster-2
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-3"></a><a href="#rest-api-3" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getClusters"><b>GET</b> <i>/admin/v2/clusters</i></a>
+</p>
+<h6><a class="anchor" aria-hidden="true" id="java-4"></a><a href="#java-4" 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. [...]
+<pre><code class="hljs css language-java">admin.clusters().getClusters();
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="update-peer-cluster-data"></a><a href="#update-peer-cluster-data" 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-. [...]
+<p>Peer clusters can be configured for a given cluster in a Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#instance">instance</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-5"></a><a href="#pulsar-admin-5" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters-update-peer-clusters"><code>update-peer-clusters</code></a> subcommand and specify the list of peer-cluster names.</p>
+<pre><code class="hljs">$ pulsar-admin <span class="hljs-keyword">update</span>-peer-clusters <span class="hljs-keyword">cluster</span><span class="hljs-number">-1</span> --peer-clusters <span class="hljs-keyword">cluster</span><span class="hljs-number">-2</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-4"></a><a href="#rest-api-4" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/setPeerClusterNames"><b>POST</b> <i>/admin/v2/clusters/:cluster/peers</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-5"></a><a href="#java-5" 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. [...]
+<pre><code class="hljs css language-java">admin.clusters().updatePeerClusterNames(clusterName, peerClusterList);
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/admin-api-overview"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/admin-api-tenants"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#clusters-resources">Clusters resources</a><ul class="toc-headings"><li [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/admin-api-namespaces.html b/content/docs/en/2.1.0-incubating/admin-api-namespaces.html
new file mode 100644
index 0000000..3602ee7
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/admin-api-namespaces.html
@@ -0,0 +1,449 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Managing Namespaces · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Pulsar [namespaces](/docs/en/2.1.0-incubating/reference-terminology#namespace) are logical groupings of [topics](/docs/en/2.1.0-incubating/reference-terminology#topic)."/><meta name="docsearch:vers [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Adm [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/admin-api-namespaces.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Managing Namespaces</h1></header><article><div><span><p>Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#namespace">name [...]
+<p>Namespaces can be managed via:</p>
+<ul>
+<li>The <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters"><code>namespaces</code></a> command of the <a href="/docs/en/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool</li>
+<li>The <code>/admin/v2/namespaces</code> endpoint of the admin <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API</li>
+<li>The <code>namespaces</code> method of the <a href="https://pulsar.incubator.apache.org/api/admin/org/apache/pulsar/client/admin/PulsarAdmin">PulsarAdmin</a>
+ object in the <a href="/docs/en/2.1.0-incubating/client-libraries-java">Java API</a></li>
+</ul>
+<h2><a class="anchor" aria-hidden="true" id="namespaces-resources"></a><a href="#namespaces-resources" 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="create"></a><a href="#create" 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>You can create new namespaces under a given <a href="/docs/en/2.1.0-incubating/reference-terminology#tenant">tenant</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin"></a><a href="#pulsar-admin" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces-create"><code>create</code></a> subcommand and specify the namespace by name:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces create <span class="hljs-built_in">test</span>-tenant/<span class="hljs-built_in">test</span>-namespace</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api"></a><a href="#rest-api" 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  [...]
+<p><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/createNamespace"><b>PUT</b> <i>/admin/v2/namespaces/:tenant/:namespace</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<pre><code class="hljs css language-java">admin.namespaces().createNamespace(namespace);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="get-policies"></a><a href="#get-policies" 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>You can fetch the current policies associated with a namespace at any time.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-1"></a><a href="#pulsar-admin-1" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces-policies"><code>policies</code></a> subcommand and specify the namespace:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces policies <span class="hljs-built_in">test</span>-tenant/<span class="hljs-built_in">test</span>-namespace</span>
+{
+  "auth_policies": {
+    "namespace_auth": {},
+    "destination_auth": {}
+  },
+  "replication_clusters": [],
+  "bundles_activated": true,
+  "bundles": {
+    "boundaries": [
+      "0x00000000",
+      "0xffffffff"
+    ],
+    "numBundles": 1
+  },
+  "backlog_quota_map": {},
+  "persistence": null,
+  "latency_stats_sample_rate": {},
+  "message_ttl_in_seconds": 0,
+  "retention_policies": null,
+  "deleted": false
+}
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getPolicies"><b>GET</b> <i>/admin/v2/namespaces/:tenant/:namespace</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-1"></a><a href="#java-1" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().getPolicies(namespace);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="list-namespaces-within-a-tenant"></a><a href="#list-namespaces-within-a-tenant" 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 [...]
+<p>You can list all namespaces within a given Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#tenant">tenant</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-2"></a><a href="#pulsar-admin-2" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces-list"><code>list</code></a> subcommand and specify the tenant:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces list <span class="hljs-built_in">test</span>-tenant</span>
+test-tenant/ns1
+test-tenant/ns2
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-2"></a><a href="#rest-api-2" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getTenantNamespaces"><b>GET</b> <i>/admin/v2/namespaces/:tenant</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-2"></a><a href="#java-2" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().getNamespaces(tenant);
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="java-3"></a><a href="#java-3" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().getNamespaces(tenant);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="delete"></a><a href="#delete" 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>You can delete existing namespaces from a tenant.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-3"></a><a href="#pulsar-admin-3" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces-delete"><code>delete</code></a> subcommand and specify the namespace:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces delete <span class="hljs-built_in">test</span>-tenant/ns1</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest"></a><a href="#rest" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/deleteNamespace"><b>DELETE</b> <i>/admin/v2/namespaces/:tenant/:namespace</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-4"></a><a href="#java-4" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().deleteNamespace(namespace);
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-replication-cluster"></a><a href="#set-replication-cluster" 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>It sets replication clusters for a namespace, so Pulsar can internally replicate publish message from one colo to another colo.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli"></a><a href="#cli" 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.2 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-clusters</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1 </span>\
+  <span class="hljs-built_in">--clusters</span> <span class="hljs-string">cl1
+</span></code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-1"></a><a href="#rest-1" 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. [...]
+<pre><code class="hljs">{<span class="hljs-variable">@inject:</span> endpoint POST|/admin/v2/namespaces/:tenant/:namespace/replication|operation/setNamespaceReplicationClusters}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-5"></a><a href="#java-5" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().setNamespaceReplicationClusters(namespace, clusters);
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-replication-cluster"></a><a href="#get-replication-cluster" 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>It gives a list of replication clusters for a given namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-1"></a><a href="#cli-1" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-clusters</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">cl1/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs"><span class="hljs-attribute">cl2</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-2"></a><a href="#rest-2" 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. [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>replication
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-6"></a><a href="#java-6" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().getNamespaceReplicationClusters(namespace)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-backlog-quota-policies"></a><a href="#set-backlog-quota-policies" 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 12H [...]
+<p>Backlog quota helps broker to restrict bandwidth/storage of a namespace once it reach certain threshold limit . Admin can set this limit and one of the following action after the limit is reached.</p>
+<ol>
+<li><p>producer_request_hold: broker will hold and not persist produce request payload</p></li>
+<li><p>producer_exception: broker will disconnects with client by giving exception</p></li>
+<li><p>consumer_backlog_eviction: broker will start discarding backlog messages</p></li>
+</ol>
+<p>Backlog quota restriction can be taken care by defining restriction of backlog-quota-type: destination_storage</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-2"></a><a href="#cli-2" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-backlog-quota</span> <span class="hljs-built_in">--limit</span> <span class="hljs-string">10 </span><span class="hljs-built_in">--policy</span> <span class="hljs-string">producer_request_hold </span><span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-3"></a><a href="#rest-3" 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. [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>backlogQuota
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-7"></a><a href="#java-7" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().setBacklogQuota(namespace, <span class="hljs-keyword">new</span> BacklogQuota(limit, policy))
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-backlog-quota-policies"></a><a href="#get-backlog-quota-policies" 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 12H [...]
+<p>It shows a configured backlog quota for a given namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-3"></a><a href="#cli-3" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-backlog-quotas</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"destination_storage"</span>: {
+    <span class="hljs-attr">"limit"</span>: <span class="hljs-number">10</span>,
+    <span class="hljs-attr">"policy"</span>: <span class="hljs-string">"producer_request_hold"</span>
+  }
+}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-4"></a><a href="#rest-4" 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. [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>backlogQuotaMap
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-8"></a><a href="#java-8" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().getBacklogQuotaMap(namespace);
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="remove-backlog-quota-policies"></a><a href="#remove-backlog-quota-policies" 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  [...]
+<p>It removes backlog quota policies for a given namespace</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-4"></a><a href="#cli-4" 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 [...]
+<pre><code class="hljs"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces remove-backlog-quota <span class="hljs-built_in">test</span>-tenant/ns1</span>
+</code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-5"></a><a href="#rest-5" 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. [...]
+<pre><code class="hljs"><span class="hljs-keyword">DELETE</span> <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>backlogQuota
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-9"></a><a href="#java-9" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().removeBacklogQuota(namespace, backlogQuotaType)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-persistence-policies"></a><a href="#set-persistence-policies" 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-. [...]
+<p>Persistence policies allow to configure persistency-level for all topic messages under a given namespace.</p>
+<ul>
+<li><p>Bookkeeper-ack-quorum: Number of acks (guaranteed copies) to wait for each entry, default: 0</p></li>
+<li><p>Bookkeeper-ensemble: Number of bookies to use for a topic, default: 0</p></li>
+<li><p>Bookkeeper-write-quorum: How many writes to make of each entry, default: 0</p></li>
+<li><p>Ml-mark-delete-max-rate: Throttling rate of mark-delete operation (0 means no throttle), default: 0.0</p></li>
+</ul>
+<h6><a class="anchor" aria-hidden="true" id="cli-5"></a><a href="#cli-5" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-persistence</span> <span class="hljs-built_in">--bookkeeper-ack-quorum</span> 2 <span class="hljs-built_in">--bookkeeper-ensemble</span> 3 <span class="hljs-built_in">--bookkeeper-write-quorum</span> 2 <span class="hljs-built_in">--ml-mark-delete-max-rate</span> 0 <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-6"></a><a href="#rest-6" 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. [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>persistence
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-10"></a><a href="#java-10" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().setPersistence(namespace,<span class="hljs-keyword">new</span> PersistencePolicies(bookkeeperEnsemble, bookkeeperWriteQuorum,bookkeeperAckQuorum,managedLedgerMaxMarkDeleteRate))
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-persistence-policies"></a><a href="#get-persistence-policies" 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-. [...]
+<p>It shows configured persistence policies of a given namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-6"></a><a href="#cli-6" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-persistence</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"bookkeeperEnsemble"</span>: <span class="hljs-number">3</span>,
+  <span class="hljs-attr">"bookkeeperWriteQuorum"</span>: <span class="hljs-number">2</span>,
+  <span class="hljs-attr">"bookkeeperAckQuorum"</span>: <span class="hljs-number">2</span>,
+  <span class="hljs-attr">"managedLedgerMaxMarkDeleteRate"</span>: <span class="hljs-number">0</span>
+}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-7"></a><a href="#rest-7" 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. [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>persistence
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-11"></a><a href="#java-11" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().getPersistence(namespace)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="unload-namespace-bundle"></a><a href="#unload-namespace-bundle" 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>Namespace bundle is a virtual group of topics which belong to same namespace. If broker gets overloaded with number of bundles then this command can help to unload heavy bundle from that broker, so it can be served by some other less loaded broker. Namespace bundle is defined with it’s start and end range such as 0x00000000 and 0xffffffff.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-7"></a><a href="#cli-7" 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 [...]
+<pre><code class="hljs"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces unload --bundle 0x00000000_0xffffffff <span class="hljs-built_in">test</span>-tenant/ns1</span>
+</code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-8"></a><a href="#rest-8" 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. [...]
+<pre><code class="hljs">PUT <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/u</span>nload
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-12"></a><a href="#java-12" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().unloadNamespaceBundle(namespace, bundle)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-message-ttl"></a><a href="#set-message-ttl" 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>It configures message’s time to live (in seconds) duration.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-8"></a><a href="#cli-8" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-message-ttl</span> <span class="hljs-built_in">--messageTTL</span> <span class="hljs-string">100 </span><span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-9"></a><a href="#rest-9" 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. [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/m</span>essageTTL
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-13"></a><a href="#java-13" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().setNamespaceMessageTTL(namespace, messageTTL)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-message-ttl"></a><a href="#get-message-ttl" 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>It gives a message ttl of configured namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-9"></a><a href="#cli-9" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-message-ttl</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs"><span class="hljs-number">100</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-10"></a><a href="#rest-10" 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- [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/m</span>essageTTL
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-14"></a><a href="#java-14" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().getNamespaceReplicationClusters(namespace)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="split-bundle"></a><a href="#split-bundle" 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>Each namespace bundle can contain multiple topics and each bundle can be served by only one broker. If bundle gets heavy with multiple live topics in it then it creates load on that broker and in order to resolve this issue, admin can split bundle using this command.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-10"></a><a href="#cli-10" 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. [...]
+<pre><code class="hljs"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces split-bundle --bundle 0x00000000_0xffffffff <span class="hljs-built_in">test</span>-tenant/ns1</span>
+</code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-11"></a><a href="#rest-11" 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- [...]
+<pre><code class="hljs"><span class="xml">PUT /admin/v2/namespaces/</span><span class="hljs-template-variable">{tenant}</span><span class="xml">/</span><span class="hljs-template-variable">{namespace}</span><span class="xml">/</span><span class="hljs-template-variable">{bundle}</span><span class="xml">/split
+</span></code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-15"></a><a href="#java-15" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().splitNamespaceBundle(namespace, bundle)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="clear-backlog"></a><a href="#clear-backlog" 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>It clears all message backlog for all the topics those belong to specific namespace. You can also clear backlog for a specific subscription as well.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-11"></a><a href="#cli-11" 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. [...]
+<pre><code class="hljs">$ pulsar-admin namespaces clear-<span class="hljs-keyword">backlog </span>--<span class="hljs-keyword">sub </span>my-<span class="hljs-keyword">subscription </span>test-tenant/ns1
+</code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-12"></a><a href="#rest-12" 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- [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>clearBacklog
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-16"></a><a href="#java-16" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().clearNamespaceBacklogForSubscription(namespace, subscription)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="clear-bundle-backlog"></a><a href="#clear-bundle-backlog" 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>It clears all message backlog for all the topics those belong to specific NamespaceBundle. You can also clear backlog for a specific subscription as well.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-12"></a><a href="#cli-12" 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. [...]
+<pre><code class="hljs">$ pulsar-admin namespaces clear-<span class="hljs-keyword">backlog </span> --<span class="hljs-keyword">bundle </span><span class="hljs-number">0x00000000</span>_<span class="hljs-number">0xffffffff</span>  --<span class="hljs-keyword">sub </span>my-<span class="hljs-keyword">subscription </span>test-tenant/ns1
+</code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-13"></a><a href="#rest-13" 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- [...]
+<pre><code class="hljs"><span class="xml">POST /admin/v2/namespaces/</span><span class="hljs-template-variable">{tenant}</span><span class="xml">/</span><span class="hljs-template-variable">{namespace}</span><span class="xml">/</span><span class="hljs-template-variable">{bundle}</span><span class="xml">/clearBacklog
+</span></code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-17"></a><a href="#java-17" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().clearNamespaceBundleBacklogForSubscription(namespace, bundle, subscription)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-retention"></a><a href="#set-retention" 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>Each namespace contains multiple topics and each topic’s retention size (storage size) should not exceed to a specific threshold or it should be stored till certain time duration. This command helps to configure retention size and time of topics in a given namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-13"></a><a href="#cli-13" 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. [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-built_in">set-retention</span> <span class="hljs-built_in">--size</span> <span class="hljs-string">10 </span><span class="hljs-built_in">--time</span> <span class="hljs-string">100 </span><span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-14"></a><a href="#rest-14" 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- [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>retention
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-18"></a><a href="#java-18" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().setRetention(namespace, <span class="hljs-keyword">new</span> RetentionPolicies(retentionTimeInMin, retentionSizeInMB))
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-retention"></a><a href="#get-retention" 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>It shows retention information of a given namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-14"></a><a href="#cli-14" 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. [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-retention</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"retentionTimeInMinutes"</span>: <span class="hljs-number">10</span>,
+  <span class="hljs-attr">"retentionSizeInMB"</span>: <span class="hljs-number">100</span>
+}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-15"></a><a href="#rest-15" 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- [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>retention
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-19"></a><a href="#java-19" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().getRetention(namespace)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-dispatch-throttling"></a><a href="#set-dispatch-throttling" 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>It sets message dispatch rate for all the topics under a given namespace.
+Dispatch rate can be restricted by number of message per X seconds (<code>msg-dispatch-rate</code>) or by number of message-bytes per X second (<code>byte-dispatch-rate</code>).
+dispatch rate is in second and it can be configured with <code>dispatch-rate-period</code>. Default value of <code>msg-dispatch-rate</code> and <code>byte-dispatch-rate</code> is -1 which
+disables the throttling.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-15"></a><a href="#cli-15" 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. [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-dispatch-rate</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1 </span>\
+  <span class="hljs-built_in">--msg-dispatch-rate</span> <span class="hljs-string">1000 </span>\
+  <span class="hljs-built_in">--byte-dispatch-rate</span> <span class="hljs-string">1048576 </span>\
+  <span class="hljs-built_in">--dispatch-rate-period</span> 1
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-16"></a><a href="#rest-16" 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- [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>dispatchRate
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-20"></a><a href="#java-20" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().setDispatchRate(namespace, <span class="hljs-number">1000</span>, <span class="hljs-number">1048576</span>, <span class="hljs-number">1</span>)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-configured-message-rate"></a><a href="#get-configured-message-rate" 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 1 [...]
+<p>It shows configured message-rate for the namespace (topics under this namespace can dispatch this many messages per second)</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-16"></a><a href="#cli-16" 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. [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-dispatch-rate</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"dispatchThrottlingRatePerTopicInMsg"</span> : <span class="hljs-number">1000</span>,
+  <span class="hljs-attr">"dispatchThrottlingRatePerTopicInByte"</span> : <span class="hljs-number">1048576</span>,
+  <span class="hljs-attr">"ratePeriodInSecond"</span> : <span class="hljs-number">1</span>
+}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-17"></a><a href="#rest-17" 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- [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>dispatchRate
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-21"></a><a href="#java-21" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().getDispatchRate(namespace)
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="namespace-isolation"></a><a href="#namespace-isolation" 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.2 [...]
+<p>Coming soon.</p>
+<h3><a class="anchor" aria-hidden="true" id="unloading-from-a-broker"></a><a href="#unloading-from-a-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 [...]
+<p>You can unload a namespace, or a <a href="/docs/en/2.1.0-incubating/reference-terminology#namespace-bundle">namespace bundle</a>, from the Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#broker">broker</a> that is currently responsible for it.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-4"></a><a href="#pulsar-admin-4" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces-unload"><code>unload</code></a> subcommand of the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces"><code>namespaces</code></a> command.</p>
+<h5><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces unload my-tenant/my-ns</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-3"></a><a href="#rest-api-3" 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="java-22"></a><a href="#java-22" 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- [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/admin-api-brokers"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/admin-api-permissions"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#namespaces-resources">Namespaces resources</a><ul class="toc-headin [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/admin-api-namespaces/index.html b/content/docs/en/2.1.0-incubating/admin-api-namespaces/index.html
new file mode 100644
index 0000000..3602ee7
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/admin-api-namespaces/index.html
@@ -0,0 +1,449 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Managing Namespaces · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Pulsar [namespaces](/docs/en/2.1.0-incubating/reference-terminology#namespace) are logical groupings of [topics](/docs/en/2.1.0-incubating/reference-terminology#topic)."/><meta name="docsearch:vers [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Adm [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/admin-api-namespaces.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Managing Namespaces</h1></header><article><div><span><p>Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#namespace">name [...]
+<p>Namespaces can be managed via:</p>
+<ul>
+<li>The <a href="/docs/en/2.1.0-incubating/pulsar-admin#clusters"><code>namespaces</code></a> command of the <a href="/docs/en/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool</li>
+<li>The <code>/admin/v2/namespaces</code> endpoint of the admin <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API</li>
+<li>The <code>namespaces</code> method of the <a href="https://pulsar.incubator.apache.org/api/admin/org/apache/pulsar/client/admin/PulsarAdmin">PulsarAdmin</a>
+ object in the <a href="/docs/en/2.1.0-incubating/client-libraries-java">Java API</a></li>
+</ul>
+<h2><a class="anchor" aria-hidden="true" id="namespaces-resources"></a><a href="#namespaces-resources" 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="create"></a><a href="#create" 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>You can create new namespaces under a given <a href="/docs/en/2.1.0-incubating/reference-terminology#tenant">tenant</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin"></a><a href="#pulsar-admin" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces-create"><code>create</code></a> subcommand and specify the namespace by name:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces create <span class="hljs-built_in">test</span>-tenant/<span class="hljs-built_in">test</span>-namespace</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api"></a><a href="#rest-api" 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  [...]
+<p><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/createNamespace"><b>PUT</b> <i>/admin/v2/namespaces/:tenant/:namespace</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<pre><code class="hljs css language-java">admin.namespaces().createNamespace(namespace);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="get-policies"></a><a href="#get-policies" 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>You can fetch the current policies associated with a namespace at any time.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-1"></a><a href="#pulsar-admin-1" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces-policies"><code>policies</code></a> subcommand and specify the namespace:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces policies <span class="hljs-built_in">test</span>-tenant/<span class="hljs-built_in">test</span>-namespace</span>
+{
+  "auth_policies": {
+    "namespace_auth": {},
+    "destination_auth": {}
+  },
+  "replication_clusters": [],
+  "bundles_activated": true,
+  "bundles": {
+    "boundaries": [
+      "0x00000000",
+      "0xffffffff"
+    ],
+    "numBundles": 1
+  },
+  "backlog_quota_map": {},
+  "persistence": null,
+  "latency_stats_sample_rate": {},
+  "message_ttl_in_seconds": 0,
+  "retention_policies": null,
+  "deleted": false
+}
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getPolicies"><b>GET</b> <i>/admin/v2/namespaces/:tenant/:namespace</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-1"></a><a href="#java-1" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().getPolicies(namespace);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="list-namespaces-within-a-tenant"></a><a href="#list-namespaces-within-a-tenant" 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 [...]
+<p>You can list all namespaces within a given Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#tenant">tenant</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-2"></a><a href="#pulsar-admin-2" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces-list"><code>list</code></a> subcommand and specify the tenant:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces list <span class="hljs-built_in">test</span>-tenant</span>
+test-tenant/ns1
+test-tenant/ns2
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-2"></a><a href="#rest-api-2" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getTenantNamespaces"><b>GET</b> <i>/admin/v2/namespaces/:tenant</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-2"></a><a href="#java-2" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().getNamespaces(tenant);
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="java-3"></a><a href="#java-3" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().getNamespaces(tenant);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="delete"></a><a href="#delete" 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>You can delete existing namespaces from a tenant.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-3"></a><a href="#pulsar-admin-3" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces-delete"><code>delete</code></a> subcommand and specify the namespace:</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces delete <span class="hljs-built_in">test</span>-tenant/ns1</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest"></a><a href="#rest" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/deleteNamespace"><b>DELETE</b> <i>/admin/v2/namespaces/:tenant/:namespace</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-4"></a><a href="#java-4" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().deleteNamespace(namespace);
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-replication-cluster"></a><a href="#set-replication-cluster" 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>It sets replication clusters for a namespace, so Pulsar can internally replicate publish message from one colo to another colo.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli"></a><a href="#cli" 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.2 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-clusters</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1 </span>\
+  <span class="hljs-built_in">--clusters</span> <span class="hljs-string">cl1
+</span></code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-1"></a><a href="#rest-1" 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. [...]
+<pre><code class="hljs">{<span class="hljs-variable">@inject:</span> endpoint POST|/admin/v2/namespaces/:tenant/:namespace/replication|operation/setNamespaceReplicationClusters}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-5"></a><a href="#java-5" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().setNamespaceReplicationClusters(namespace, clusters);
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-replication-cluster"></a><a href="#get-replication-cluster" 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>It gives a list of replication clusters for a given namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-1"></a><a href="#cli-1" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-clusters</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">cl1/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs"><span class="hljs-attribute">cl2</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-2"></a><a href="#rest-2" 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. [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>replication
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-6"></a><a href="#java-6" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().getNamespaceReplicationClusters(namespace)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-backlog-quota-policies"></a><a href="#set-backlog-quota-policies" 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 12H [...]
+<p>Backlog quota helps broker to restrict bandwidth/storage of a namespace once it reach certain threshold limit . Admin can set this limit and one of the following action after the limit is reached.</p>
+<ol>
+<li><p>producer_request_hold: broker will hold and not persist produce request payload</p></li>
+<li><p>producer_exception: broker will disconnects with client by giving exception</p></li>
+<li><p>consumer_backlog_eviction: broker will start discarding backlog messages</p></li>
+</ol>
+<p>Backlog quota restriction can be taken care by defining restriction of backlog-quota-type: destination_storage</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-2"></a><a href="#cli-2" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-backlog-quota</span> <span class="hljs-built_in">--limit</span> <span class="hljs-string">10 </span><span class="hljs-built_in">--policy</span> <span class="hljs-string">producer_request_hold </span><span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-3"></a><a href="#rest-3" 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. [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>backlogQuota
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-7"></a><a href="#java-7" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().setBacklogQuota(namespace, <span class="hljs-keyword">new</span> BacklogQuota(limit, policy))
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-backlog-quota-policies"></a><a href="#get-backlog-quota-policies" 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 12H [...]
+<p>It shows a configured backlog quota for a given namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-3"></a><a href="#cli-3" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-backlog-quotas</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"destination_storage"</span>: {
+    <span class="hljs-attr">"limit"</span>: <span class="hljs-number">10</span>,
+    <span class="hljs-attr">"policy"</span>: <span class="hljs-string">"producer_request_hold"</span>
+  }
+}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-4"></a><a href="#rest-4" 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. [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>backlogQuotaMap
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-8"></a><a href="#java-8" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().getBacklogQuotaMap(namespace);
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="remove-backlog-quota-policies"></a><a href="#remove-backlog-quota-policies" 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  [...]
+<p>It removes backlog quota policies for a given namespace</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-4"></a><a href="#cli-4" 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 [...]
+<pre><code class="hljs"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces remove-backlog-quota <span class="hljs-built_in">test</span>-tenant/ns1</span>
+</code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-5"></a><a href="#rest-5" 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. [...]
+<pre><code class="hljs"><span class="hljs-keyword">DELETE</span> <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>backlogQuota
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-9"></a><a href="#java-9" 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. [...]
+<pre><code class="hljs css language-java">admin.namespaces().removeBacklogQuota(namespace, backlogQuotaType)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-persistence-policies"></a><a href="#set-persistence-policies" 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-. [...]
+<p>Persistence policies allow to configure persistency-level for all topic messages under a given namespace.</p>
+<ul>
+<li><p>Bookkeeper-ack-quorum: Number of acks (guaranteed copies) to wait for each entry, default: 0</p></li>
+<li><p>Bookkeeper-ensemble: Number of bookies to use for a topic, default: 0</p></li>
+<li><p>Bookkeeper-write-quorum: How many writes to make of each entry, default: 0</p></li>
+<li><p>Ml-mark-delete-max-rate: Throttling rate of mark-delete operation (0 means no throttle), default: 0.0</p></li>
+</ul>
+<h6><a class="anchor" aria-hidden="true" id="cli-5"></a><a href="#cli-5" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-persistence</span> <span class="hljs-built_in">--bookkeeper-ack-quorum</span> 2 <span class="hljs-built_in">--bookkeeper-ensemble</span> 3 <span class="hljs-built_in">--bookkeeper-write-quorum</span> 2 <span class="hljs-built_in">--ml-mark-delete-max-rate</span> 0 <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-6"></a><a href="#rest-6" 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. [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>persistence
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-10"></a><a href="#java-10" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().setPersistence(namespace,<span class="hljs-keyword">new</span> PersistencePolicies(bookkeeperEnsemble, bookkeeperWriteQuorum,bookkeeperAckQuorum,managedLedgerMaxMarkDeleteRate))
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-persistence-policies"></a><a href="#get-persistence-policies" 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-. [...]
+<p>It shows configured persistence policies of a given namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-6"></a><a href="#cli-6" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-persistence</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"bookkeeperEnsemble"</span>: <span class="hljs-number">3</span>,
+  <span class="hljs-attr">"bookkeeperWriteQuorum"</span>: <span class="hljs-number">2</span>,
+  <span class="hljs-attr">"bookkeeperAckQuorum"</span>: <span class="hljs-number">2</span>,
+  <span class="hljs-attr">"managedLedgerMaxMarkDeleteRate"</span>: <span class="hljs-number">0</span>
+}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-7"></a><a href="#rest-7" 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. [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>persistence
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-11"></a><a href="#java-11" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().getPersistence(namespace)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="unload-namespace-bundle"></a><a href="#unload-namespace-bundle" 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>Namespace bundle is a virtual group of topics which belong to same namespace. If broker gets overloaded with number of bundles then this command can help to unload heavy bundle from that broker, so it can be served by some other less loaded broker. Namespace bundle is defined with it’s start and end range such as 0x00000000 and 0xffffffff.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-7"></a><a href="#cli-7" 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 [...]
+<pre><code class="hljs"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces unload --bundle 0x00000000_0xffffffff <span class="hljs-built_in">test</span>-tenant/ns1</span>
+</code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-8"></a><a href="#rest-8" 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. [...]
+<pre><code class="hljs">PUT <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/u</span>nload
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-12"></a><a href="#java-12" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().unloadNamespaceBundle(namespace, bundle)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-message-ttl"></a><a href="#set-message-ttl" 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>It configures message’s time to live (in seconds) duration.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-8"></a><a href="#cli-8" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-message-ttl</span> <span class="hljs-built_in">--messageTTL</span> <span class="hljs-string">100 </span><span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-9"></a><a href="#rest-9" 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. [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/m</span>essageTTL
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-13"></a><a href="#java-13" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().setNamespaceMessageTTL(namespace, messageTTL)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-message-ttl"></a><a href="#get-message-ttl" 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>It gives a message ttl of configured namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-9"></a><a href="#cli-9" 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 [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-message-ttl</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs"><span class="hljs-number">100</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-10"></a><a href="#rest-10" 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- [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/m</span>essageTTL
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-14"></a><a href="#java-14" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().getNamespaceReplicationClusters(namespace)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="split-bundle"></a><a href="#split-bundle" 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>Each namespace bundle can contain multiple topics and each bundle can be served by only one broker. If bundle gets heavy with multiple live topics in it then it creates load on that broker and in order to resolve this issue, admin can split bundle using this command.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-10"></a><a href="#cli-10" 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. [...]
+<pre><code class="hljs"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces split-bundle --bundle 0x00000000_0xffffffff <span class="hljs-built_in">test</span>-tenant/ns1</span>
+</code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-11"></a><a href="#rest-11" 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- [...]
+<pre><code class="hljs"><span class="xml">PUT /admin/v2/namespaces/</span><span class="hljs-template-variable">{tenant}</span><span class="xml">/</span><span class="hljs-template-variable">{namespace}</span><span class="xml">/</span><span class="hljs-template-variable">{bundle}</span><span class="xml">/split
+</span></code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-15"></a><a href="#java-15" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().splitNamespaceBundle(namespace, bundle)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="clear-backlog"></a><a href="#clear-backlog" 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>It clears all message backlog for all the topics those belong to specific namespace. You can also clear backlog for a specific subscription as well.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-11"></a><a href="#cli-11" 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. [...]
+<pre><code class="hljs">$ pulsar-admin namespaces clear-<span class="hljs-keyword">backlog </span>--<span class="hljs-keyword">sub </span>my-<span class="hljs-keyword">subscription </span>test-tenant/ns1
+</code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-12"></a><a href="#rest-12" 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- [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>clearBacklog
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-16"></a><a href="#java-16" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().clearNamespaceBacklogForSubscription(namespace, subscription)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="clear-bundle-backlog"></a><a href="#clear-bundle-backlog" 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>It clears all message backlog for all the topics those belong to specific NamespaceBundle. You can also clear backlog for a specific subscription as well.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-12"></a><a href="#cli-12" 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. [...]
+<pre><code class="hljs">$ pulsar-admin namespaces clear-<span class="hljs-keyword">backlog </span> --<span class="hljs-keyword">bundle </span><span class="hljs-number">0x00000000</span>_<span class="hljs-number">0xffffffff</span>  --<span class="hljs-keyword">sub </span>my-<span class="hljs-keyword">subscription </span>test-tenant/ns1
+</code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-13"></a><a href="#rest-13" 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- [...]
+<pre><code class="hljs"><span class="xml">POST /admin/v2/namespaces/</span><span class="hljs-template-variable">{tenant}</span><span class="xml">/</span><span class="hljs-template-variable">{namespace}</span><span class="xml">/</span><span class="hljs-template-variable">{bundle}</span><span class="xml">/clearBacklog
+</span></code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-17"></a><a href="#java-17" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().clearNamespaceBundleBacklogForSubscription(namespace, bundle, subscription)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-retention"></a><a href="#set-retention" 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>Each namespace contains multiple topics and each topic’s retention size (storage size) should not exceed to a specific threshold or it should be stored till certain time duration. This command helps to configure retention size and time of topics in a given namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-13"></a><a href="#cli-13" 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. [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-built_in">set-retention</span> <span class="hljs-built_in">--size</span> <span class="hljs-string">10 </span><span class="hljs-built_in">--time</span> <span class="hljs-string">100 </span><span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs">N/<span class="hljs-keyword">A</span>
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-14"></a><a href="#rest-14" 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- [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>retention
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-18"></a><a href="#java-18" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().setRetention(namespace, <span class="hljs-keyword">new</span> RetentionPolicies(retentionTimeInMin, retentionSizeInMB))
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-retention"></a><a href="#get-retention" 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>It shows retention information of a given namespace.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-14"></a><a href="#cli-14" 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. [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-retention</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"retentionTimeInMinutes"</span>: <span class="hljs-number">10</span>,
+  <span class="hljs-attr">"retentionSizeInMB"</span>: <span class="hljs-number">100</span>
+}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-15"></a><a href="#rest-15" 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- [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>retention
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-19"></a><a href="#java-19" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().getRetention(namespace)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="set-dispatch-throttling"></a><a href="#set-dispatch-throttling" 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>It sets message dispatch rate for all the topics under a given namespace.
+Dispatch rate can be restricted by number of message per X seconds (<code>msg-dispatch-rate</code>) or by number of message-bytes per X second (<code>byte-dispatch-rate</code>).
+dispatch rate is in second and it can be configured with <code>dispatch-rate-period</code>. Default value of <code>msg-dispatch-rate</code> and <code>byte-dispatch-rate</code> is -1 which
+disables the throttling.</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-15"></a><a href="#cli-15" 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. [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">set-dispatch-rate</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1 </span>\
+  <span class="hljs-built_in">--msg-dispatch-rate</span> <span class="hljs-string">1000 </span>\
+  <span class="hljs-built_in">--byte-dispatch-rate</span> <span class="hljs-string">1048576 </span>\
+  <span class="hljs-built_in">--dispatch-rate-period</span> 1
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-16"></a><a href="#rest-16" 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- [...]
+<pre><code class="hljs">POST <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>dispatchRate
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-20"></a><a href="#java-20" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().setDispatchRate(namespace, <span class="hljs-number">1000</span>, <span class="hljs-number">1048576</span>, <span class="hljs-number">1</span>)
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="get-configured-message-rate"></a><a href="#get-configured-message-rate" 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 1 [...]
+<p>It shows configured message-rate for the namespace (topics under this namespace can dispatch this many messages per second)</p>
+<h6><a class="anchor" aria-hidden="true" id="cli-16"></a><a href="#cli-16" 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. [...]
+<pre><code class="hljs">$ <span class="hljs-string">pulsar-admin </span><span class="hljs-string">namespaces </span><span class="hljs-built_in">get-dispatch-rate</span> <span class="hljs-string">test-tenant/</span><span class="hljs-string">ns1
+</span></code></pre>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"dispatchThrottlingRatePerTopicInMsg"</span> : <span class="hljs-number">1000</span>,
+  <span class="hljs-attr">"dispatchThrottlingRatePerTopicInByte"</span> : <span class="hljs-number">1048576</span>,
+  <span class="hljs-attr">"ratePeriodInSecond"</span> : <span class="hljs-number">1</span>
+}
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="rest-17"></a><a href="#rest-17" 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- [...]
+<pre><code class="hljs">GET <span class="hljs-regexp">/admin/</span>v2<span class="hljs-regexp">/namespaces/</span>{tenant}<span class="hljs-regexp">/{namespace}/</span>dispatchRate
+</code></pre>
+<h6><a class="anchor" aria-hidden="true" id="java-21"></a><a href="#java-21" 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- [...]
+<pre><code class="hljs css language-java">admin.namespaces().getDispatchRate(namespace)
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="namespace-isolation"></a><a href="#namespace-isolation" 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.2 [...]
+<p>Coming soon.</p>
+<h3><a class="anchor" aria-hidden="true" id="unloading-from-a-broker"></a><a href="#unloading-from-a-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 [...]
+<p>You can unload a namespace, or a <a href="/docs/en/2.1.0-incubating/reference-terminology#namespace-bundle">namespace bundle</a>, from the Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#broker">broker</a> that is currently responsible for it.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-4"></a><a href="#pulsar-admin-4" 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>Use the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces-unload"><code>unload</code></a> subcommand of the <a href="/docs/en/2.1.0-incubating/pulsar-admin#namespaces"><code>namespaces</code></a> command.</p>
+<h5><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin namespaces unload my-tenant/my-ns</span>
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-3"></a><a href="#rest-api-3" 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="java-22"></a><a href="#java-22" 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- [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/admin-api-brokers"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/admin-api-permissions"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#namespaces-resources">Namespaces resources</a><ul class="toc-headin [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/admin-api-non-persistent-topics.html b/content/docs/en/2.1.0-incubating/admin-api-non-persistent-topics.html
new file mode 100644
index 0000000..a8dd530
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/admin-api-non-persistent-topics.html
@@ -0,0 +1,275 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Managing non-persistent topics · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Non-persistent can be used in applications that only want to consume real time published messages and"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:l [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Adm [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/admin-api-non-persistent-topics.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Managing non-persistent topics</h1></header><article><div><span><p>Non-persistent can be used in applications that only want [...]
+do not need persistent guarantee that can also reduce message-publish latency by removing overhead of
+persisting messages.</p>
+<p>In all of the instructions and commands below, the topic name structure is:</p>
+<pre><code class="hljs css language-shell">persistent://tenant/namespace/topic
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="non-persistent-topics-resources"></a><a href="#non-persistent-topics-resources" 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="get-stats"></a><a href="#get-stats" 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>It shows current statistics of a given non-partitioned topic.</p>
+<ul>
+<li><p><strong>msgRateIn</strong>: The sum of all local and replication publishers' publish rates in messages per second</p></li>
+<li><p><strong>msgThroughputIn</strong>: Same as above, but in bytes per second instead of messages per second</p></li>
+<li><p><strong>msgRateOut</strong>: The sum of all local and replication consumers' dispatch rates in messages per second</p></li>
+<li><p><strong>msgThroughputOut</strong>: Same as above, but in bytes per second instead of messages per second</p></li>
+<li><p><strong>averageMsgSize</strong>: The average size in bytes of messages published within the last interval</p></li>
+<li><p><strong>publishers</strong>: The list of all local publishers into the topic. There can be zero or thousands</p></li>
+<li><p><strong>averageMsgSize</strong>: Average message size in bytes from this publisher within the last interval</p></li>
+<li><p><strong>producerId</strong>: Internal identifier for this producer on this topic</p></li>
+<li><p><strong>producerName</strong>: Internal identifier for this producer, generated by the client library</p></li>
+<li><p><strong>address</strong>: IP address and source port for the connection of this producer</p></li>
+<li><p><strong>connectedSince</strong>: Timestamp this producer was created or last reconnected</p></li>
+<li><p><strong>subscriptions</strong>: The list of all local subscriptions to the topic</p></li>
+<li><p><strong>my-subscription</strong>: The name of this subscription (client defined)</p></li>
+<li><p><strong>type</strong>: This subscription type</p></li>
+<li><p><strong>consumers</strong>: The list of connected consumers for this subscription</p></li>
+<li><p><strong>consumerName</strong>: Internal identifier for this consumer, generated by the client library</p></li>
+<li><p><strong>availablePermits</strong>: The number of messages this consumer has space for in the client library's listen queue. A value of 0 means the client library's queue is full and receive() isn't being called. A nonzero value means this consumer is ready to be dispatched messages.</p></li>
+<li><p><strong>replication</strong>: This section gives the stats for cross-colo replication of this topic</p></li>
+<li><p><strong>connected</strong>: Whether the outbound replicator is connected</p></li>
+<li><p><strong>inboundConnection</strong>: The IP and port of the broker in the remote cluster's publisher connection to this broker</p></li>
+<li><p><strong>inboundConnectedSince</strong>: The TCP connection being used to publish messages to the remote cluster. If there are no local publishers connected, this connection is automatically closed after a minute.</p></li>
+<li><p><strong>msgDropRate</strong>: for publisher: publish: broker only allows configured number of in flight per connection, and drops all other published messages above the threshold. Broker also drops messages for subscriptions in case of unavailable limit and connection is not writable.</p></li>
+</ul>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"msgRateIn"</span>: <span class="hljs-number">4641.528542257553</span>,
+  <span class="hljs-attr">"msgThroughputIn"</span>: <span class="hljs-number">44663039.74947473</span>,
+  <span class="hljs-attr">"msgRateOut"</span>: <span class="hljs-number">0</span>,
+  <span class="hljs-attr">"msgThroughputOut"</span>: <span class="hljs-number">0</span>,
+  <span class="hljs-attr">"averageMsgSize"</span>: <span class="hljs-number">1232439.816728665</span>,
+  <span class="hljs-attr">"storageSize"</span>: <span class="hljs-number">135532389160</span>,
+  <span class="hljs-attr">"msgDropRate"</span> : <span class="hljs-number">0.0</span>,
+  <span class="hljs-attr">"publishers"</span>: [
+    {
+      <span class="hljs-attr">"msgRateIn"</span>: <span class="hljs-number">57.855383881403576</span>,
+      <span class="hljs-attr">"msgThroughputIn"</span>: <span class="hljs-number">558994.7078932219</span>,
+      <span class="hljs-attr">"averageMsgSize"</span>: <span class="hljs-number">613135</span>,
+      <span class="hljs-attr">"producerId"</span>: <span class="hljs-number">0</span>,
+      <span class="hljs-attr">"producerName"</span>: <span class="hljs-literal">null</span>,
+      <span class="hljs-attr">"address"</span>: <span class="hljs-literal">null</span>,
+      <span class="hljs-attr">"connectedSince"</span>: <span class="hljs-literal">null</span>,
+      <span class="hljs-attr">"msgDropRate"</span> : <span class="hljs-number">0.0</span>
+    }
+  ],
+  <span class="hljs-attr">"subscriptions"</span>: {
+    <span class="hljs-attr">"my-topic_subscription"</span>: {
+      <span class="hljs-attr">"msgRateOut"</span>: <span class="hljs-number">0</span>,
+      <span class="hljs-attr">"msgThroughputOut"</span>: <span class="hljs-number">0</span>,
+      <span class="hljs-attr">"msgBacklog"</span>: <span class="hljs-number">116632</span>,
+      <span class="hljs-attr">"type"</span>: <span class="hljs-literal">null</span>,
+      <span class="hljs-attr">"msgRateExpired"</span>: <span class="hljs-number">36.98245516804671</span>,
+       <span class="hljs-attr">"consumers"</span> : [ {
+        <span class="hljs-attr">"msgRateOut"</span> : <span class="hljs-number">20343.506296021893</span>,
+        <span class="hljs-attr">"msgThroughputOut"</span> : <span class="hljs-number">2.0979855364233278E7</span>,
+        <span class="hljs-attr">"msgRateRedeliver"</span> : <span class="hljs-number">0.0</span>,
+        <span class="hljs-attr">"consumerName"</span> : <span class="hljs-string">"fe3c0"</span>,
+        <span class="hljs-attr">"availablePermits"</span> : <span class="hljs-number">950</span>,
+        <span class="hljs-attr">"unackedMessages"</span> : <span class="hljs-number">0</span>,
+        <span class="hljs-attr">"blockedConsumerOnUnackedMsgs"</span> : <span class="hljs-literal">false</span>,
+        <span class="hljs-attr">"address"</span> : <span class="hljs-string">"/10.73.210.249:60578"</span>,
+        <span class="hljs-attr">"connectedSince"</span> : <span class="hljs-string">"2017-07-26 15:13:48.026-0700"</span>,
+        <span class="hljs-attr">"clientVersion"</span> : <span class="hljs-string">"1.19-incubating-SNAPSHOT"</span>
+      } ],
+      <span class="hljs-attr">"msgDropRate"</span> : <span class="hljs-number">432.2390921571593</span>
+
+    }
+  },
+  <span class="hljs-attr">"replication"</span>: {}
+}
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin"></a><a href="#pulsar-admin" 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>Topic stats can be fetched using <a href="/docs/en/2.1.0-incubating/pulsar-admin#stats"><code>stats</code></a> command.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin non-persistent stats \</span>
+  non-persistent://test-tenant/ns1/tp1 \
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api"></a><a href="#rest-api" 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  [...]
+<p><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getStats"><b>GET</b> <i>/admin/v2/non-persistent/:tenant/:namespace/:topic/stats</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<pre><code class="hljs css language-java">String topic = <span class="hljs-string">"non-persistent://my-tenant/my-namespace/my-topic"</span>;
+admin.nonPersistentTopics().getStats(topic);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="get-internal-stats"></a><a href="#get-internal-stats" 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>It shows detailed statistics of a topic.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-1"></a><a href="#pulsar-admin-1" 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>Topic internal-stats can be fetched using <a href="/docs/en/2.1.0-incubating/pulsar-admin#stats-internal"><code>stats-internal</code></a> command.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin non-persistent stats-internal \</span>
+  non-persistent://test-tenant/ns1/tp1 \
+
+{
+  "entriesAddedCounter" : 48834,
+  "numberOfEntries" : 0,
+  "totalSize" : 0,
+  "cursors" : {
+    "s1" : {
+      "waitingReadOp" : false,
+      "pendingReadOps" : 0,
+      "messagesConsumedCounter" : 0,
+      "cursorLedger" : 0,
+      "cursorLedgerLastEntry" : 0
+    }
+  }
+}
+
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getInternalStats"><b>GET</b> <i>/admin/v2/non-persistent/:tenant/:namespace/:topic/internalStats</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-1"></a><a href="#java-1" 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. [...]
+<pre><code class="hljs css language-java">String topic = <span class="hljs-string">"non-persistent://my-tenant/my-namespace/my-topic"</span>;
+admin.nonPersistentTopics().getInternalStats(topic);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="create-partitioned-topic"></a><a href="#create-partitioned-topic" 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-. [...]
+<p>Partitioned topics in Pulsar must be explicitly created. When creating a new partitioned topic you need to provide a name for the topic as well as the desired number of partitions.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-2"></a><a href="#pulsar-admin-2" 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- [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin non-persistent create-partitioned-topic \</span>
+  non-persistent://my-tenant/my-namespace/my-topic \
+  --partitions 4
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-2"></a><a href="#rest-api-2" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/createPartitionedTopic"><b>PUT</b> <i>/admin/v2/non-persistent/:tenant/:namespace/:topic/partitions</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-2"></a><a href="#java-2" 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. [...]
+<pre><code class="hljs css language-java">String topicName = <span class="hljs-string">"non-persistent://my-tenant/my-namespace/my-topic"</span>;
+<span class="hljs-keyword">int</span> numPartitions = <span class="hljs-number">4</span>;
+admin.nonPersistentTopics().createPartitionedTopic(topicName, numPartitions);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="get-metadata"></a><a href="#get-metadata" 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>Partitioned topics have metadata associated with them that you can fetch as a JSON object. The following metadata fields are currently available:</p>
+<table>
+<thead>
+<tr><th style="text-align:left">Field</th><th style="text-align:left">Meaning</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>partitions</code></td><td style="text-align:left">The number of partitions into which the topic is divided</td></tr>
+</tbody>
+</table>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-3"></a><a href="#pulsar-admin-3" 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- [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin non-persistent get-partitioned-topic-metadata \</span>
+  non-persistent://my-tenant/my-namespace/my-topic
+{
+  "partitions": 4
+}
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-3"></a><a href="#rest-api-3" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getPartitionedMetadata"><b>GET</b> <i>/admin/v2/non-persistent/:tenant/:namespace/:topic/partitions</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-3"></a><a href="#java-3" 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. [...]
+<pre><code class="hljs css language-java">String topicName = <span class="hljs-string">"non-persistent://my-tenant/my-namespace/my-topic"</span>;
+admin.nonPersistentTopics().getPartitionedTopicMetadata(topicName);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="unload-topic"></a><a href="#unload-topic" 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>It unloads a topic.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-4"></a><a href="#pulsar-admin-4" 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>Topic can be unloaded using <a href="/docs/en/2.1.0-incubating/pulsar-admin#unload"><code>unload</code></a> command.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin non-persistent unload \</span>
+  non-persistent://test-tenant/ns1/tp1 \
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-4"></a><a href="#rest-api-4" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/unloadTopic"><b>PUT</b> <i>/admin/v2/non-persistent/:tenant/:namespace/:topic/unload</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-4"></a><a href="#java-4" 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. [...]
+<pre><code class="hljs css language-java">String topic = <span class="hljs-string">"non-persistent://my-tenantmy-namespace/my-topic"</span>;
+admin.nonPersistentTopics().unload(topic);
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/admin-api-persistent-topics"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/admin-api-partitioned-topics"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#non-persistent-topics-resources">Non-persistent to [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/admin-api-non-persistent-topics/index.html b/content/docs/en/2.1.0-incubating/admin-api-non-persistent-topics/index.html
new file mode 100644
index 0000000..a8dd530
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/admin-api-non-persistent-topics/index.html
@@ -0,0 +1,275 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Managing non-persistent topics · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Non-persistent can be used in applications that only want to consume real time published messages and"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:l [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Adm [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/admin-api-non-persistent-topics.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Managing non-persistent topics</h1></header><article><div><span><p>Non-persistent can be used in applications that only want [...]
+do not need persistent guarantee that can also reduce message-publish latency by removing overhead of
+persisting messages.</p>
+<p>In all of the instructions and commands below, the topic name structure is:</p>
+<pre><code class="hljs css language-shell">persistent://tenant/namespace/topic
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="non-persistent-topics-resources"></a><a href="#non-persistent-topics-resources" 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="get-stats"></a><a href="#get-stats" 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>It shows current statistics of a given non-partitioned topic.</p>
+<ul>
+<li><p><strong>msgRateIn</strong>: The sum of all local and replication publishers' publish rates in messages per second</p></li>
+<li><p><strong>msgThroughputIn</strong>: Same as above, but in bytes per second instead of messages per second</p></li>
+<li><p><strong>msgRateOut</strong>: The sum of all local and replication consumers' dispatch rates in messages per second</p></li>
+<li><p><strong>msgThroughputOut</strong>: Same as above, but in bytes per second instead of messages per second</p></li>
+<li><p><strong>averageMsgSize</strong>: The average size in bytes of messages published within the last interval</p></li>
+<li><p><strong>publishers</strong>: The list of all local publishers into the topic. There can be zero or thousands</p></li>
+<li><p><strong>averageMsgSize</strong>: Average message size in bytes from this publisher within the last interval</p></li>
+<li><p><strong>producerId</strong>: Internal identifier for this producer on this topic</p></li>
+<li><p><strong>producerName</strong>: Internal identifier for this producer, generated by the client library</p></li>
+<li><p><strong>address</strong>: IP address and source port for the connection of this producer</p></li>
+<li><p><strong>connectedSince</strong>: Timestamp this producer was created or last reconnected</p></li>
+<li><p><strong>subscriptions</strong>: The list of all local subscriptions to the topic</p></li>
+<li><p><strong>my-subscription</strong>: The name of this subscription (client defined)</p></li>
+<li><p><strong>type</strong>: This subscription type</p></li>
+<li><p><strong>consumers</strong>: The list of connected consumers for this subscription</p></li>
+<li><p><strong>consumerName</strong>: Internal identifier for this consumer, generated by the client library</p></li>
+<li><p><strong>availablePermits</strong>: The number of messages this consumer has space for in the client library's listen queue. A value of 0 means the client library's queue is full and receive() isn't being called. A nonzero value means this consumer is ready to be dispatched messages.</p></li>
+<li><p><strong>replication</strong>: This section gives the stats for cross-colo replication of this topic</p></li>
+<li><p><strong>connected</strong>: Whether the outbound replicator is connected</p></li>
+<li><p><strong>inboundConnection</strong>: The IP and port of the broker in the remote cluster's publisher connection to this broker</p></li>
+<li><p><strong>inboundConnectedSince</strong>: The TCP connection being used to publish messages to the remote cluster. If there are no local publishers connected, this connection is automatically closed after a minute.</p></li>
+<li><p><strong>msgDropRate</strong>: for publisher: publish: broker only allows configured number of in flight per connection, and drops all other published messages above the threshold. Broker also drops messages for subscriptions in case of unavailable limit and connection is not writable.</p></li>
+</ul>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"msgRateIn"</span>: <span class="hljs-number">4641.528542257553</span>,
+  <span class="hljs-attr">"msgThroughputIn"</span>: <span class="hljs-number">44663039.74947473</span>,
+  <span class="hljs-attr">"msgRateOut"</span>: <span class="hljs-number">0</span>,
+  <span class="hljs-attr">"msgThroughputOut"</span>: <span class="hljs-number">0</span>,
+  <span class="hljs-attr">"averageMsgSize"</span>: <span class="hljs-number">1232439.816728665</span>,
+  <span class="hljs-attr">"storageSize"</span>: <span class="hljs-number">135532389160</span>,
+  <span class="hljs-attr">"msgDropRate"</span> : <span class="hljs-number">0.0</span>,
+  <span class="hljs-attr">"publishers"</span>: [
+    {
+      <span class="hljs-attr">"msgRateIn"</span>: <span class="hljs-number">57.855383881403576</span>,
+      <span class="hljs-attr">"msgThroughputIn"</span>: <span class="hljs-number">558994.7078932219</span>,
+      <span class="hljs-attr">"averageMsgSize"</span>: <span class="hljs-number">613135</span>,
+      <span class="hljs-attr">"producerId"</span>: <span class="hljs-number">0</span>,
+      <span class="hljs-attr">"producerName"</span>: <span class="hljs-literal">null</span>,
+      <span class="hljs-attr">"address"</span>: <span class="hljs-literal">null</span>,
+      <span class="hljs-attr">"connectedSince"</span>: <span class="hljs-literal">null</span>,
+      <span class="hljs-attr">"msgDropRate"</span> : <span class="hljs-number">0.0</span>
+    }
+  ],
+  <span class="hljs-attr">"subscriptions"</span>: {
+    <span class="hljs-attr">"my-topic_subscription"</span>: {
+      <span class="hljs-attr">"msgRateOut"</span>: <span class="hljs-number">0</span>,
+      <span class="hljs-attr">"msgThroughputOut"</span>: <span class="hljs-number">0</span>,
+      <span class="hljs-attr">"msgBacklog"</span>: <span class="hljs-number">116632</span>,
+      <span class="hljs-attr">"type"</span>: <span class="hljs-literal">null</span>,
+      <span class="hljs-attr">"msgRateExpired"</span>: <span class="hljs-number">36.98245516804671</span>,
+       <span class="hljs-attr">"consumers"</span> : [ {
+        <span class="hljs-attr">"msgRateOut"</span> : <span class="hljs-number">20343.506296021893</span>,
+        <span class="hljs-attr">"msgThroughputOut"</span> : <span class="hljs-number">2.0979855364233278E7</span>,
+        <span class="hljs-attr">"msgRateRedeliver"</span> : <span class="hljs-number">0.0</span>,
+        <span class="hljs-attr">"consumerName"</span> : <span class="hljs-string">"fe3c0"</span>,
+        <span class="hljs-attr">"availablePermits"</span> : <span class="hljs-number">950</span>,
+        <span class="hljs-attr">"unackedMessages"</span> : <span class="hljs-number">0</span>,
+        <span class="hljs-attr">"blockedConsumerOnUnackedMsgs"</span> : <span class="hljs-literal">false</span>,
+        <span class="hljs-attr">"address"</span> : <span class="hljs-string">"/10.73.210.249:60578"</span>,
+        <span class="hljs-attr">"connectedSince"</span> : <span class="hljs-string">"2017-07-26 15:13:48.026-0700"</span>,
+        <span class="hljs-attr">"clientVersion"</span> : <span class="hljs-string">"1.19-incubating-SNAPSHOT"</span>
+      } ],
+      <span class="hljs-attr">"msgDropRate"</span> : <span class="hljs-number">432.2390921571593</span>
+
+    }
+  },
+  <span class="hljs-attr">"replication"</span>: {}
+}
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin"></a><a href="#pulsar-admin" 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>Topic stats can be fetched using <a href="/docs/en/2.1.0-incubating/pulsar-admin#stats"><code>stats</code></a> command.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin non-persistent stats \</span>
+  non-persistent://test-tenant/ns1/tp1 \
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api"></a><a href="#rest-api" 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  [...]
+<p><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getStats"><b>GET</b> <i>/admin/v2/non-persistent/:tenant/:namespace/:topic/stats</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java"></a><a href="#java" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<pre><code class="hljs css language-java">String topic = <span class="hljs-string">"non-persistent://my-tenant/my-namespace/my-topic"</span>;
+admin.nonPersistentTopics().getStats(topic);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="get-internal-stats"></a><a href="#get-internal-stats" 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>It shows detailed statistics of a topic.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-1"></a><a href="#pulsar-admin-1" 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>Topic internal-stats can be fetched using <a href="/docs/en/2.1.0-incubating/pulsar-admin#stats-internal"><code>stats-internal</code></a> command.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin non-persistent stats-internal \</span>
+  non-persistent://test-tenant/ns1/tp1 \
+
+{
+  "entriesAddedCounter" : 48834,
+  "numberOfEntries" : 0,
+  "totalSize" : 0,
+  "cursors" : {
+    "s1" : {
+      "waitingReadOp" : false,
+      "pendingReadOps" : 0,
+      "messagesConsumedCounter" : 0,
+      "cursorLedger" : 0,
+      "cursorLedgerLastEntry" : 0
+    }
+  }
+}
+
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getInternalStats"><b>GET</b> <i>/admin/v2/non-persistent/:tenant/:namespace/:topic/internalStats</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-1"></a><a href="#java-1" 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. [...]
+<pre><code class="hljs css language-java">String topic = <span class="hljs-string">"non-persistent://my-tenant/my-namespace/my-topic"</span>;
+admin.nonPersistentTopics().getInternalStats(topic);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="create-partitioned-topic"></a><a href="#create-partitioned-topic" 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-. [...]
+<p>Partitioned topics in Pulsar must be explicitly created. When creating a new partitioned topic you need to provide a name for the topic as well as the desired number of partitions.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-2"></a><a href="#pulsar-admin-2" 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- [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin non-persistent create-partitioned-topic \</span>
+  non-persistent://my-tenant/my-namespace/my-topic \
+  --partitions 4
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-2"></a><a href="#rest-api-2" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/createPartitionedTopic"><b>PUT</b> <i>/admin/v2/non-persistent/:tenant/:namespace/:topic/partitions</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-2"></a><a href="#java-2" 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. [...]
+<pre><code class="hljs css language-java">String topicName = <span class="hljs-string">"non-persistent://my-tenant/my-namespace/my-topic"</span>;
+<span class="hljs-keyword">int</span> numPartitions = <span class="hljs-number">4</span>;
+admin.nonPersistentTopics().createPartitionedTopic(topicName, numPartitions);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="get-metadata"></a><a href="#get-metadata" 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>Partitioned topics have metadata associated with them that you can fetch as a JSON object. The following metadata fields are currently available:</p>
+<table>
+<thead>
+<tr><th style="text-align:left">Field</th><th style="text-align:left">Meaning</th></tr>
+</thead>
+<tbody>
+<tr><td style="text-align:left"><code>partitions</code></td><td style="text-align:left">The number of partitions into which the topic is divided</td></tr>
+</tbody>
+</table>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-3"></a><a href="#pulsar-admin-3" 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- [...]
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin non-persistent get-partitioned-topic-metadata \</span>
+  non-persistent://my-tenant/my-namespace/my-topic
+{
+  "partitions": 4
+}
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-3"></a><a href="#rest-api-3" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/getPartitionedMetadata"><b>GET</b> <i>/admin/v2/non-persistent/:tenant/:namespace/:topic/partitions</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-3"></a><a href="#java-3" 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. [...]
+<pre><code class="hljs css language-java">String topicName = <span class="hljs-string">"non-persistent://my-tenant/my-namespace/my-topic"</span>;
+admin.nonPersistentTopics().getPartitionedTopicMetadata(topicName);
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="unload-topic"></a><a href="#unload-topic" 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>It unloads a topic.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-admin-4"></a><a href="#pulsar-admin-4" 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>Topic can be unloaded using <a href="/docs/en/2.1.0-incubating/pulsar-admin#unload"><code>unload</code></a> command.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> pulsar-admin non-persistent unload \</span>
+  non-persistent://test-tenant/ns1/tp1 \
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="rest-api-4"></a><a href="#rest-api-4" 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><a href="https://pulsar.incubator.apache.org/en/admin-rest-api#operation/unloadTopic"><b>PUT</b> <i>/admin/v2/non-persistent/:tenant/:namespace/:topic/unload</i></a>
+</p>
+<h4><a class="anchor" aria-hidden="true" id="java-4"></a><a href="#java-4" 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. [...]
+<pre><code class="hljs css language-java">String topic = <span class="hljs-string">"non-persistent://my-tenantmy-namespace/my-topic"</span>;
+admin.nonPersistentTopics().unload(topic);
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/admin-api-persistent-topics"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/admin-api-partitioned-topics"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#non-persistent-topics-resources">Non-persistent to [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/admin-api-overview.html b/content/docs/en/2.1.0-incubating/admin-api-overview.html
new file mode 100644
index 0000000..d1ce508
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/admin-api-overview.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>The Pulsar admin interface · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="The Pulsar admin interface enables you to manage all of the important entities in a Pulsar [instance](/docs/en/2.1.0-incubating/reference-terminology#instance), such as [tenants](/docs/en/2. [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Adm [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docMainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/admin-api-overview.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">The Pulsar admin interface</h1></header><article><div><span><p>The Pulsar admin interface enables you to manage all of the important enti [...]
+<p>You can currently interact with the admin interface via:</p>
+<ul>
+<li>Making HTTP calls against the admin <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API provided by Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#broker">brokers</a>. For some restful apis, they might be redirected to topic owner brokers for serving
+with <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307"><code>307 Temporary Redirect</code></a>, hence the HTTP callers should handle <code>307 Temporary Redirect</code>. If you are using <code>curl</code>, you should specify <code>-L</code>
+to handle redirections.</li>
+<li>The <code>pulsar-admin</code> CLI tool, which is available in the <code>bin</code> folder of your <a href="/docs/en/2.1.0-incubating/standalone">Pulsar installation</a>:</li>
+</ul>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin</span>
+</code></pre>
+<p>Full documentation for this tool can be found in the <a href="/docs/en/2.1.0-incubating/pulsar-admin">Pulsar command-line tools</a> doc.</p>
+<ul>
+<li>A Java client interface.</li>
+</ul>
+<blockquote>
+<h4><a class="anchor" aria-hidden="true" id="the-rest-api-is-the-admin-interface"></a><a href="#the-rest-api-is-the-admin-interface" 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 [...]
+<p>Under the hood, both the <code>pulsar-admin</code> CLI tool and the Java client both use the REST API. If you’d like to implement your own admin interface client, you should use the REST API as well. Full documentation can be found here.</p>
+</blockquote>
+<p>In this document, examples from each of the three available interfaces will be shown.</p>
+<h2><a class="anchor" aria-hidden="true" id="admin-setup"></a><a href="#admin-setup" 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 [...]
+<p>Each of Pulsar's three admin interfaces---the <a href="/docs/en/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI tool, the <a href="/api/admin">Java admin API</a>, and the <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API ---requires some special setup if you have <a href="/docs/en/2.1.0-incubating/security-overview#authentication-providers">authentication</a> enabled in your Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#instance">instance</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="pulsar-admin"></a><a href="#pulsar-admin" 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>If you have <a href="/docs/en/2.1.0-incubating/security-overview#authentication-providers">authentication</a> enabled, you will need to provide an auth configuration to use the <a href="/docs/en/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool. By default, the configuration for the <code>pulsar-admin</code> tool is found in the <a href="/docs/en/2.1.0-incubating/reference-configuration#client"><code>conf/client.conf</code></a> file. Here are the available parameters:</p>
+<table>
+<thead>
+<tr><th>Name</th><th>Description</th><th>Default</th></tr>
+</thead>
+<tbody>
+<tr><td>webServiceUrl</td><td>The web URL for the cluster.</td><td><a href="http://localhost:8080/">http://localhost:8080/</a></td></tr>
+<tr><td>brokerServiceUrl</td><td>The Pulsar protocol URL for the cluster.</td><td><a href="pulsar://localhost:6650/">pulsar://localhost:6650/</a></td></tr>
+<tr><td>authPlugin</td><td>The authentication plugin.</td><td></td></tr>
+<tr><td>authParams</td><td>The authentication parameters for the cluster, as a comma-separated string.</td><td></td></tr>
+<tr><td>useTls</td><td>Whether or not TLS authentication will be enforced in the cluster.</td><td>false</td></tr>
+<tr><td>tlsAllowInsecureConnection</td><td>Accept untrusted TLS certificate from client.</td><td>false</td></tr>
+<tr><td>tlsTrustCertsFilePath</td><td>Path for the trusted TLS certificate file.</td><td></td></tr>
+</tbody>
+</table>
+<h3><a class="anchor" aria-hidden="true" id="rest-api"></a><a href="#rest-api" 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  [...]
+<p>You can find documentation for the REST API exposed by Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#broker">brokers</a> in this reference <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">document</a>
+.</p>
+<h3><a class="anchor" aria-hidden="true" id="java-admin-client"></a><a href="#java-admin-client" 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 the Java admin API, instantiate a <a href="https://pulsar.incubator.apache.org/api/admin/org/apache/pulsar/client/admin/PulsarAdmin">PulsarAdmin</a>
+ object, specifying a URL for a Pulsar <a href="/docs/en/2.1.0-incubating/reference-terminology#broker">broker</a> and a <a href="https://pulsar.incubator.apache.org/api/admin/org/apache/pulsar/client/admin/ClientConfiguration">ClientConfiguration</a>
+. Here's a minimal example using <code>localhost</code>:</p>
+<pre><code class="hljs css language-java">URL url = <span class="hljs-keyword">new</span> URL(<span class="hljs-string">"http://localhost:8080"</span>);
+<span class="hljs-comment">// Pass auth-plugin class fully-qualified name if Pulsar-security enabled</span>
+String authPluginClassName = <span class="hljs-string">"com.org.MyAuthPluginClass"</span>; 
+<span class="hljs-comment">// Pass auth-param if auth-plugin class requires it</span>
+String authParams = <span class="hljs-string">"param1=value1"</span>;
+<span class="hljs-keyword">boolean</span> useTls = <span class="hljs-keyword">false</span>;
+<span class="hljs-keyword">boolean</span> tlsAllowInsecureConnection = <span class="hljs-keyword">false</span>;
+String tlsTrustCertsFilePath = <span class="hljs-keyword">null</span>;
+
+ClientConfiguration config = <span class="hljs-keyword">new</span> ClientConfiguration();
+config.setAuthentication(authPluginClassName, authParams);
+config.setUseTls(useTls);
+config.setTlsAllowInsecureConnection(tlsAllowInsecureConnection);
+config.setTlsTrustCertsFilePath(tlsTrustCertsFilePath);
+
+PulsarAdmin admin = <span class="hljs-keyword">new</span> PulsarAdmin(url, config);
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.1.0-incubating/client-libraries-websocket"><span class="arrow-prev">← </span><span>Previous</span></a><a class="docs-next button" href="/docs/en/2.1.0-incubating/admin-api-clusters"><span>Next</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#admin-setup">Admin setup</a><ul class="toc-headings"><li><a h [...]
+      const community = document.querySelector("a[href='#community']").parentNode;
+      const communityMenu =
+        '<li>' +
+        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
+        '<div id="community-dropdown" class="hide">' +
+          '<ul id="community-dropdown-items">' +
+            '<li><a href="/en/contact">Contact</a></li>' +
+            '<li><a href="/en/contributing">Contributing</a></li>' +
+            '<li><a href="/en/events">Events</a></li>' +
+            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
+            '<li><a href="https://github.com/apache/incubator-pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
+            '<li>&nbsp;</li>' +
+            '<li><a href="/en/resources">Resources</a></li>' +
+            '<li><a href="/en/team">Team</a></li>' +
+          '</ul>' +
+        '</div>' +
+        '</li>';
+
+      community.innerHTML = communityMenu;
+
+      const communityMenuItem = document.getElementById("community-menu");
+      const communityDropDown = document.getElementById("community-dropdown");
+      communityMenuItem.addEventListener("click", function(event) {
+        event.preventDefault();
+
+        if (communityDropDown.className == 'hide') {
+          communityDropDown.className = 'visible';
+        } else {
+          communityDropDown.className = 'hide';
+        }
+      });
+    </script></span><span><script src="/js/pjax-api.min.js"></script><script>window.navfoo = new Pjax({
+            areas: [
+              // try to use the first query.
+              '.mainContainer, .docsNavContainer .toc .navWrapper, .onPageNav',
+              // fallback
+              'body'
+            ],
+            link: '.docsNavContainer:not(.docsSliderActive) a',
+            update: {
+              script: false,
+            }
+          });
+        </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</scri [...]
+              var search = docsearch({
+                
+                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
+                indexName: 'apache_pulsar',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:2.1.0-incubating"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/content/docs/en/2.1.0-incubating/admin-api-overview/index.html b/content/docs/en/2.1.0-incubating/admin-api-overview/index.html
new file mode 100644
index 0000000..d1ce508
--- /dev/null
+++ b/content/docs/en/2.1.0-incubating/admin-api-overview/index.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>The Pulsar admin interface · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="The Pulsar admin interface enables you to manage all of the important entities in a Pulsar [instance](/docs/en/2.1.0-incubating/reference-terminology#instance), such as [tenants](/docs/en/2. [...]
+              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+              ga('create', 'UA-102219959-1', 'auto');
+              ga('send', 'pageview');
+            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="he [...]
+        const languagesMenuItem = document.getElementById("languages-menu");
+        const languagesDropDown = document.getElementById("languages-dropdown");
+        languagesMenuItem.addEventListener("click", function(event) {
+          event.preventDefault();
+
+          if (languagesDropDown.className == "hide") {
+            languagesDropDown.className = "visible";
+          } else {
+            languagesDropDown.className = "hide";
+          }
+        });
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i>›</i><span>Adm [...]
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              const headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                if (event.target.tagName === 'A') {
+                  document.body.classList.remove('tocActive');
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
... 221908 lines suppressed ...