blob: 703269a3477ddcf904b8ae1fbb6e1d03a430d659 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.pulsar.client.admin;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import org.apache.pulsar.client.admin.PulsarAdminException.ConflictException;
import org.apache.pulsar.client.admin.PulsarAdminException.NotAuthorizedException;
import org.apache.pulsar.client.admin.PulsarAdminException.NotFoundException;
import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException;
import org.apache.pulsar.client.api.SubscriptionType;
import org.apache.pulsar.common.policies.data.AuthAction;
import org.apache.pulsar.common.policies.data.AutoSubscriptionCreationOverride;
import org.apache.pulsar.common.policies.data.AutoTopicCreationOverride;
import org.apache.pulsar.common.policies.data.BacklogQuota;
import org.apache.pulsar.common.policies.data.BookieAffinityGroupData;
import org.apache.pulsar.common.policies.data.BundlesData;
import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies;
import org.apache.pulsar.common.policies.data.DispatchRate;
import org.apache.pulsar.common.policies.data.InactiveTopicPolicies;
import org.apache.pulsar.common.policies.data.OffloadPolicies;
import org.apache.pulsar.common.policies.data.PersistencePolicies;
import org.apache.pulsar.common.policies.data.Policies;
import org.apache.pulsar.common.policies.data.PublishRate;
import org.apache.pulsar.common.policies.data.RetentionPolicies;
import org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy;
import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy;
import org.apache.pulsar.common.policies.data.SubscribeRate;
import org.apache.pulsar.common.policies.data.SubscriptionAuthMode;
/**
* Admin interface for namespaces management.
*/
public interface Namespaces {
/**
* Get the list of namespaces.
* <p/>
* Get the list of all the namespaces for a certain tenant.
* <p/>
* Response Example:
*
* <pre>
* <code>["my-tenant/c1/namespace1",
* "my-tenant/global/namespace2",
* "my-tenant/c2/namespace3"]</code>
* </pre>
*
* @param tenant
* Tenant name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Tenant does not exist
* @throws PulsarAdminException
* Unexpected error
*/
List<String> getNamespaces(String tenant) throws PulsarAdminException;
/**
* Get the list of namespaces asynchronously.
* <p/>
* Get the list of all the namespaces for a certain tenant.
* <p/>
* Response Example:
*
* <pre>
* <code>["my-tenant/c1/namespace1",
* "my-tenant/global/namespace2",
* "my-tenant/c2/namespace3"]</code>
* </pre>
*
* @param tenant
* Tenant name
*/
CompletableFuture<List<String>> getNamespacesAsync(String tenant);
/**
* Get the list of namespaces.
* <p/>
* Get the list of all the namespaces for a certain tenant on single cluster.
* <p/>
* Response Example:
*
* <pre>
* <code>["my-tenant/use/namespace1", "my-tenant/use/namespace2"]</code>
* </pre>
*
* @param tenant
* Tenant name
* @param cluster
* Cluster name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Tenant or cluster does not exist
* @throws PulsarAdminException
* Unexpected error
*/
@Deprecated
List<String> getNamespaces(String tenant, String cluster) throws PulsarAdminException;
/**
* Get the list of topics.
* <p/>
* Get the list of all the topics under a certain namespace.
* <p/>
* Response Example:
*
* <pre>
* <code>["persistent://my-tenant/use/namespace1/my-topic-1",
* "persistent://my-tenant/use/namespace1/my-topic-2"]</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
List<String> getTopics(String namespace) throws PulsarAdminException;
/**
* Get the list of topics asynchronously.
* <p/>
* Get the list of all the topics under a certain namespace.
* <p/>
* Response Example:
*
* <pre>
* <code>["persistent://my-tenant/use/namespace1/my-topic-1",
* "persistent://my-tenant/use/namespace1/my-topic-2"]</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<List<String>> getTopicsAsync(String namespace);
/**
* Get the list of bundles.
* <p/>
* Get the list of all the bundles under a certain namespace.
* <p/>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
BundlesData getBundles(String namespace) throws PulsarAdminException;
/**
* Get the list of bundles asynchronously.
* <p/>
* Get the list of all the bundles under a certain namespace.
* <p/>
*
* @param namespace
* Namespace name
*/
CompletableFuture<BundlesData> getBundlesAsync(String namespace);
/**
* Get policies for a namespace.
* <p/>
* Get the dump all the policies specified for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>{
* "auth_policies" : {
* "namespace_auth" : {
* "my-role" : [ "produce" ]
* },
* "destination_auth" : {
* "persistent://prop/local/ns1/my-topic" : {
* "role-1" : [ "produce" ],
* "role-2" : [ "consume" ]
* }
* }
* },
* "replication_clusters" : ["use", "usw"],
* "message_ttl_in_seconds" : 300
* }</code>
* </pre>
*
* @see Policies
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Policies getPolicies(String namespace) throws PulsarAdminException;
/**
* Get policies for a namespace asynchronously.
* <p/>
* Get the dump all the policies specified for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>{
* "auth_policies" : {
* "namespace_auth" : {
* "my-role" : [ "produce" ]
* },
* "destination_auth" : {
* "persistent://prop/local/ns1/my-topic" : {
* "role-1" : [ "produce" ],
* "role-2" : [ "consume" ]
* }
* }
* },
* "replication_clusters" : ["use", "usw"],
* "message_ttl_in_seconds" : 300
* }</code>
* </pre>
*
* @see Policies
*
* @param namespace
* Namespace name
*/
CompletableFuture<Policies> getPoliciesAsync(String namespace);
/**
* Create a new namespace.
* <p/>
* Creates a new empty namespace with no policies attached.
*
* @param namespace
* Namespace name
* @param numBundles
* Number of bundles
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Tenant or cluster does not exist
* @throws ConflictException
* Namespace already exists
* @throws PulsarAdminException
* Unexpected error
*/
void createNamespace(String namespace, int numBundles) throws PulsarAdminException;
/**
* Create a new namespace.
* <p/>
* Creates a new empty namespace with no policies attached.
*
* @param namespace
* Namespace name
* @param numBundles
* Number of bundles
*/
CompletableFuture<Void> createNamespaceAsync(String namespace, int numBundles);
/**
* Create a new namespace.
* <p/>
* Creates a new empty namespace with no policies attached.
*
* @param namespace
* Namespace name
* @param bundlesData
* Bundles Data
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Tenant or cluster does not exist
* @throws ConflictException
* Namespace already exists
* @throws PulsarAdminException
* Unexpected error
*/
void createNamespace(String namespace, BundlesData bundlesData) throws PulsarAdminException;
/**
* Create a new namespace asynchronously.
* <p/>
* Creates a new empty namespace with no policies attached.
*
* @param namespace
* Namespace name
* @param bundlesData
* Bundles Data
*/
CompletableFuture<Void> createNamespaceAsync(String namespace, BundlesData bundlesData);
/**
* Create a new namespace.
* <p/>
* Creates a new empty namespace with no policies attached.
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Tenant or cluster does not exist
* @throws ConflictException
* Namespace already exists
* @throws PulsarAdminException
* Unexpected error
*/
void createNamespace(String namespace) throws PulsarAdminException;
/**
* Create a new namespace asynchronously.
* <p/>
* Creates a new empty namespace with no policies attached.
*
* @param namespace
* Namespace name
*/
CompletableFuture<Void> createNamespaceAsync(String namespace);
/**
* Create a new namespace.
* <p/>
* Creates a new empty namespace with no policies attached.
*
* @param namespace
* Namespace name
* @param clusters
* Clusters in which the namespace will be present. If more than one cluster is present, replication
* across clusters will be enabled.
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Tenant or cluster does not exist
* @throws ConflictException
* Namespace already exists
* @throws PulsarAdminException
* Unexpected error
*/
void createNamespace(String namespace, Set<String> clusters) throws PulsarAdminException;
/**
* Create a new namespace asynchronously.
* <p/>
* Creates a new empty namespace with no policies attached.
*
* @param namespace
* Namespace name
* @param clusters
* Clusters in which the namespace will be present. If more than one cluster is present, replication
* across clusters will be enabled.
*/
CompletableFuture<Void> createNamespaceAsync(String namespace, Set<String> clusters);
/**
* Create a new namespace.
* <p/>
* Creates a new namespace with the specified policies.
*
* @param namespace
* Namespace name
* @param policies
* Policies for the namespace
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Tenant or cluster does not exist
* @throws ConflictException
* Namespace already exists
* @throws PulsarAdminException
* Unexpected error
*
* @since 2.0
*/
void createNamespace(String namespace, Policies policies) throws PulsarAdminException;
/**
* Create a new namespace asynchronously.
* <p/>
* Creates a new namespace with the specified policies.
*
* @param namespace
* Namespace name
* @param policies
* Policies for the namespace
*/
CompletableFuture<Void> createNamespaceAsync(String namespace, Policies policies);
/**
* Delete an existing namespace.
* <p/>
* The namespace needs to be empty.
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws ConflictException
* Namespace is not empty
* @throws PulsarAdminException
* Unexpected error
*/
void deleteNamespace(String namespace) throws PulsarAdminException;
/**
* Delete an existing namespace.
* <p/>
* Force flag deletes namespace forcefully by force deleting all topics under it.
*
* @param namespace
* Namespace name
* @param force
* Delete namespace forcefully
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws ConflictException
* Namespace is not empty
* @throws PulsarAdminException
* Unexpected error
*/
void deleteNamespace(String namespace, boolean force) throws PulsarAdminException;
/**
* Delete an existing namespace asynchronously.
* <p/>
* The namespace needs to be empty.
*
* @param namespace
* Namespace name
*/
CompletableFuture<Void> deleteNamespaceAsync(String namespace);
/**
* Delete an existing namespace asynchronously.
* <p/>
* Force flag deletes namespace forcefully by force deleting all topics under it.
*
* @param namespace
* Namespace name
* @param force
* Delete namespace forcefully
*/
CompletableFuture<Void> deleteNamespaceAsync(String namespace, boolean force);
/**
* Delete an existing bundle in a namespace.
* <p/>
* The bundle needs to be empty.
*
* @param namespace
* Namespace name
* @param bundleRange
* range of the bundle
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Namespace/bundle does not exist
* @throws ConflictException
* Bundle is not empty
* @throws PulsarAdminException
* Unexpected error
*/
void deleteNamespaceBundle(String namespace, String bundleRange) throws PulsarAdminException;
/**
* Delete an existing bundle in a namespace.
* <p/>
* Force flag deletes bundle forcefully.
*
* @param namespace
* Namespace name
* @param bundleRange
* range of the bundle
* @param force
* Delete bundle forcefully
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Namespace/bundle does not exist
* @throws ConflictException
* Bundle is not empty
* @throws PulsarAdminException
* Unexpected error
*/
void deleteNamespaceBundle(String namespace, String bundleRange, boolean force) throws PulsarAdminException;
/**
* Delete an existing bundle in a namespace asynchronously.
* <p/>
* The bundle needs to be empty.
*
* @param namespace
* Namespace name
* @param bundleRange
* range of the bundle
*
* @return a future that can be used to track when the bundle is deleted
*/
CompletableFuture<Void> deleteNamespaceBundleAsync(String namespace, String bundleRange);
/**
* Delete an existing bundle in a namespace asynchronously.
* <p/>
* Force flag deletes bundle forcefully.
*
* @param namespace
* Namespace name
* @param bundleRange
* range of the bundle
* @param force
* Delete bundle forcefully
*
* @return a future that can be used to track when the bundle is deleted
*/
CompletableFuture<Void> deleteNamespaceBundleAsync(String namespace, String bundleRange, boolean force);
/**
* Get permissions on a namespace.
* <p/>
* Retrieve the permissions for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>{
* "my-role" : [ "produce" ]
* "other-role" : [ "consume" ]
* }</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Map<String, Set<AuthAction>> getPermissions(String namespace) throws PulsarAdminException;
/**
* Get permissions on a namespace asynchronously.
* <p/>
* Retrieve the permissions for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>{
* "my-role" : [ "produce" ]
* "other-role" : [ "consume" ]
* }</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Map<String, Set<AuthAction>>> getPermissionsAsync(String namespace);
/**
* Grant permission on a namespace.
* <p/>
* Grant a new permission to a client role on a namespace.
* <p/>
* Request parameter example:
*
* <pre>
* <code>["produce", "consume"]</code>
* </pre>
*
* @param namespace
* Namespace name
* @param role
* Client role to which grant permission
* @param actions
* Auth actions (produce and consume)
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws ConflictException
* Concurrent modification
* @throws PulsarAdminException
* Unexpected error
*/
void grantPermissionOnNamespace(String namespace, String role, Set<AuthAction> actions) throws PulsarAdminException;
/**
* Grant permission on a namespace asynchronously.
* <p/>
* Grant a new permission to a client role on a namespace.
* <p/>
* Request parameter example:
*
* <pre>
* <code>["produce", "consume"]</code>
* </pre>
*
* @param namespace
* Namespace name
* @param role
* Client role to which grant permission
* @param actions
* Auth actions (produce and consume)
*/
CompletableFuture<Void> grantPermissionOnNamespaceAsync(String namespace, String role, Set<AuthAction> actions);
/**
* Revoke permissions on a namespace.
* <p/>
* Revoke all permissions to a client role on a namespace.
*
* @param namespace
* Namespace name
* @param role
* Client role to which remove permissions
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void revokePermissionsOnNamespace(String namespace, String role) throws PulsarAdminException;
/**
* Revoke permissions on a namespace asynchronously.
* <p/>
* Revoke all permissions to a client role on a namespace.
*
* @param namespace
* Namespace name
* @param role
* Client role to which remove permissions
*/
CompletableFuture<Void> revokePermissionsOnNamespaceAsync(String namespace, String role);
/**
* Grant permission to role to access subscription's admin-api.
* @param namespace
* @param subscription
* @param roles
* @throws PulsarAdminException
*/
void grantPermissionOnSubscription(String namespace, String subscription, Set<String> roles)
throws PulsarAdminException;
/**
* Grant permission to role to access subscription's admin-api asynchronously.
* @param namespace
* @param subscription
* @param roles
*/
CompletableFuture<Void> grantPermissionOnSubscriptionAsync(
String namespace, String subscription, Set<String> roles);
/**
* Revoke permissions on a subscription's admin-api access.
* @param namespace
* @param subscription
* @param role
* @throws PulsarAdminException
*/
void revokePermissionOnSubscription(String namespace, String subscription, String role) throws PulsarAdminException;
/**
* Revoke permissions on a subscription's admin-api access asynchronously.
* @param namespace
* @param subscription
* @param role
*/
CompletableFuture<Void> revokePermissionOnSubscriptionAsync(String namespace, String subscription, String role);
/**
* Get the replication clusters for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>["use", "usw", "usc"]</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PreconditionFailedException
* Namespace is not global
* @throws PulsarAdminException
* Unexpected error
*/
List<String> getNamespaceReplicationClusters(String namespace) throws PulsarAdminException;
/**
* Get the replication clusters for a namespace asynchronously.
* <p/>
* Response example:
*
* <pre>
* <code>["use", "usw", "usc"]</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<List<String>> getNamespaceReplicationClustersAsync(String namespace);
/**
* Set the replication clusters for a namespace.
* <p/>
* Request example:
*
* <pre>
* <code>["us-west", "us-east", "us-cent"]</code>
* </pre>
*
* @param namespace
* Namespace name
* @param clusterIds
* Pulsar Cluster Ids
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PreconditionFailedException
* Namespace is not global
* @throws PreconditionFailedException
* Invalid cluster ids
* @throws PulsarAdminException
* Unexpected error
*/
void setNamespaceReplicationClusters(String namespace, Set<String> clusterIds) throws PulsarAdminException;
/**
* Set the replication clusters for a namespace asynchronously.
* <p/>
* Request example:
*
* <pre>
* <code>["us-west", "us-east", "us-cent"]</code>
* </pre>
*
* @param namespace
* Namespace name
* @param clusterIds
* Pulsar Cluster Ids
*/
CompletableFuture<Void> setNamespaceReplicationClustersAsync(String namespace, Set<String> clusterIds);
/**
* Get the message TTL for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>60</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Integer getNamespaceMessageTTL(String namespace) throws PulsarAdminException;
/**
* Get the message TTL for a namespace asynchronously.
* <p/>
* Response example:
*
* <pre>
* <code>60</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Integer> getNamespaceMessageTTLAsync(String namespace);
/**
* Set the messages Time to Live for all the topics within a namespace.
* <p/>
* Request example:
*
* <pre>
* <code>60</code>
* </pre>
*
* @param namespace
* Namespace name
* @param ttlInSeconds
* TTL values for all messages for all topics in this namespace
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setNamespaceMessageTTL(String namespace, int ttlInSeconds) throws PulsarAdminException;
/**
* Set the messages Time to Live for all the topics within a namespace asynchronously.
* <p/>
* Request example:
*
* <pre>
* <code>60</code>
* </pre>
*
* @param namespace
* Namespace name
* @param ttlInSeconds
* TTL values for all messages for all topics in this namespace
*/
CompletableFuture<Void> setNamespaceMessageTTLAsync(String namespace, int ttlInSeconds);
/**
* Remove the messages Time to Live for all the topics within a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removeNamespaceMessageTTL(String namespace) throws PulsarAdminException;
/**
* Remove the messages Time to Live for all the topics within a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeNamespaceMessageTTLAsync(String namespace);
/**
* Get the subscription expiration time for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>1440</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
int getSubscriptionExpirationTime(String namespace) throws PulsarAdminException;
/**
* Get the subscription expiration time for a namespace asynchronously.
* <p/>
* Response example:
*
* <pre>
* <code>1440</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Integer> getSubscriptionExpirationTimeAsync(String namespace);
/**
* Set the subscription expiration time in minutes for all the topics within a namespace.
* <p/>
* Request example:
*
* <pre>
* <code>1440</code>
* </pre>
*
* @param namespace
* Namespace name
* @param expirationTime
* Expiration time values for all subscriptions for all topics in this namespace
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setSubscriptionExpirationTime(String namespace, int expirationTime) throws PulsarAdminException;
/**
* Set the subscription expiration time in minutes for all the topics within a namespace asynchronously.
* <p/>
* Request example:
*
* <pre>
* <code>1440</code>
* </pre>
*
* @param namespace
* Namespace name
* @param expirationTime
* Expiration time values for all subscriptions for all topics in this namespace
*/
CompletableFuture<Void> setSubscriptionExpirationTimeAsync(String namespace, int expirationTime);
/**
* Set anti-affinity group name for a namespace.
* <p/>
* Request example:
*
* @param namespace
* Namespace name
* @param namespaceAntiAffinityGroup
* anti-affinity group name for a namespace
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setNamespaceAntiAffinityGroup(String namespace, String namespaceAntiAffinityGroup) throws PulsarAdminException;
/**
* Set anti-affinity group name for a namespace asynchronously.
* <p/>
* Request example:
*
* @param namespace
* Namespace name
* @param namespaceAntiAffinityGroup
* anti-affinity group name for a namespace
*/
CompletableFuture<Void> setNamespaceAntiAffinityGroupAsync(String namespace, String namespaceAntiAffinityGroup);
/**
* Get all namespaces that grouped with given anti-affinity group.
*
* @param tenant
* tenant is only used for authorization. Client has to be admin of any of the tenant to access this
* api api.
* @param cluster
* cluster name
* @param namespaceAntiAffinityGroup
* Anti-affinity group name
* @return list of namespace grouped under a given anti-affinity group
* @throws PulsarAdminException
*/
List<String> getAntiAffinityNamespaces(String tenant, String cluster, String namespaceAntiAffinityGroup)
throws PulsarAdminException;
/**
* Get all namespaces that grouped with given anti-affinity group asynchronously.
*
* @param tenant
* tenant is only used for authorization. Client has to be admin of any of the tenant to access this
* api api.
* @param cluster
* cluster name
* @param namespaceAntiAffinityGroup
* Anti-affinity group name
* @return list of namespace grouped under a given anti-affinity group
*/
CompletableFuture<List<String>> getAntiAffinityNamespacesAsync(
String tenant, String cluster, String namespaceAntiAffinityGroup);
/**
* Get anti-affinity group name for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>60</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
String getNamespaceAntiAffinityGroup(String namespace) throws PulsarAdminException;
/**
* Get anti-affinity group name for a namespace asynchronously.
* <p/>
* Response example:
*
* <pre>
* <code>60</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<String> getNamespaceAntiAffinityGroupAsync(String namespace);
/**
* Delete anti-affinity group name for a namespace.
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* You don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void deleteNamespaceAntiAffinityGroup(String namespace) throws PulsarAdminException;
/**
* Delete anti-affinity group name for a namespace.
*
* @param namespace
* Namespace name
*/
CompletableFuture<Void> deleteNamespaceAntiAffinityGroupAsync(String namespace);
/**
* Remove the deduplication status for all topics within a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removeDeduplicationStatus(String namespace) throws PulsarAdminException;
/**
* Get the deduplication status for all topics within a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeDeduplicationStatusAsync(String namespace);
/**
* Get the deduplication status for all topics within a namespace .
* @param namespace
* @return
* @throws PulsarAdminException
*/
Boolean getDeduplicationStatus(String namespace) throws PulsarAdminException;
/**
* Get the deduplication status for all topics within a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Boolean> getDeduplicationStatusAsync(String namespace);
/**
* Set the deduplication status for all topics within a namespace.
* <p/>
* When deduplication is enabled, the broker will prevent to store the same message multiple times.
* <p/>
* Request example:
*
* <pre>
* <code>true</code>
* </pre>
*
* @param namespace
* Namespace name
* @param enableDeduplication
* wether to enable or disable deduplication feature
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setDeduplicationStatus(String namespace, boolean enableDeduplication) throws PulsarAdminException;
/**
* Set the deduplication status for all topics within a namespace asynchronously.
* <p/>
* When deduplication is enabled, the broker will prevent to store the same message multiple times.
* <p/>
* Request example:
*
* <pre>
* <code>true</code>
* </pre>
*
* @param namespace
* Namespace name
* @param enableDeduplication
* wether to enable or disable deduplication feature
*/
CompletableFuture<Void> setDeduplicationStatusAsync(String namespace, boolean enableDeduplication);
/**
* Sets the autoTopicCreation policy for a given namespace, overriding broker settings.
* <p/>
* When autoTopicCreationOverride is enabled, new topics will be created upon connection,
* regardless of the broker level configuration.
* <p/>
* Request example:
*
* <pre>
* <code>
* {
* "allowAutoTopicCreation" : true,
* "topicType" : "partitioned",
* "defaultNumPartitions": 2
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param autoTopicCreationOverride
* Override policies for auto topic creation
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setAutoTopicCreation(String namespace, AutoTopicCreationOverride autoTopicCreationOverride)
throws PulsarAdminException;
/**
* Sets the autoTopicCreation policy for a given namespace, overriding broker settings asynchronously.
* <p/>
* When autoTopicCreationOverride is enabled, new topics will be created upon connection,
* regardless of the broker level configuration.
* <p/>
* Request example:
*
* <pre>
* <code>
* {
* "allowAutoTopicCreation" : true,
* "topicType" : "partitioned",
* "defaultNumPartitions": 2
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param autoTopicCreationOverride
* Override policies for auto topic creation
*/
CompletableFuture<Void> setAutoTopicCreationAsync(
String namespace, AutoTopicCreationOverride autoTopicCreationOverride);
/**
* Removes the autoTopicCreation policy for a given namespace.
* <p/>
* Allowing the broker to dictate the auto-creation policy.
* <p/>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void removeAutoTopicCreation(String namespace) throws PulsarAdminException;
/**
* Removes the autoTopicCreation policy for a given namespace asynchronously.
* <p/>
* Allowing the broker to dictate the auto-creation policy.
* <p/>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Void> removeAutoTopicCreationAsync(String namespace);
/**
* Sets the autoSubscriptionCreation policy for a given namespace, overriding broker settings.
* <p/>
* When autoSubscriptionCreationOverride is enabled, new subscriptions will be created upon connection,
* regardless of the broker level configuration.
* <p/>
* Request example:
*
* <pre>
* <code>
* {
* "allowAutoSubscriptionCreation" : true
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param autoSubscriptionCreationOverride
* Override policies for auto subscription creation
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setAutoSubscriptionCreation(
String namespace, AutoSubscriptionCreationOverride autoSubscriptionCreationOverride)
throws PulsarAdminException;
/**
* Sets the autoSubscriptionCreation policy for a given namespace, overriding broker settings asynchronously.
* <p/>
* When autoSubscriptionCreationOverride is enabled, new subscriptions will be created upon connection,
* regardless of the broker level configuration.
* <p/>
* Request example:
*
* <pre>
* <code>
* {
* "allowAutoSubscriptionCreation" : true
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param autoSubscriptionCreationOverride
* Override policies for auto subscription creation
*/
CompletableFuture<Void> setAutoSubscriptionCreationAsync(
String namespace, AutoSubscriptionCreationOverride autoSubscriptionCreationOverride);
/**
* Sets the subscriptionTypesEnabled policy for a given namespace, overriding broker settings.
*
* Request example:
*
* <pre>
* <code>
* {
* "subscriptionTypesEnabled" : {"Shared", "Failover"}
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param subscriptionTypesEnabled
* is enable subscription types
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setSubscriptionTypesEnabled(String namespace,
Set<SubscriptionType> subscriptionTypesEnabled) throws PulsarAdminException;
/**
* Sets the subscriptionTypesEnabled policy for a given namespace, overriding broker settings.
*
* Request example:
*
* <pre>
* <code>
* {
* "subscriptionTypesEnabled" : {"Shared", "Failover"}
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param subscriptionTypesEnabled
* is enable subscription types
*/
CompletableFuture<Void> setSubscriptionTypesEnabledAsync(String namespace,
Set<SubscriptionType> subscriptionTypesEnabled);
/**
* Get the subscriptionTypesEnabled policy for a given namespace, overriding broker settings.
*
* @param namespace
* Namespace name
* @return subscription types {@link Set<SubscriptionType>} the subscription types
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Set<SubscriptionType> getSubscriptionTypesEnabled(String namespace) throws PulsarAdminException;
/**
* Get the subscriptionTypesEnabled policy for a given namespace, overriding broker settings.
*
* @param namespace
* Namespace name
* @return the future of subscription types {@link Set<SubscriptionType>} the subscription types
*/
CompletableFuture<Set<SubscriptionType>> getSubscriptionTypesEnabledAsync(String namespace);
/**
* Removes the autoSubscriptionCreation policy for a given namespace.
* <p/>
* Allowing the broker to dictate the subscription auto-creation policy.
* <p/>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void removeAutoSubscriptionCreation(String namespace) throws PulsarAdminException;
/**
* Removes the autoSubscriptionCreation policy for a given namespace asynchronously.
* <p/>
* Allowing the broker to dictate the subscription auto-creation policy.
* <p/>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Void> removeAutoSubscriptionCreationAsync(String namespace);
/**
* Get the bundles split data.
*
* @param namespace
* Namespace name
*
* @HttpCode 200 Successfully retrieved
* @HttpCode 403 Don't have admin permission
* @HttpCode 404 Namespace does not exist
* @HttpCode 412 Namespace is not setup to split in bundles
*/
// BundlesData getBundlesData(String namespace);
/**
* Get backlog quota map on a namespace.
* <p/>
* Get backlog quota map on a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>
* {
* "namespace_memory" : {
* "limit" : "134217728",
* "policy" : "consumer_backlog_eviction"
* },
* "destination_storage" : {
* "limit" : "-1",
* "policy" : "producer_exception"
* }
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Permission denied
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Map<BacklogQuota.BacklogQuotaType, BacklogQuota> getBacklogQuotaMap(String namespace) throws PulsarAdminException;
/**
* Get backlog quota map on a namespace asynchronously.
* <p/>
* Get backlog quota map on a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>
* {
* "namespace_memory" : {
* "limit" : "134217728",
* "policy" : "consumer_backlog_eviction"
* },
* "destination_storage" : {
* "limit" : "-1",
* "policy" : "producer_exception"
* }
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Map<BacklogQuota.BacklogQuotaType, BacklogQuota>> getBacklogQuotaMapAsync(String namespace);
/**
* Set a backlog quota for all the topics on a namespace.
* <p/>
* Set a backlog quota on a namespace.
* <p/>
* The backlog quota can be set on this resource:
* <p/>
* Request parameter example:
*
* <pre>
* <code>
* {
* "limit" : "134217728",
* "policy" : "consumer_backlog_eviction"
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param backlogQuota
* the new BacklogQuota
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setBacklogQuota(String namespace, BacklogQuota backlogQuota) throws PulsarAdminException;
/**
* Set a backlog quota for all the topics on a namespace asynchronously.
* <p/>
* Set a backlog quota on a namespace.
* <p/>
* The backlog quota can be set on this resource:
* <p/>
* Request parameter example:
*
* <pre>
* <code>
* {
* "limit" : "134217728",
* "policy" : "consumer_backlog_eviction"
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param backlogQuota
* the new BacklogQuota
*/
CompletableFuture<Void> setBacklogQuotaAsync(String namespace, BacklogQuota backlogQuota);
/**
* Remove a backlog quota policy from a namespace.
* <p/>
* Remove a backlog quota policy from a namespace.
* <p/>
* The backlog retention policy will fall back to the default.
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void removeBacklogQuota(String namespace) throws PulsarAdminException;
/**
* Remove a backlog quota policy from a namespace asynchronously.
* <p/>
* Remove a backlog quota policy from a namespace.
* <p/>
* The backlog retention policy will fall back to the default.
*
* @param namespace
* Namespace name
*/
CompletableFuture<Void> removeBacklogQuotaAsync(String namespace);
/**
* Remove the persistence configuration on a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removePersistence(String namespace) throws PulsarAdminException;
/**
* Remove the persistence configuration on a namespace asynchronously.
* @param namespace
*/
CompletableFuture<Void> removePersistenceAsync(String namespace);
/**
* Set the persistence configuration for all the topics on a namespace.
* <p/>
* Set the persistence configuration on a namespace.
* <p/>
* Request parameter example:
*
* <pre>
* <code>
* {
* "bookkeeperEnsemble" : 3, // Number of bookies to use for a topic
* "bookkeeperWriteQuorum" : 2, // How many writes to make of each entry
* "bookkeeperAckQuorum" : 2, // Number of acks (guaranteed copies) to wait for each entry
* "managedLedgerMaxMarkDeleteRate" : 10.0, // Throttling rate of mark-delete operation
* // to avoid high number of updates for each
* // consumer
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param persistence
* Persistence policies object
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws ConflictException
* Concurrent modification
* @throws PulsarAdminException
* Unexpected error
*/
void setPersistence(String namespace, PersistencePolicies persistence) throws PulsarAdminException;
/**
* Set the persistence configuration for all the topics on a namespace asynchronously.
* <p/>
* Set the persistence configuration on a namespace.
* <p/>
* Request parameter example:
*
* <pre>
* <code>
* {
* "bookkeeperEnsemble" : 3, // Number of bookies to use for a topic
* "bookkeeperWriteQuorum" : 2, // How many writes to make of each entry
* "bookkeeperAckQuorum" : 2, // Number of acks (guaranteed copies) to wait for each entry
* "managedLedgerMaxMarkDeleteRate" : 10.0, // Throttling rate of mark-delete operation
* // to avoid high number of updates for each
* // consumer
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param persistence
* Persistence policies object
*/
CompletableFuture<Void> setPersistenceAsync(String namespace, PersistencePolicies persistence);
/**
* Get the persistence configuration for a namespace.
* <p/>
* Get the persistence configuration for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>
* {
* "bookkeeperEnsemble" : 3, // Number of bookies to use for a topic
* "bookkeeperWriteQuorum" : 2, // How many writes to make of each entry
* "bookkeeperAckQuorum" : 2, // Number of acks (guaranteed copies) to wait for each entry
* "managedLedgerMaxMarkDeleteRate" : 10.0, // Throttling rate of mark-delete operation
* // to avoid high number of updates for each
* // consumer
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws ConflictException
* Concurrent modification
* @throws PulsarAdminException
* Unexpected error
*/
PersistencePolicies getPersistence(String namespace) throws PulsarAdminException;
/**
* Get the persistence configuration for a namespace asynchronously.
* <p/>
* Get the persistence configuration for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>
* {
* "bookkeeperEnsemble" : 3, // Number of bookies to use for a topic
* "bookkeeperWriteQuorum" : 2, // How many writes to make of each entry
* "bookkeeperAckQuorum" : 2, // Number of acks (guaranteed copies) to wait for each entry
* "managedLedgerMaxMarkDeleteRate" : 10.0, // Throttling rate of mark-delete operation
* // to avoid high number of updates for each
* // consumer
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<PersistencePolicies> getPersistenceAsync(String namespace);
/**
* Set bookie affinity group for a namespace to isolate namespace write to bookies that are part of given affinity
* group.
*
* @param namespace
* namespace name
* @param bookieAffinityGroup
* bookie affinity group
* @throws PulsarAdminException
*/
void setBookieAffinityGroup(String namespace, BookieAffinityGroupData bookieAffinityGroup)
throws PulsarAdminException;
/**
* Set bookie affinity group for a namespace to isolate namespace write to bookies that are part of given affinity
* group asynchronously.
*
* @param namespace
* namespace name
* @param bookieAffinityGroup
* bookie affinity group
*/
CompletableFuture<Void> setBookieAffinityGroupAsync(String namespace, BookieAffinityGroupData bookieAffinityGroup);
/**
* Delete bookie affinity group configured for a namespace.
*
* @param namespace
* @throws PulsarAdminException
*/
void deleteBookieAffinityGroup(String namespace) throws PulsarAdminException;
/**
* Delete bookie affinity group configured for a namespace asynchronously.
*
* @param namespace
*/
CompletableFuture<Void> deleteBookieAffinityGroupAsync(String namespace);
/**
* Get bookie affinity group configured for a namespace.
*
* @param namespace
* @return
* @throws PulsarAdminException
*/
BookieAffinityGroupData getBookieAffinityGroup(String namespace) throws PulsarAdminException;
/**
* Get bookie affinity group configured for a namespace asynchronously.
*
* @param namespace
* @return
*/
CompletableFuture<BookieAffinityGroupData> getBookieAffinityGroupAsync(String namespace);
/**
* Set the retention configuration for all the topics on a namespace.
* <p/>
* Set the retention configuration on a namespace. This operation requires Pulsar super-user access.
* <p/>
* Request parameter example:
* <p/>
*
* <pre>
* <code>
* {
* "retentionTimeInMinutes" : 60, // how long to retain messages
* "retentionSizeInMB" : 1024, // retention backlog limit
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws ConflictException
* Concurrent modification
* @throws PulsarAdminException
* Unexpected error
*/
void setRetention(String namespace, RetentionPolicies retention) throws PulsarAdminException;
/**
* Set the retention configuration for all the topics on a namespace asynchronously.
* <p/>
* Set the retention configuration on a namespace. This operation requires Pulsar super-user access.
* <p/>
* Request parameter example:
* <p/>
*
* <pre>
* <code>
* {
* "retentionTimeInMinutes" : 60, // how long to retain messages
* "retentionSizeInMB" : 1024, // retention backlog limit
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Void> setRetentionAsync(String namespace, RetentionPolicies retention);
/**
* Remove the retention configuration for all the topics on a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removeRetention(String namespace) throws PulsarAdminException;
/**
* Remove the retention configuration for all the topics on a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeRetentionAsync(String namespace);
/**
* Get the retention configuration for a namespace.
* <p/>
* Get the retention configuration for a namespace.
* <p/>
* Response example:
* <p/>
*
* <pre>
* <code>
* {
* "retentionTimeInMinutes" : 60, // how long to retain messages
* "retentionSizeInMB" : 1024, // retention backlog limit
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws ConflictException
* Concurrent modification
* @throws PulsarAdminException
* Unexpected error
*/
RetentionPolicies getRetention(String namespace) throws PulsarAdminException;
/**
* Get the retention configuration for a namespace asynchronously.
* <p/>
* Get the retention configuration for a namespace.
* <p/>
* Response example:
* <p/>
*
* <pre>
* <code>
* {
* "retentionTimeInMinutes" : 60, // how long to retain messages
* "retentionSizeInMB" : 1024, // retention backlog limit
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<RetentionPolicies> getRetentionAsync(String namespace);
/**
* Unload a namespace from the current serving broker.
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PreconditionFailedException
* Namespace is already unloaded
* @throws PulsarAdminException
* Unexpected error
*/
void unload(String namespace) throws PulsarAdminException;
/**
* Unload a namespace from the current serving broker asynchronously.
*
* @param namespace
* Namespace name
*/
CompletableFuture<Void> unloadAsync(String namespace);
/**
* Get the replication configuration version for a given namespace.
*
* @param namespace
* @return Replication configuration version
* @throws PulsarAdminException
* Unexpected error
*/
String getReplicationConfigVersion(String namespace) throws PulsarAdminException;
/**
* Get the replication configuration version for a given namespace asynchronously.
*
* @param namespace
* @return Replication configuration version
*/
CompletableFuture<String> getReplicationConfigVersionAsync(String namespace);
/**
* Unload namespace bundle.
*
* @param namespace
* @param bundle
* range of bundle to unload
* @throws PulsarAdminException
* Unexpected error
*/
void unloadNamespaceBundle(String namespace, String bundle) throws PulsarAdminException;
/**
* Unload namespace bundle asynchronously.
*
* @param namespace
* @param bundle
* range of bundle to unload
*
* @return a future that can be used to track when the bundle is unloaded
*/
CompletableFuture<Void> unloadNamespaceBundleAsync(String namespace, String bundle);
/**
* Split namespace bundle.
*
* @param namespace
* @param bundle range of bundle to split
* @param unloadSplitBundles
* @param splitAlgorithmName
* @throws PulsarAdminException
*/
void splitNamespaceBundle(String namespace, String bundle, boolean unloadSplitBundles, String splitAlgorithmName)
throws PulsarAdminException;
/**
* Split namespace bundle asynchronously.
*
* @param namespace
* @param bundle range of bundle to split
* @param unloadSplitBundles
* @param splitAlgorithmName
*/
CompletableFuture<Void> splitNamespaceBundleAsync(
String namespace, String bundle, boolean unloadSplitBundles, String splitAlgorithmName);
/**
* Set message-publish-rate (topics under this namespace can publish this many messages per second).
*
* @param namespace
* @param publishMsgRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
*/
void setPublishRate(String namespace, PublishRate publishMsgRate) throws PulsarAdminException;
/**
* Remove message-publish-rate (topics under this namespace can publish this many messages per second).
*
* @param namespace
* @throws PulsarAdminException
* Unexpected error
*/
void removePublishRate(String namespace) throws PulsarAdminException;
/**
* Set message-publish-rate (topics under this namespace can publish this many messages per second) asynchronously.
*
* @param namespace
* @param publishMsgRate
* number of messages per second
*/
CompletableFuture<Void> setPublishRateAsync(String namespace, PublishRate publishMsgRate);
/**
* Remove message-publish-rate asynchronously.
* <p/>
* topics under this namespace can publish this many messages per second
* @param namespace
*/
CompletableFuture<Void> removePublishRateAsync(String namespace);
/**
* Get message-publish-rate (topics under this namespace can publish this many messages per second).
*
* @param namespace
* @return number of messages per second
* @throws PulsarAdminException Unexpected error
*/
PublishRate getPublishRate(String namespace) throws PulsarAdminException;
/**
* Get message-publish-rate (topics under this namespace can publish this many messages per second) asynchronously.
*
* @param namespace
* @return number of messages per second
*/
CompletableFuture<PublishRate> getPublishRateAsync(String namespace);
/**
* Remove message-dispatch-rate.
* @param namespace
* @throws PulsarAdminException
*/
void removeDispatchRate(String namespace) throws PulsarAdminException;
/**
* Remove message-dispatch-rate asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeDispatchRateAsync(String namespace);
/**
* Set message-dispatch-rate (topics under this namespace can dispatch this many messages per second).
*
* @param namespace
* @param dispatchRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
*/
void setDispatchRate(String namespace, DispatchRate dispatchRate) throws PulsarAdminException;
/**
* Set message-dispatch-rate asynchronously.
* <p/>
* topics under this namespace can dispatch this many messages per second
*
* @param namespace
* @param dispatchRate
* number of messages per second
*/
CompletableFuture<Void> setDispatchRateAsync(String namespace, DispatchRate dispatchRate);
/**
* Get message-dispatch-rate (topics under this namespace can dispatch this many messages per second).
*
* @param namespace
* @returns messageRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
*/
DispatchRate getDispatchRate(String namespace) throws PulsarAdminException;
/**
* Get message-dispatch-rate asynchronously.
* <p/>
* Topics under this namespace can dispatch this many messages per second.
*
* @param namespace
* @returns messageRate
* number of messages per second
*/
CompletableFuture<DispatchRate> getDispatchRateAsync(String namespace);
/**
* Set namespace-subscribe-rate (topics under this namespace will limit by subscribeRate).
*
* @param namespace
* @param subscribeRate
* consumer subscribe limit by this subscribeRate
* @throws PulsarAdminException
* Unexpected error
*/
void setSubscribeRate(String namespace, SubscribeRate subscribeRate) throws PulsarAdminException;
/**
* Set namespace-subscribe-rate (topics under this namespace will limit by subscribeRate) asynchronously.
*
* @param namespace
* @param subscribeRate
* consumer subscribe limit by this subscribeRate
*/
CompletableFuture<Void> setSubscribeRateAsync(String namespace, SubscribeRate subscribeRate);
/**
* Remove namespace-subscribe-rate (topics under this namespace will limit by subscribeRate).
*
* @param namespace
* @throws PulsarAdminException
*/
void removeSubscribeRate(String namespace) throws PulsarAdminException;
/**
* Remove namespace-subscribe-rate (topics under this namespace will limit by subscribeRate) asynchronously.
*
* @param namespace
*/
CompletableFuture<Void> removeSubscribeRateAsync(String namespace);
/**
* Get namespace-subscribe-rate (topics under this namespace allow subscribe times per consumer in a period).
*
* @param namespace
* @returns subscribeRate
* @throws PulsarAdminException
* Unexpected error
*/
SubscribeRate getSubscribeRate(String namespace) throws PulsarAdminException;
/**
* Get namespace-subscribe-rate asynchronously.
* <p/>
* Topics under this namespace allow subscribe times per consumer in a period.
*
* @param namespace
* @returns subscribeRate
*/
CompletableFuture<SubscribeRate> getSubscribeRateAsync(String namespace);
/**
* Remove subscription-message-dispatch-rate.
* @param namespace
* @throws PulsarAdminException
*/
void removeSubscriptionDispatchRate(String namespace) throws PulsarAdminException;
/**
* Remove subscription-message-dispatch-rate asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeSubscriptionDispatchRateAsync(String namespace);
/**
* Set subscription-message-dispatch-rate.
* <p/>
* Subscriptions under this namespace can dispatch this many messages per second
*
* @param namespace
* @param dispatchRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
*/
void setSubscriptionDispatchRate(String namespace, DispatchRate dispatchRate) throws PulsarAdminException;
/**
* Set subscription-message-dispatch-rate asynchronously.
* <p/>
* Subscriptions under this namespace can dispatch this many messages per second.
*
* @param namespace
* @param dispatchRate
* number of messages per second
*/
CompletableFuture<Void> setSubscriptionDispatchRateAsync(String namespace, DispatchRate dispatchRate);
/**
* Get subscription-message-dispatch-rate.
* <p/>
* Subscriptions under this namespace can dispatch this many messages per second.
*
* @param namespace
* @returns DispatchRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
*/
DispatchRate getSubscriptionDispatchRate(String namespace) throws PulsarAdminException;
/**
* Get subscription-message-dispatch-rate asynchronously.
* <p/>
* Subscriptions under this namespace can dispatch this many messages per second.
*
* @param namespace
* @returns DispatchRate
* number of messages per second
*/
CompletableFuture<DispatchRate> getSubscriptionDispatchRateAsync(String namespace);
/**
* Set replicator-message-dispatch-rate.
* <p/>
* Replicators under this namespace can dispatch this many messages per second.
*
* @param namespace
* @param dispatchRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
*/
void setReplicatorDispatchRate(String namespace, DispatchRate dispatchRate) throws PulsarAdminException;
/**
* Set replicator-message-dispatch-rate asynchronously.
* <p/>
* Replicators under this namespace can dispatch this many messages per second.
*
* @param namespace
* @param dispatchRate
* number of messages per second
*/
CompletableFuture<Void> setReplicatorDispatchRateAsync(String namespace, DispatchRate dispatchRate);
/**
* Remove replicator-message-dispatch-rate.
*
* @param namespace
* @throws PulsarAdminException
* Unexpected error
*/
void removeReplicatorDispatchRate(String namespace) throws PulsarAdminException;
/**
* Set replicator-message-dispatch-rate asynchronously.
*
* @param namespace
*/
CompletableFuture<Void> removeReplicatorDispatchRateAsync(String namespace);
/**
* Get replicator-message-dispatch-rate.
* <p/>
* Replicators under this namespace can dispatch this many messages per second.
*
* @param namespace
* @returns DispatchRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
*/
DispatchRate getReplicatorDispatchRate(String namespace) throws PulsarAdminException;
/**
* Get replicator-message-dispatch-rate asynchronously.
* <p/>
* Replicators under this namespace can dispatch this many messages per second.
*
* @param namespace
* @returns DispatchRate
* number of messages per second
*/
CompletableFuture<DispatchRate> getReplicatorDispatchRateAsync(String namespace);
/**
* Clear backlog for all topics on a namespace.
*
* @param namespace
* @throws PulsarAdminException
* Unexpected error
*/
void clearNamespaceBacklog(String namespace) throws PulsarAdminException;
/**
* Clear backlog for all topics on a namespace asynchronously.
*
* @param namespace
*/
CompletableFuture<Void> clearNamespaceBacklogAsync(String namespace);
/**
* Clear backlog for a given subscription on all topics on a namespace.
*
* @param namespace
* @param subscription
* @throws PulsarAdminException
* Unexpected error
*/
void clearNamespaceBacklogForSubscription(String namespace, String subscription) throws PulsarAdminException;
/**
* Clear backlog for a given subscription on all topics on a namespace asynchronously.
*
* @param namespace
* @param subscription
*/
CompletableFuture<Void> clearNamespaceBacklogForSubscriptionAsync(String namespace, String subscription);
/**
* Clear backlog for all topics on a namespace bundle.
*
* @param namespace
* @param bundle
* @throws PulsarAdminException
* Unexpected error
*/
void clearNamespaceBundleBacklog(String namespace, String bundle) throws PulsarAdminException;
/**
* Clear backlog for all topics on a namespace bundle asynchronously.
*
* @param namespace
* @param bundle
*
* @return a future that can be used to track when the bundle is cleared
*/
CompletableFuture<Void> clearNamespaceBundleBacklogAsync(String namespace, String bundle);
/**
* Clear backlog for a given subscription on all topics on a namespace bundle.
*
* @param namespace
* @param bundle
* @param subscription
* @throws PulsarAdminException
* Unexpected error
*/
void clearNamespaceBundleBacklogForSubscription(String namespace, String bundle, String subscription)
throws PulsarAdminException;
/**
* Clear backlog for a given subscription on all topics on a namespace bundle asynchronously.
*
* @param namespace
* @param bundle
* @param subscription
*
* @return a future that can be used to track when the bundle is cleared
*/
CompletableFuture<Void> clearNamespaceBundleBacklogForSubscriptionAsync(String namespace, String bundle,
String subscription);
/**
* Unsubscribe the given subscription on all topics on a namespace.
*
* @param namespace
* @param subscription
* @throws PulsarAdminException
*/
void unsubscribeNamespace(String namespace, String subscription) throws PulsarAdminException;
/**
* Unsubscribe the given subscription on all topics on a namespace asynchronously.
*
* @param namespace
* @param subscription
*/
CompletableFuture<Void> unsubscribeNamespaceAsync(String namespace, String subscription);
/**
* Unsubscribe the given subscription on all topics on a namespace bundle.
*
* @param namespace
* @param bundle
* @param subscription
* @throws PulsarAdminException
*/
void unsubscribeNamespaceBundle(String namespace, String bundle, String subscription) throws PulsarAdminException;
/**
* Unsubscribe the given subscription on all topics on a namespace bundle asynchronously.
*
* @param namespace
* @param bundle
* @param subscription
*
* @return a future that can be used to track when the subscription is unsubscribed
*/
CompletableFuture<Void> unsubscribeNamespaceBundleAsync(String namespace, String bundle, String subscription);
/**
* Set the encryption required status for all topics within a namespace.
* <p/>
* When encryption required is true, the broker will prevent to store unencrypted messages.
* <p/>
* Request example:
*
* <pre>
* <code>true</code>
* </pre>
*
* @param namespace
* Namespace name
* @param encryptionRequired
* whether message encryption is required or not
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setEncryptionRequiredStatus(String namespace, boolean encryptionRequired) throws PulsarAdminException;
/**
* Set the encryption required status for all topics within a namespace asynchronously.
* <p/>
* When encryption required is true, the broker will prevent to store unencrypted messages.
* <p/>
* Request example:
*
* <pre>
* <code>true</code>
* </pre>
*
* @param namespace
* Namespace name
* @param encryptionRequired
* whether message encryption is required or not
*/
CompletableFuture<Void> setEncryptionRequiredStatusAsync(String namespace, boolean encryptionRequired);
/**
* Get the delayed delivery messages for all topics within a namespace.
* <p/>
* If disabled, messages will be immediately delivered and there will
* be no tracking overhead.
* <p/>
* Request example:
*
* <pre>
* <code>
* {
* "active" : true, // Enable or disable delayed delivery for messages on a namespace
* "tickTime" : 1000, // The tick time for when retrying on delayed delivery messages
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @return delayedDeliveryPolicies
* Whether to enable the delayed delivery for messages.
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
DelayedDeliveryPolicies getDelayedDelivery(String namespace) throws PulsarAdminException;
/**
* Get the delayed delivery messages for all topics within a namespace asynchronously.
* <p/>
* If disabled, messages will be immediately delivered and there will
* be no tracking overhead.
* <p/>
* Request example:
*
* <pre>
* <code>
* {
* "active" : true, // Enable or disable delayed delivery for messages on a namespace
* "tickTime" : 1000, // The tick time for when retrying on delayed delivery messages
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @return delayedDeliveryPolicies
* Whether to enable the delayed delivery for messages.
*/
CompletableFuture<DelayedDeliveryPolicies> getDelayedDeliveryAsync(String namespace);
/**
* Set the delayed delivery messages for all topics within a namespace.
* <p/>
* If disabled, messages will be immediately delivered and there will
* be no tracking overhead.
* <p/>
* Request example:
*
* <pre>
* <code>
* {
* "tickTime" : 1000, // Enable or disable delayed delivery for messages on a namespace
* "active" : true, // The tick time for when retrying on delayed delivery messages
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param delayedDeliveryPolicies
* Whether to enable the delayed delivery for messages.
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setDelayedDeliveryMessages(String namespace, DelayedDeliveryPolicies delayedDeliveryPolicies)
throws PulsarAdminException;
/**
* Set the delayed delivery messages for all topics within a namespace asynchronously.
* <p/>
* If disabled, messages will be immediately delivered and there will
* be no tracking overhead.
* <p/>
* Request example:
*
* <pre>
* <code>
* {
* "tickTime" : 1000, // Enable or disable delayed delivery for messages on a namespace
* "active" : true, // The tick time for when retrying on delayed delivery messages
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param delayedDeliveryPolicies
* Whether to enable the delayed delivery for messages.
*/
CompletableFuture<Void> setDelayedDeliveryMessagesAsync(
String namespace, DelayedDeliveryPolicies delayedDeliveryPolicies);
/**
* Remove the delayed delivery messages for all topics within a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removeDelayedDeliveryMessages(String namespace) throws PulsarAdminException;
/**
* Remove the delayed delivery messages for all topics within a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeDelayedDeliveryMessagesAsync(String namespace);
/**
* Get the inactive deletion strategy for all topics within a namespace synchronously.
* @param namespace
* @return
* @throws PulsarAdminException
*/
InactiveTopicPolicies getInactiveTopicPolicies(String namespace) throws PulsarAdminException;
/**
* remove InactiveTopicPolicies from a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeInactiveTopicPoliciesAsync(String namespace);
/**
* Remove inactive topic policies from a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removeInactiveTopicPolicies(String namespace) throws PulsarAdminException;
/**
* Get the inactive deletion strategy for all topics within a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<InactiveTopicPolicies> getInactiveTopicPoliciesAsync(String namespace);
/**
* As same as setInactiveTopicPoliciesAsync,but it is synchronous.
* @param namespace
* @param inactiveTopicPolicies
*/
void setInactiveTopicPolicies(
String namespace, InactiveTopicPolicies inactiveTopicPolicies) throws PulsarAdminException;
/**
* You can set the inactive deletion strategy at the namespace level.
* Its priority is higher than the inactive deletion strategy at the broker level.
* All topics under this namespace will follow this strategy.
* @param namespace
* @param inactiveTopicPolicies
* @return
*/
CompletableFuture<Void> setInactiveTopicPoliciesAsync(
String namespace, InactiveTopicPolicies inactiveTopicPolicies);
/**
* Set the given subscription auth mode on all topics on a namespace.
*
* @param namespace
* @param subscriptionAuthMode
* @throws PulsarAdminException
*/
void setSubscriptionAuthMode(String namespace, SubscriptionAuthMode subscriptionAuthMode)
throws PulsarAdminException;
/**
* Set the given subscription auth mode on all topics on a namespace asynchronously.
*
* @param namespace
* @param subscriptionAuthMode
*/
CompletableFuture<Void> setSubscriptionAuthModeAsync(String namespace, SubscriptionAuthMode subscriptionAuthMode);
/**
* Get the deduplicationSnapshotInterval for a namespace.
*
* @param namespace
* @return
* @throws PulsarAdminException
*/
Integer getDeduplicationSnapshotInterval(String namespace) throws PulsarAdminException;
/**
* Get the deduplicationSnapshotInterval for a namespace asynchronously.
*
* @param namespace
* @return
*/
CompletableFuture<Integer> getDeduplicationSnapshotIntervalAsync(String namespace);
/**
* Set the deduplicationSnapshotInterval for a namespace.
*
* @param namespace
* @param interval
* @throws PulsarAdminException
*/
void setDeduplicationSnapshotInterval(String namespace, Integer interval) throws PulsarAdminException;
/**
* Set the deduplicationSnapshotInterval for a namespace asynchronously.
*
* @param namespace
* @param interval
* @return
*/
CompletableFuture<Void> setDeduplicationSnapshotIntervalAsync(String namespace, Integer interval);
/**
* Remove the deduplicationSnapshotInterval for a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removeDeduplicationSnapshotInterval(String namespace) throws PulsarAdminException;
/**
* Remove the deduplicationSnapshotInterval for a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeDeduplicationSnapshotIntervalAsync(String namespace);
/**
* Get the maxSubscriptionsPerTopic for a namespace.
*
* @param namespace
* @return
* @throws PulsarAdminException
*/
Integer getMaxSubscriptionsPerTopic(String namespace) throws PulsarAdminException;
/**
* Get the maxSubscriptionsPerTopic for a namespace asynchronously.
*
* @param namespace
* @return
*/
CompletableFuture<Integer> getMaxSubscriptionsPerTopicAsync(String namespace);
/**
* Set the maxSubscriptionsPerTopic for a namespace.
*
* @param namespace
* @param maxSubscriptionsPerTopic
* @throws PulsarAdminException
*/
void setMaxSubscriptionsPerTopic(String namespace, int maxSubscriptionsPerTopic) throws PulsarAdminException;
/**
* Set the maxSubscriptionsPerTopic for a namespace asynchronously.
*
* @param namespace
* @param maxSubscriptionsPerTopic
* @return
*/
CompletableFuture<Void> setMaxSubscriptionsPerTopicAsync(String namespace, int maxSubscriptionsPerTopic);
/**
* Remove the maxSubscriptionsPerTopic for a namespace.
*
* @param namespace
* @throws PulsarAdminException
*/
void removeMaxSubscriptionsPerTopic(String namespace) throws PulsarAdminException;
/**
* Remove the maxSubscriptionsPerTopic for a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeMaxSubscriptionsPerTopicAsync(String namespace);
/**
* Get the maxProducersPerTopic for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Integer getMaxProducersPerTopic(String namespace) throws PulsarAdminException;
/**
* Get the maxProducersPerTopic for a namespace asynchronously.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Integer> getMaxProducersPerTopicAsync(String namespace);
/**
* Set maxProducersPerTopic for a namespace.
* <p/>
* Request example:
*
* <pre>
* <code>10</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxProducersPerTopic
* maxProducersPerTopic value for a namespace
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setMaxProducersPerTopic(String namespace, int maxProducersPerTopic) throws PulsarAdminException;
/**
* Set maxProducersPerTopic for a namespace asynchronously.
* <p/>
* Request example:
*
* <pre>
* <code>10</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxProducersPerTopic
* maxProducersPerTopic value for a namespace
*/
CompletableFuture<Void> setMaxProducersPerTopicAsync(String namespace, int maxProducersPerTopic);
/**
* Remove maxProducersPerTopic for a namespace.
* @param namespace Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void removeMaxProducersPerTopic(String namespace) throws PulsarAdminException;
/**
* Set maxProducersPerTopic for a namespace asynchronously.
* @param namespace
* Namespace name
*/
CompletableFuture<Void> removeMaxProducersPerTopicAsync(String namespace);
/**
* Get the maxProducersPerTopic for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Integer getMaxConsumersPerTopic(String namespace) throws PulsarAdminException;
/**
* Get the maxProducersPerTopic for a namespace asynchronously.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Integer> getMaxConsumersPerTopicAsync(String namespace);
/**
* Set maxConsumersPerTopic for a namespace.
* <p/>
* Request example:
*
* <pre>
* <code>10</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxConsumersPerTopic
* maxConsumersPerTopic value for a namespace
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setMaxConsumersPerTopic(String namespace, int maxConsumersPerTopic) throws PulsarAdminException;
/**
* Set maxConsumersPerTopic for a namespace asynchronously.
* <p/>
* Request example:
*
* <pre>
* <code>10</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxConsumersPerTopic
* maxConsumersPerTopic value for a namespace
*/
CompletableFuture<Void> setMaxConsumersPerTopicAsync(String namespace, int maxConsumersPerTopic);
/**
* Remove maxConsumersPerTopic for a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removeMaxConsumersPerTopic(String namespace) throws PulsarAdminException;
/**
* Remove maxConsumersPerTopic for a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeMaxConsumersPerTopicAsync(String namespace);
/**
* Get the maxConsumersPerSubscription for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Integer getMaxConsumersPerSubscription(String namespace) throws PulsarAdminException;
/**
* Get the maxConsumersPerSubscription for a namespace asynchronously.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Integer> getMaxConsumersPerSubscriptionAsync(String namespace);
/**
* Set maxConsumersPerSubscription for a namespace.
* <p/>
* Request example:
*
* <pre>
* <code>10</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxConsumersPerSubscription
* maxConsumersPerSubscription value for a namespace
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setMaxConsumersPerSubscription(String namespace, int maxConsumersPerSubscription) throws PulsarAdminException;
/**
* Set maxConsumersPerSubscription for a namespace asynchronously.
* <p/>
* Request example:
*
* <pre>
* <code>10</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxConsumersPerSubscription
* maxConsumersPerSubscription value for a namespace
*/
CompletableFuture<Void> setMaxConsumersPerSubscriptionAsync(String namespace, int maxConsumersPerSubscription);
/**
* Remove maxConsumersPerSubscription for a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removeMaxConsumersPerSubscription(String namespace) throws PulsarAdminException;
/**
* Remove maxConsumersPerSubscription for a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeMaxConsumersPerSubscriptionAsync(String namespace);
/**
* Get the maxUnackedMessagesPerConsumer for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Integer getMaxUnackedMessagesPerConsumer(String namespace) throws PulsarAdminException;
/**
* Get the maxUnackedMessagesPerConsumer for a namespace asynchronously.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Integer> getMaxUnackedMessagesPerConsumerAsync(String namespace);
/**
* Set maxUnackedMessagesPerConsumer for a namespace.
* <p/>
* Request example:
*
* <pre>
* <code>10</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxUnackedMessagesPerConsumer
* maxUnackedMessagesPerConsumer value for a namespace
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setMaxUnackedMessagesPerConsumer(String namespace, int maxUnackedMessagesPerConsumer)
throws PulsarAdminException;
/**
* Set maxUnackedMessagesPerConsumer for a namespace asynchronously.
* <p/>
* Request example:
*
* <pre>
* <code>10</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxUnackedMessagesPerConsumer
* maxUnackedMessagesPerConsumer value for a namespace
*/
CompletableFuture<Void> setMaxUnackedMessagesPerConsumerAsync(String namespace, int maxUnackedMessagesPerConsumer);
/**
* Remove maxUnackedMessagesPerConsumer for a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removeMaxUnackedMessagesPerConsumer(String namespace)
throws PulsarAdminException;
/**
* Remove maxUnackedMessagesPerConsumer for a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeMaxUnackedMessagesPerConsumerAsync(
String namespace);
/**
* Get the maxUnackedMessagesPerSubscription for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Integer getMaxUnackedMessagesPerSubscription(String namespace) throws PulsarAdminException;
/**
* Get the maxUnackedMessagesPerSubscription for a namespace asynchronously.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Integer> getMaxUnackedMessagesPerSubscriptionAsync(String namespace);
/**
* Set maxUnackedMessagesPerSubscription for a namespace.
* <p/>
* Request example:
*
* <pre>
* <code>10</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxUnackedMessagesPerSubscription
* Max number of unacknowledged messages allowed per shared subscription.
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setMaxUnackedMessagesPerSubscription(String namespace, int maxUnackedMessagesPerSubscription)
throws PulsarAdminException;
/**
* Set maxUnackedMessagesPerSubscription for a namespace asynchronously.
* <p/>
* Request example:
*
* <pre>
* <code>10</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxUnackedMessagesPerSubscription
* Max number of unacknowledged messages allowed per shared subscription.
*/
CompletableFuture<Void> setMaxUnackedMessagesPerSubscriptionAsync(
String namespace, int maxUnackedMessagesPerSubscription);
/**
* Remove maxUnackedMessagesPerSubscription for a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removeMaxUnackedMessagesPerSubscription(String namespace)
throws PulsarAdminException;
/**
* Remove maxUnackedMessagesPerSubscription for a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeMaxUnackedMessagesPerSubscriptionAsync(
String namespace);
/**
* Get the compactionThreshold for a namespace. The maximum number of bytes topics in the namespace
* can have before compaction is triggered. 0 disables.
* <p/>
* Response example:
*
* <pre>
* <code>10000000</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Long getCompactionThreshold(String namespace) throws PulsarAdminException;
/**
* Get the compactionThreshold for a namespace asynchronously. The maximum number of bytes topics in the namespace
* can have before compaction is triggered. 0 disables.
* <p/>
* Response example:
*
* <pre>
* <code>10000000</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Long> getCompactionThresholdAsync(String namespace);
/**
* Set the compactionThreshold for a namespace. The maximum number of bytes topics in the namespace
* can have before compaction is triggered. 0 disables.
* <p/>
* Request example:
*
* <pre>
* <code>10000000</code>
* </pre>
*
* @param namespace
* Namespace name
* @param compactionThreshold
* maximum number of backlog bytes before compaction is triggered
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setCompactionThreshold(String namespace, long compactionThreshold) throws PulsarAdminException;
/**
* Set the compactionThreshold for a namespace asynchronously. The maximum number of bytes topics in the namespace
* can have before compaction is triggered. 0 disables.
* <p/>
* Request example:
*
* <pre>
* <code>10000000</code>
* </pre>
*
* @param namespace
* Namespace name
* @param compactionThreshold
* maximum number of backlog bytes before compaction is triggered
*/
CompletableFuture<Void> setCompactionThresholdAsync(String namespace, long compactionThreshold);
/**
* Delete the compactionThreshold for a namespace.
* @param namespace
* @throws PulsarAdminException
*/
void removeCompactionThreshold(String namespace) throws PulsarAdminException;
/**
* Delete the compactionThreshold for a namespace asynchronously.
* @param namespace
* @return
*/
CompletableFuture<Void> removeCompactionThresholdAsync(String namespace);
/**
* Get the offloadThreshold for a namespace. The maximum number of bytes stored on the pulsar cluster for topics
* in the namespace before data starts being offloaded to longterm storage.
*
* <p/>
* Response example:
*
* <pre>
* <code>10000000</code>
* </pre>
*
* @param namespace
* Namespace name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
long getOffloadThreshold(String namespace) throws PulsarAdminException;
/**
* Get the offloadThreshold for a namespace asynchronously.
* <p/>
* The maximum number of bytes stored on the pulsar cluster for topics
* in the namespace before data starts being offloaded to longterm storage.
*
* <p/>
* Response example:
*
* <pre>
* <code>10000000</code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<Long> getOffloadThresholdAsync(String namespace);
/**
* Set the offloadThreshold for a namespace.
* <p/>
* The maximum number of bytes stored on the pulsar cluster for topics
* in the namespace before data starts being offloaded to longterm storage.
* <p/>
* Negative values disabled automatic offloading. Setting a threshold of 0 will offload data as soon as possible.
* <p/>
* Request example:
*
* <pre>
* <code>10000000</code>
* </pre>
*
* @param namespace
* Namespace name
* @param offloadThreshold
* maximum number of bytes stored before offloading is triggered
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setOffloadThreshold(String namespace, long offloadThreshold) throws PulsarAdminException;
/**
* Set the offloadThreshold for a namespace asynchronously.
* <p/>
* The maximum number of bytes stored on the pulsar cluster for topics
* in the namespace before data starts being offloaded to longterm storage.
* <p/>
* Negative values disabled automatic offloading. Setting a threshold of 0 will offload data as soon as possible.
* <p/>
* Request example:
*
* <pre>
* <code>10000000</code>
* </pre>
*
* @param namespace
* Namespace name
* @param offloadThreshold
* maximum number of bytes stored before offloading is triggered
*/
CompletableFuture<Void> setOffloadThresholdAsync(String namespace, long offloadThreshold);
/**
* Get the offload deletion lag for a namespace, in milliseconds.
* The number of milliseconds to wait before deleting a ledger segment which has been offloaded from
* the Pulsar cluster's local storage (i.e. BookKeeper).
* <p/>
* If the offload deletion lag has not been set for the namespace, the method returns 'null'
* and the namespace will use the configured default of the pulsar broker.
* <p/>
* A negative value disables deletion of the local ledger completely, though it will still be deleted
* if it exceeds the topics retention policy, along with the offloaded copy.
*
* <p/>
* Response example:
*
* <pre>
* <code>3600000</code>
* </pre>
*
* @param namespace
* Namespace name
* @return the offload deletion lag for the namespace in milliseconds, or null if not set
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Long getOffloadDeleteLagMs(String namespace) throws PulsarAdminException;
/**
* Get the offload deletion lag asynchronously for a namespace, in milliseconds.
* <p/>
* The number of milliseconds to wait before deleting a ledger segment which has been offloaded from
* the Pulsar cluster's local storage (i.e. BookKeeper).
* <p/>
* If the offload deletion lag has not been set for the namespace, the method returns 'null'
* and the namespace will use the configured default of the pulsar broker.
* <p/>
* A negative value disables deletion of the local ledger completely, though it will still be deleted
* if it exceeds the topics retention policy, along with the offloaded copy.
*
* <p/>
* Response example:
*
* <pre>
* <code>3600000</code>
* </pre>
*
* @param namespace
* Namespace name
* @return the offload deletion lag for the namespace in milliseconds, or null if not set
*/
CompletableFuture<Long> getOffloadDeleteLagMsAsync(String namespace);
/**
* Set the offload deletion lag for a namespace.
* <p/>
* The offload deletion lag is the amount of time to wait after offloading a ledger segment to long term storage,
* before deleting its copy stored on the Pulsar cluster's local storage (i.e. BookKeeper).
* <p/>
* A negative value disables deletion of the local ledger completely, though it will still be deleted
* if it exceeds the topics retention policy, along with the offloaded copy.
*
* @param namespace
* Namespace name
* @param lag the duration to wait before deleting the local copy
* @param unit the timeunit of the duration
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setOffloadDeleteLag(String namespace, long lag, TimeUnit unit) throws PulsarAdminException;
/**
* Set the offload deletion lag for a namespace asynchronously.
* <p/>
* The offload deletion lag is the amount of time to wait after offloading a ledger segment to long term storage,
* before deleting its copy stored on the Pulsar cluster's local storage (i.e. BookKeeper).
* <p/>
* A negative value disables deletion of the local ledger completely, though it will still be deleted
* if it exceeds the topics retention policy, along with the offloaded copy.
*
* @param namespace
* Namespace name
* @param lag the duration to wait before deleting the local copy
* @param unit the timeunit of the duration
*/
CompletableFuture<Void> setOffloadDeleteLagAsync(String namespace, long lag, TimeUnit unit);
/**
* Clear the offload deletion lag for a namespace.
* <p/>
* The namespace will fall back to using the configured default of the pulsar broker.
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void clearOffloadDeleteLag(String namespace) throws PulsarAdminException;
/**
* Clear the offload deletion lag for a namespace asynchronously.
* <p/>
* The namespace will fall back to using the configured default of the pulsar broker.
*/
CompletableFuture<Void> clearOffloadDeleteLagAsync(String namespace);
/**
* Get the strategy used to check the a new schema provided by a producer is compatible with the current schema
* before it is installed.
* <p/>
* If this is
* {@link org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy#AutoUpdateDisabled},
* then all new schemas provided via the producer are rejected, and schemas must be updated through the REST api.
*
* @param namespace The namespace in whose policy we are interested
* @return the strategy used to check compatibility
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
@Deprecated
SchemaAutoUpdateCompatibilityStrategy getSchemaAutoUpdateCompatibilityStrategy(String namespace)
throws PulsarAdminException;
/**
* Set the strategy used to check the a new schema provided by a producer is compatible with the current schema
* before it is installed.
* <p/>
* To disable all new schema updates through the producer, set this to
* {@link org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrategy#AutoUpdateDisabled}.
*
* @param namespace The namespace in whose policy should be set
* @param strategy
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
@Deprecated
void setSchemaAutoUpdateCompatibilityStrategy(String namespace,
SchemaAutoUpdateCompatibilityStrategy strategy)
throws PulsarAdminException;
/**
* Get schema validation enforced for namespace.
* @return the schema validation enforced flag
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Tenant or Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
boolean getSchemaValidationEnforced(String namespace)
throws PulsarAdminException;
/**
* Get schema validation enforced for namespace asynchronously.
*
* @return the schema validation enforced flag
*/
CompletableFuture<Boolean> getSchemaValidationEnforcedAsync(String namespace);
/**
* Set schema validation enforced for namespace.
* if a producer without a schema attempts to produce to a topic with schema in this the namespace, the
* producer will be failed to connect. PLEASE be carefully on using this, since non-java clients don't
* support schema. if you enable this setting, it will cause non-java clients failed to produce.
*
* @param namespace pulsar namespace name
* @param schemaValidationEnforced flag to enable or disable schema validation for the given namespace
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Tenant or Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setSchemaValidationEnforced(String namespace, boolean schemaValidationEnforced)
throws PulsarAdminException;
/**
* Set schema validation enforced for namespace asynchronously.
* if a producer without a schema attempts to produce to a topic with schema in this the namespace, the
* producer will be failed to connect. PLEASE be carefully on using this, since non-java clients don't
* support schema. if you enable this setting, it will cause non-java clients failed to produce.
*
* @param namespace pulsar namespace name
* @param schemaValidationEnforced flag to enable or disable schema validation for the given namespace
*/
CompletableFuture<Void> setSchemaValidationEnforcedAsync(String namespace, boolean schemaValidationEnforced);
/**
* Get the strategy used to check the a new schema provided by a producer is compatible with the current schema
* before it is installed.
*
* @param namespace The namespace in whose policy we are interested
* @return the strategy used to check compatibility
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
SchemaCompatibilityStrategy getSchemaCompatibilityStrategy(String namespace)
throws PulsarAdminException;
/**
* Get the strategy used to check the a new schema provided by a producer is compatible with the current schema
* before it is installed asynchronously.
*
* @param namespace The namespace in whose policy we are interested
* @return the strategy used to check compatibility
*/
CompletableFuture<SchemaCompatibilityStrategy> getSchemaCompatibilityStrategyAsync(String namespace);
/**
* Set the strategy used to check the a new schema provided by a producer is compatible with the current schema
* before it is installed.
*
* @param namespace The namespace in whose policy should be set
* @param strategy The schema compatibility strategy
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setSchemaCompatibilityStrategy(String namespace,
SchemaCompatibilityStrategy strategy)
throws PulsarAdminException;
/**
* Set the strategy used to check the a new schema provided by a producer is compatible with the current schema
* before it is installed asynchronously.
*
* @param namespace The namespace in whose policy should be set
* @param strategy The schema compatibility strategy
*/
CompletableFuture<Void> setSchemaCompatibilityStrategyAsync(String namespace,
SchemaCompatibilityStrategy strategy);
/**
* Get whether allow auto update schema.
*
* @param namespace pulsar namespace name
* @return the schema validation enforced flag
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Tenant or Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
boolean getIsAllowAutoUpdateSchema(String namespace)
throws PulsarAdminException;
/**
* Get whether allow auto update schema asynchronously.
*
* @param namespace pulsar namespace name
* @return the schema validation enforced flag
*/
CompletableFuture<Boolean> getIsAllowAutoUpdateSchemaAsync(String namespace);
/**
* Set whether to allow automatic schema updates.
* <p/>
* The flag is when producer bring a new schema and the schema pass compatibility check
* whether allow schema auto registered
*
* @param namespace pulsar namespace name
* @param isAllowAutoUpdateSchema flag to enable or disable auto update schema
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Tenant or Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setIsAllowAutoUpdateSchema(String namespace, boolean isAllowAutoUpdateSchema)
throws PulsarAdminException;
/**
* Set whether to allow automatic schema updates asynchronously.
* <p/>
* The flag is when producer bring a new schema and the schema pass compatibility check
* whether allow schema auto registered
*
* @param namespace pulsar namespace name
* @param isAllowAutoUpdateSchema flag to enable or disable auto update schema
*/
CompletableFuture<Void> setIsAllowAutoUpdateSchemaAsync(String namespace, boolean isAllowAutoUpdateSchema);
/**
* Set the offload configuration for all the topics in a namespace.
* <p/>
* Set the offload configuration in a namespace. This operation requires pulsar tenant access.
* <p/>
* Request parameter example:
* <p/>
*
* <pre>
* <code>
* {
* "region" : "us-east-2", // The long term storage region
* "bucket" : "bucket", // Bucket to place offloaded ledger into
* "endpoint" : "endpoint", // Alternative endpoint to connect to
* "maxBlockSize" : 1024, // Max Block Size, default 64MB
* "readBufferSize" : 1024, // Read Buffer Size, default 1MB
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param offloadPolicies
* Offload configuration
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws ConflictException
* Concurrent modification
* @throws PulsarAdminException
* Unexpected error
*/
void setOffloadPolicies(String namespace, OffloadPolicies offloadPolicies) throws PulsarAdminException;
/**
* Remove the offload configuration for a namespace.
* <p/>
* Remove the offload configuration in a namespace. This operation requires pulsar tenant access.
* <p/>
*
* @param namespace Namespace name
* @throws NotAuthorizedException Don't have admin permission
* @throws NotFoundException Namespace does not exist
* @throws ConflictException Concurrent modification
* @throws PulsarAdminException Unexpected error
*/
void removeOffloadPolicies(String namespace) throws PulsarAdminException;
/**
* Set the offload configuration for all the topics in a namespace asynchronously.
* <p/>
* Set the offload configuration in a namespace. This operation requires pulsar tenant access.
* <p/>
* Request parameter example:
* <p/>
*
* <pre>
* <code>
* {
* "region" : "us-east-2", // The long term storage region
* "bucket" : "bucket", // Bucket to place offloaded ledger into
* "endpoint" : "endpoint", // Alternative endpoint to connect to
* "maxBlockSize" : 1024, // Max Block Size, default 64MB
* "readBufferSize" : 1024, // Read Buffer Size, default 1MB
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @param offloadPolicies
* Offload configuration
*/
CompletableFuture<Void> setOffloadPoliciesAsync(String namespace, OffloadPolicies offloadPolicies);
/**
* Remove the offload configuration for a namespace asynchronously.
* <p/>
* Remove the offload configuration in a namespace. This operation requires pulsar tenant access.
* <p/>
*
* @param namespace Namespace name
* @throws NotAuthorizedException Don't have admin permission
* @throws NotFoundException Namespace does not exist
* @throws ConflictException Concurrent modification
* @throws PulsarAdminException Unexpected error
*/
CompletableFuture<Void> removeOffloadPoliciesAsync(String namespace);
/**
* Get the offload configuration for a namespace.
* <p/>
* Get the offload configuration for a namespace.
* <p/>
* Response example:
* <p/>
*
* <pre>
* <code>
* {
* "region" : "us-east-2", // The long term storage region
* "bucket" : "bucket", // Bucket to place offloaded ledger into
* "endpoint" : "endpoint", // Alternative endpoint to connect to
* "maxBlockSize" : 1024, // Max Block Size, default 64MB
* "readBufferSize" : 1024, // Read Buffer Size, default 1MB
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws ConflictException
* Concurrent modification
* @throws PulsarAdminException
* Unexpected error
*/
OffloadPolicies getOffloadPolicies(String namespace) throws PulsarAdminException;
/**
* Get the offload configuration for a namespace asynchronously.
* <p/>
* Get the offload configuration for a namespace.
* <p/>
* Response example:
* <p/>
*
* <pre>
* <code>
* {
* "region" : "us-east-2", // The long term storage region
* "bucket" : "bucket", // Bucket to place offloaded ledger into
* "endpoint" : "endpoint", // Alternative endpoint to connect to
* "maxBlockSize" : 1024, // Max Block Size, default 64MB
* "readBufferSize" : 1024, // Read Buffer Size, default 1MB
* }
* </code>
* </pre>
*
* @param namespace
* Namespace name
*/
CompletableFuture<OffloadPolicies> getOffloadPoliciesAsync(String namespace);
/**
* Get maxTopicsPerNamespace for a namespace.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
* @param namespace
* Namespace name
* @return
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace dost not exist
* @throws PulsarAdminException
* Unexpected error
*/
int getMaxTopicsPerNamespace(String namespace) throws PulsarAdminException;
/**
* Get maxTopicsPerNamespace for a namespace asynchronously.
* <p/>
* Response example:
*
* <pre>
* <code>0</code>
* </pre>
* @param namespace
* Namespace name
* @return
*/
CompletableFuture<Integer> getMaxTopicsPerNamespaceAsync(String namespace);
/**
* Set maxTopicsPerNamespace for a namespace.
* <p/>
* Request example:
*
* <pre>
* <code>100</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxTopicsPerNamespace
* maxTopicsPerNamespace value for a namespace
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void setMaxTopicsPerNamespace(String namespace, int maxTopicsPerNamespace) throws PulsarAdminException;
/**
* Set maxTopicsPerNamespace for a namespace asynchronously.
* <p/>
* Request example:
*
* <pre>
* <code>100</code>
* </pre>
*
* @param namespace
* Namespace name
* @param maxTopicsPerNamespace
* maxTopicsPerNamespace value for a namespace
* @return
*/
CompletableFuture<Void> setMaxTopicsPerNamespaceAsync(String namespace, int maxTopicsPerNamespace);
/**
* remove maxTopicsPerNamespace for a namespace.
*
* @param namespace
* Namespace name
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void removeMaxTopicsPerNamespace(String namespace) throws PulsarAdminException;
/**
* remove maxTopicsPerNamespace for a namespace asynchronously.
*
* @param namespace
* Namespace name
* @@throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
CompletableFuture<Void> removeMaxTopicsPerNamespaceAsync(String namespace);
}