Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.apache.pulsar.client.admin.Topics Maven / Gradle / Ivy
/*
* 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.Optional;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import org.apache.pulsar.client.admin.PulsarAdminException.ConflictException;
import org.apache.pulsar.client.admin.PulsarAdminException.NotAllowedException;
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.Message;
import org.apache.pulsar.client.api.MessageId;
import org.apache.pulsar.client.api.SubscriptionType;
import org.apache.pulsar.client.api.TransactionIsolationLevel;
import org.apache.pulsar.common.naming.TopicDomain;
import org.apache.pulsar.common.partition.PartitionedTopicMetadata;
import org.apache.pulsar.common.policies.data.AuthAction;
import org.apache.pulsar.common.policies.data.BacklogQuota;
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.PartitionedTopicInternalStats;
import org.apache.pulsar.common.policies.data.PartitionedTopicStats;
import org.apache.pulsar.common.policies.data.PersistencePolicies;
import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats;
import org.apache.pulsar.common.policies.data.PublishRate;
import org.apache.pulsar.common.policies.data.RetentionPolicies;
import org.apache.pulsar.common.policies.data.SubscribeRate;
import org.apache.pulsar.common.policies.data.TopicStats;
import org.apache.pulsar.common.stats.AnalyzeSubscriptionBacklogResult;
/**
* Admin interface for Topics management.
*/
public interface Topics {
enum QueryParam {
Bundle("bundle");
public final String value;
private QueryParam(String value) {
this.value = value;
}
}
/**
* Get the both persistent and non-persistent topics under a namespace.
*
* Response example:
*
*
* ["topic://my-tenant/my-namespace/topic-1",
* "topic://my-tenant/my-namespace/topic-2"]
*
*
* @param namespace
* Namespace name
* @return a list of topics
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
List getList(String namespace) throws PulsarAdminException;
/**
* Get the list of topics under a namespace.
*
* Response example:
*
*
* ["topic://my-tenant/my-namespace/topic-1",
* "topic://my-tenant/my-namespace/topic-2"]
*
*
* @param namespace
* Namespace name
*
* @param topicDomain
* use {@link TopicDomain#persistent} to get persistent topics
* use {@link TopicDomain#non_persistent} to get non-persistent topics
* Use null to get both persistent and non-persistent topics
*
* @return a list of topics
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
List getList(String namespace, TopicDomain topicDomain) throws PulsarAdminException;
/**
* @deprecated use {@link #getList(String, TopicDomain, ListTopicsOptions)} instead.
*/
@Deprecated
List getList(String namespace, TopicDomain topicDomain, Map params)
throws PulsarAdminException;
/**
* Get the list of topics under a namespace.
*
* Response example:
*
*
* ["topic://my-tenant/my-namespace/topic-1",
* "topic://my-tenant/my-namespace/topic-2"]
*
*
* @param namespace
* Namespace name
*
* @param topicDomain
* use {@link TopicDomain#persistent} to get persistent topics
* use {@link TopicDomain#non_persistent} to get non-persistent topics
* Use null to get both persistent and non-persistent topics
*
* @param options
* params to query the topics
*
* @return a list of topics
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
List getList(String namespace, TopicDomain topicDomain, ListTopicsOptions options)
throws PulsarAdminException;
/**
* Get both persistent and non-persistent topics under a namespace asynchronously.
*
* Response example:
*
*
* ["topic://my-tenant/my-namespace/topic-1",
* "topic://my-tenant/my-namespace/topic-2"]
*
*
* @param namespace
* Namespace name
* @return a list of topics
*/
CompletableFuture> getListAsync(String namespace);
/**
* Get the list of topics under a namespace asynchronously.
*
* Response example:
*
*
* ["topic://my-tenant/my-namespace/topic-1",
* "topic://my-tenant/my-namespace/topic-2"]
*
*
* @param namespace
* Namespace name
*
* @param topicDomain
* use {@link TopicDomain#persistent} to get persistent topics
* use {@link TopicDomain#non_persistent} to get non-persistent topics
* Use null to get both persistent and non-persistent topics
*
* @return a list of topics
*/
CompletableFuture> getListAsync(String namespace, TopicDomain topicDomain);
/**
* @deprecated use {@link #getListAsync(String, TopicDomain, ListTopicsOptions)} instead.
*/
@Deprecated
CompletableFuture> getListAsync(String namespace, TopicDomain topicDomain,
Map params);
/**
* Get the list of topics under a namespace asynchronously.
*
* Response example:
*
*
* ["topic://my-tenant/my-namespace/topic-1",
* "topic://my-tenant/my-namespace/topic-2"]
*
*
* @param namespace
* Namespace name
*
* @param topicDomain
* use {@link TopicDomain#persistent} to get persistent topics
* use {@link TopicDomain#non_persistent} to get non-persistent topics
* Use null to get both persistent and non-persistent topics
*
* @param options
* params to get the topics
*
* @return a list of topics
*/
CompletableFuture> getListAsync(String namespace, TopicDomain topicDomain, ListTopicsOptions options);
/**
* Get the list of partitioned topics under a namespace.
*
* Response example:
*
*
* ["persistent://my-tenant/my-namespace/topic-1",
* "persistent://my-tenant/my-namespace/topic-2"]
*
*
* @param namespace
* Namespace name
* @return a list of partitioned topics
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
List getPartitionedTopicList(String namespace) throws PulsarAdminException;
/**
* Get the list of partitioned topics under a namespace asynchronously.
*
* Response example:
*
*
* ["persistent://my-tenant/my-namespace/topic-1",
* "persistent://my-tenant/my-namespace/topic-2"]
*
*
* @param namespace
* Namespace name
* @return a list of partitioned topics
*/
CompletableFuture> getPartitionedTopicListAsync(String namespace);
/**
* Get the list of partitioned topics under a namespace.
*
* Response example:
*
*
* ["persistent://my-tenant/my-namespace/topic-1",
* "persistent://my-tenant/my-namespace/topic-2"]
*
*
* @param namespace
* Namespace name
* @param options
* params to get the topics
* @return a list of partitioned topics
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
List getPartitionedTopicList(String namespace, ListTopicsOptions options) throws PulsarAdminException;
/**
* Get the list of partitioned topics under a namespace asynchronously.
*
* Response example:
*
*
* ["persistent://my-tenant/my-namespace/topic-1",
* "persistent://my-tenant/my-namespace/topic-2"]
*
*
* @param namespace
* Namespace name
* @param options
* params to filter the results
* @return a list of partitioned topics
*/
CompletableFuture> getPartitionedTopicListAsync(String namespace, ListTopicsOptions options);
/**
* Get list of topics exist into given bundle.
*
* @param namespace
* @param bundleRange
* @return
* @throws PulsarAdminException
*/
List getListInBundle(String namespace, String bundleRange)
throws PulsarAdminException;
/**
* Get list of topics exist into given bundle asynchronously.
*
* @param namespace
* @param bundleRange
* @return
*/
CompletableFuture> getListInBundleAsync(String namespace, String bundleRange);
/**
* Get permissions on a topic.
*
* Retrieve the effective permissions for a topic. These permissions are defined by the permissions set at the
* namespace level combined (union) with any eventual specific permission set on the topic.
*
* Response Example:
*
*
* {
* "role-1" : [ "produce" ],
* "role-2" : [ "consume" ]
* }
*
*
* @param topic
* Topic url
* @return a map of topics an their permissions set
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Map> getPermissions(String topic) throws PulsarAdminException;
/**
* Get permissions on a topic asynchronously.
*
* Retrieve the effective permissions for a topic. These permissions are defined by the permissions set at the
* namespace level combined (union) with any eventual specific permission set on the topic.
*
* Response Example:
*
*
* {
* "role-1" : [ "produce" ],
* "role-2" : [ "consume" ]
* }
*
*
* @param topic
* Topic url
* @return a map of topics an their permissions set
*/
CompletableFuture>> getPermissionsAsync(String topic);
/**
* Grant permission on a topic.
*
* Grant a new permission to a client role on a single topic.
*
* Request parameter example:
*
*
* ["produce", "consume"]
*
*
* @param topic
* Topic url
* @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 grantPermission(String topic, String role, Set actions) throws PulsarAdminException;
/**
* Grant permission on a topic asynchronously.
*
* Grant a new permission to a client role on a single topic.
*
* Request parameter example:
*
*
* ["produce", "consume"]
*
*
* @param topic
* Topic url
* @param role
* Client role to which grant permission
* @param actions
* Auth actions (produce and consume)
*/
CompletableFuture grantPermissionAsync(String topic, String role, Set actions);
/**
* Revoke permissions on a topic.
*
* Revoke permissions to a client role on a single topic. If the permission was not set at the topic level, but
* rather at the namespace level, this operation will return an error (HTTP status code 412).
*
* @param topic
* Topic url
* @param role
* Client role to which remove permission
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PreconditionFailedException
* Permissions are not set at the topic level
* @throws PulsarAdminException
* Unexpected error
*/
void revokePermissions(String topic, String role) throws PulsarAdminException;
/**
* Revoke permissions on a topic asynchronously.
*
* Revoke permissions to a client role on a single topic. If the permission was not set at the topic level, but
* rather at the namespace level, this operation will return an error (HTTP status code 412).
*
* @param topic
* Topic url
* @param role
* Client role to which remove permission
*/
CompletableFuture revokePermissionsAsync(String topic, String role);
/**
* Create a partitioned topic.
*
* Create a partitioned topic. It needs to be called before creating a producer for a partitioned topic.
*
*
* @param topic
* Topic name
* @param numPartitions
* Number of partitions to create of the topic
* @throws PulsarAdminException
*/
default void createPartitionedTopic(String topic, int numPartitions) throws PulsarAdminException {
createPartitionedTopic(topic, numPartitions, null);
}
/**
* Create a partitioned topic.
*
* Create a partitioned topic. It needs to be called before creating a producer for a partitioned topic.
*
*
* @param topic
* Topic name
* @param numPartitions
* Number of partitions to create of the topic
* @param properties
* topic properties
* @throws PulsarAdminException
*/
void createPartitionedTopic(String topic, int numPartitions, Map properties)
throws PulsarAdminException;
/**
* Create a partitioned topic asynchronously.
*
* Create a partitioned topic asynchronously. It needs to be called before creating a producer for a partitioned
* topic.
*
*
* @param topic
* Topic name
* @param numPartitions
* Number of partitions to create of the topic
* @return a future that can be used to track when the partitioned topic is created
*/
default CompletableFuture createPartitionedTopicAsync(String topic, int numPartitions) {
return createPartitionedTopicAsync(topic, numPartitions, null);
}
/**
* Create a partitioned topic asynchronously.
*
* Create a partitioned topic asynchronously. It needs to be called before creating a producer for a partitioned
* topic.
*
*
* @param topic
* Topic name
* @param numPartitions
* Number of partitions to create of the topic
* @param properties
* Topic properties
* @return a future that can be used to track when the partitioned topic is created
*/
CompletableFuture createPartitionedTopicAsync(String topic, int numPartitions,
Map properties);
/**
* Create a non-partitioned topic.
*
* Create a non-partitioned topic.
*
*
* @param topic Topic name
* @throws PulsarAdminException
*/
default void createNonPartitionedTopic(String topic) throws PulsarAdminException {
createNonPartitionedTopic(topic, null);
}
/**
* Create a non-partitioned topic.
*
* Create a non-partitioned topic.
*
*
* @param topic Topic name
* @param properties Topic properties
* @throws PulsarAdminException
*/
void createNonPartitionedTopic(String topic, Map properties) throws PulsarAdminException;
/**
* Create a non-partitioned topic asynchronously.
*
* @param topic Topic name
*/
default CompletableFuture createNonPartitionedTopicAsync(String topic) {
return createNonPartitionedTopicAsync(topic, null);
}
/**
* Create a non-partitioned topic asynchronously.
*
* @param topic Topic name
* @param properties Topic properties
*/
CompletableFuture createNonPartitionedTopicAsync(String topic, Map properties);
/**
* Create missed partitions for partitioned topic.
*
* When disable topic auto creation, use this method to try create missed partitions while
* partitions create failed or users already have partitioned topic without partitions.
*
* @param topic partitioned topic name
*/
void createMissedPartitions(String topic) throws PulsarAdminException;
/**
* Create missed partitions for partitioned topic asynchronously.
*
* When disable topic auto creation, use this method to try create missed partitions while
* partitions create failed or users already have partitioned topic without partitions.
*
* @param topic partitioned topic name
*/
CompletableFuture createMissedPartitionsAsync(String topic);
/**
* Update number of partitions of a partitioned topic.
*
* It requires partitioned-topic to be already exist and number of new partitions must be greater than existing
* number of partitions. Decrementing number of partitions requires deletion of topic which is not supported.
*
*
* @param topic
* Topic name
* @param numPartitions
* Number of new partitions of already exist partitioned-topic
*
* @returns a future that can be used to track when the partitioned topic is updated.
*/
void updatePartitionedTopic(String topic, int numPartitions) throws PulsarAdminException;
/**
* Update number of partitions of a partitioned topic asynchronously.
*
* It requires partitioned-topic to be already exist and number of new partitions must be greater than existing
* number of partitions. Decrementing number of partitions requires deletion of topic which is not supported.
*
*
* @param topic
* Topic name
* @param numPartitions
* Number of new partitions of already exist partitioned-topic
*
* @return a future that can be used to track when the partitioned topic is updated
*/
CompletableFuture updatePartitionedTopicAsync(String topic, int numPartitions);
/**
* Update number of partitions of a partitioned topic.
*
* It requires partitioned-topic to be already exist and number of new partitions must be greater than existing
* number of partitions. Decrementing number of partitions requires deletion of topic which is not supported.
*
*
* @param topic
* Topic name
* @param numPartitions
* Number of new partitions of already exist partitioned-topic
* @param updateLocalTopicOnly
* Used by broker for global topic with multiple replicated clusters
* @param force
* Update forcefully without validating existing partitioned topic
* @returns a future that can be used to track when the partitioned topic is updated
*/
void updatePartitionedTopic(String topic, int numPartitions, boolean updateLocalTopicOnly, boolean force)
throws PulsarAdminException;
/**
* Update number of partitions of a partitioned topic asynchronously.
*
* It requires partitioned-topic to be already exist and number of new partitions must be greater than existing
* number of partitions. Decrementing number of partitions requires deletion of topic which is not supported.
*
*
* @param topic
* Topic name
* @param numPartitions
* Number of new partitions of already exist partitioned-topic
* @param updateLocalTopicOnly
* Used by broker for global topic with multiple replicated clusters
* @param force
* Update forcefully without validating existing partitioned topic
* @return a future that can be used to track when the partitioned topic is updated
*/
CompletableFuture updatePartitionedTopicAsync(String topic, int numPartitions, boolean updateLocalTopicOnly,
boolean force);
/**
* Update number of partitions of a partitioned topic.
*
* It requires partitioned-topic to be already exist and number of new partitions must be greater than existing
* number of partitions. Decrementing number of partitions requires deletion of topic which is not supported.
*
*
* @param topic
* Topic name
* @param numPartitions
* Number of new partitions of already exist partitioned-topic
* @param updateLocalTopicOnly
* Used by broker for global topic with multiple replicated clusters
* @returns a future that can be used to track when the partitioned topic is updated
*/
void updatePartitionedTopic(String topic, int numPartitions, boolean updateLocalTopicOnly)
throws PulsarAdminException;
/**
* Update number of partitions of a partitioned topic asynchronously.
*
* It requires partitioned-topic to be already exist and number of new partitions must be greater than existing
* number of partitions. Decrementing number of partitions requires deletion of topic which is not supported.
*
*
* @param topic
* Topic name
* @param numPartitions
* Number of new partitions of already exist partitioned-topic
* @param updateLocalTopicOnly
* Used by broker for global topic with multiple replicated clusters
* @return a future that can be used to track when the partitioned topic is updated
*/
CompletableFuture updatePartitionedTopicAsync(String topic, int numPartitions, boolean updateLocalTopicOnly);
/**
* Get metadata of a partitioned topic.
*
* Get metadata of a partitioned topic.
*
*
* @param topic
* Topic name
* @return Partitioned topic metadata
* @throws PulsarAdminException
*/
PartitionedTopicMetadata getPartitionedTopicMetadata(String topic) throws PulsarAdminException;
/**
* Get metadata of a partitioned topic asynchronously.
*
* Get metadata of a partitioned topic asynchronously.
*
*
* @param topic
* Topic name
* @return a future that can be used to track when the partitioned topic metadata is returned
*/
CompletableFuture getPartitionedTopicMetadataAsync(String topic);
/**
* Get properties of a topic.
* @param topic
* Topic name
* @return Topic properties
*/
Map getProperties(String topic) throws PulsarAdminException;
/**
* Get properties of a topic asynchronously.
* @param topic
* Topic name
* @return a future that can be used to track when the topic properties is returned
*/
CompletableFuture> getPropertiesAsync(String topic);
/**
* Update Topic Properties on a topic.
* The new properties will override the existing values, old properties in the topic will be keep if not override.
* @param topic
* @param properties
* @throws PulsarAdminException
*/
void updateProperties(String topic, Map properties) throws PulsarAdminException;
/**
* Update Topic Properties on a topic.
* The new properties will override the existing values, old properties in the topic will be keep if not override.
* @param topic
* @param properties
* @return
*/
CompletableFuture updatePropertiesAsync(String topic, Map properties);
/**
* Remove the key in properties on a topic.
*
* @param topic
* @param key
* @throws PulsarAdminException
*/
void removeProperties(String topic, String key) throws PulsarAdminException;
/**
* Remove the key in properties on a topic asynchronously.
*
* @param topic
* @param key
* @return
*/
CompletableFuture removePropertiesAsync(String topic, String key);
/**
* Delete a partitioned topic and its schemas.
*
* It will also delete all the partitions of the topic if it exists.
*
*
* @param topic
* Topic name
* @param force
* Delete topic forcefully
* @param deleteSchema
* Delete topic's schema storage and it is always true even if it is specified as false
*
* @throws PulsarAdminException
* @deprecated Use {@link Topics#deletePartitionedTopic(String, boolean)} instead because parameter
* `deleteSchema` is always true
*/
@Deprecated
void deletePartitionedTopic(String topic, boolean force, boolean deleteSchema) throws PulsarAdminException;
/**
* @see Topics#deletePartitionedTopic(String, boolean, boolean)
* IMPORTANT NOTICE: the application is not able to connect to the topic(delete then re-create with same name) again
* if the schema auto uploading is disabled. Besides, users should to use the truncate method to clean up
* data of the topic instead of delete method if users continue to use this topic later.
*/
default void deletePartitionedTopic(String topic, boolean force) throws PulsarAdminException {
deletePartitionedTopic(topic, force, true);
}
/**
* Delete a partitioned topic and its schemas asynchronously.
*
* It will also delete all the partitions of the topic if it exists.
*
*
* @param topic
* Topic name
* @param force
* Delete topic forcefully
* @param deleteSchema
* Delete topic's schema storage and it is always true even if it is specified as false
*
* @return a future that can be used to track when the partitioned topic is deleted
* @deprecated Use {@link Topics#deletePartitionedTopicAsync(String, boolean)} instead because parameter
* `deleteSchema` is always true
*/
@Deprecated
CompletableFuture deletePartitionedTopicAsync(String topic, boolean force, boolean deleteSchema);
/**
* @see Topics#deletePartitionedTopic(String, boolean, boolean)
*/
default CompletableFuture deletePartitionedTopicAsync(String topic, boolean force) {
return deletePartitionedTopicAsync(topic, force, true);
}
/**
* Delete a partitioned topic.
*
* It will also delete all the partitions of the topic if it exists.
*
*
* @param topic
* Topic name
*
* @throws PulsarAdminException
*/
void deletePartitionedTopic(String topic) throws PulsarAdminException;
/**
* Delete a partitioned topic asynchronously.
*
* It will also delete all the partitions of the topic if it exists.
*
*
* @param topic
* Topic name
*/
CompletableFuture deletePartitionedTopicAsync(String topic);
/**
* Delete a topic and its schemas.
*
* Delete a topic. The topic cannot be deleted if force flag is disable and there's any active
* subscription or producer connected to the it. Force flag deletes topic forcefully by closing
* all active producers and consumers.
*
*
* @param topic
* Topic name
* @param force
* Delete topic forcefully
* @param deleteSchema
* Delete topic's schema storage and it is always true even if it is specified as false
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PreconditionFailedException
* Topic has active subscriptions or producers
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link Topics#delete(String, boolean)} instead because
* parameter `deleteSchema` is always true
*/
@Deprecated
void delete(String topic, boolean force, boolean deleteSchema) throws PulsarAdminException;
/**
* @see Topics#delete(String, boolean, boolean)
* IMPORTANT NOTICE: the application is not able to connect to the topic(delete then re-create with same name) again
* if the schema auto uploading is disabled. Besides, users should to use the truncate method to clean up
* data of the topic instead of delete method if users continue to use this topic later.
*/
default void delete(String topic, boolean force) throws PulsarAdminException {
delete(topic, force, true);
}
/**
* Delete a topic and its schemas asynchronously.
*
* Delete a topic asynchronously. The topic cannot be deleted if force flag is disable and there's any active
* subscription or producer connected to the it. Force flag deletes topic forcefully by closing all active producers
* and consumers.
*
*
* @param topic
* topic name
* @param force
* Delete topic forcefully
* @param deleteSchema
* Delete topic's schema storage and it is always true even if it is specified as false
*
* @return a future that can be used to track when the topic is deleted
* @deprecated Use {@link Topics#deleteAsync(String, boolean)} instead because
* parameter `deleteSchema` is always true
*/
@Deprecated
CompletableFuture deleteAsync(String topic, boolean force, boolean deleteSchema);
/**
* @see Topics#deleteAsync(String, boolean, boolean)
*/
default CompletableFuture deleteAsync(String topic, boolean force) {
return deleteAsync(topic, force, true);
}
/**
* Delete a topic.
*
* Delete a topic. The topic cannot be deleted if there's any active subscription or producer connected to the it.
*
*
* @param topic
* Topic name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PreconditionFailedException
* Topic has active subscriptions or producers
* @throws PulsarAdminException
* Unexpected error
*/
void delete(String topic) throws PulsarAdminException;
/**
* Delete a topic asynchronously.
*
* Delete a topic. The topic cannot be deleted if there's any active subscription or producer connected to the it.
*
*
* @param topic
* Topic name
*/
CompletableFuture deleteAsync(String topic);
/**
* Unload a topic.
*
*
* @param topic
* topic name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* topic does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void unload(String topic) throws PulsarAdminException;
/**
* Unload a topic asynchronously.
*
*
* @param topic
* topic name
*
* @return a future that can be used to track when the topic is unloaded
*/
CompletableFuture unloadAsync(String topic);
/**
* Terminate the topic and prevent any more messages being published on it.
*
*
* @param topic
* topic name
* @return the message id of the last message that was published in the topic
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* topic does not exist
* @throws PulsarAdminException
* Unexpected error
*/
MessageId terminateTopic(String topic) throws PulsarAdminException;
/**
* Terminate the topic and prevent any more messages being published on it.
*
*
* @param topic
* topic name
* @return the message id of the last message that was published in the topic
*/
CompletableFuture terminateTopicAsync(String topic);
/**
* Terminate the partitioned topic and prevent any more messages being published on it.
*
*
* @param topic
* topic name
* @return the message id of the last message that was published in the each partition of topic
*/
Map terminatePartitionedTopic(String topic) throws PulsarAdminException;
/**
* Terminate the partitioned topic and prevent any more messages being published on it.
*
*
* @param topic
* topic name
* @return the message id of the last message that was published in the each partition of topic
*/
CompletableFuture> terminatePartitionedTopicAsync(String topic);
/**
* Get the list of subscriptions.
*
* Get the list of persistent subscriptions for a given topic.
*
*
* @param topic
* topic name
* @return the list of subscriptions
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
*/
List getSubscriptions(String topic) throws PulsarAdminException;
/**
* Get the list of subscriptions asynchronously.
*
* Get the list of persistent subscriptions for a given topic.
*
*
* @param topic
* topic name
* @return a future that can be used to track when the list of subscriptions is returned
*/
CompletableFuture> getSubscriptionsAsync(String topic);
/**
* Get the stats for the topic.
*
* Response Example:
*
*
*
* {
* "msgRateIn" : 100.0, // Total rate of messages published on the topic. msg/s
* "msgThroughputIn" : 10240.0, // Total throughput of messages published on the topic. byte/s
* "msgRateOut" : 100.0, // Total rate of messages delivered on the topic. msg/s
* "msgThroughputOut" : 10240.0, // Total throughput of messages delivered on the topic. byte/s
* "averageMsgSize" : 1024.0, // Average size of published messages. bytes
* "publishers" : [ // List of publishes on this topic with their stats
* {
* "producerId" : 10 // producer id
* "address" : 10.4.1.23:3425 // IP and port for this producer
* "connectedSince" : 2014-11-21 23:54:46 // Timestamp of this published connection
* "msgRateIn" : 100.0, // Total rate of messages published by this producer. msg/s
* "msgThroughputIn" : 10240.0, // Total throughput of messages published by this producer. byte/s
* "averageMsgSize" : 1024.0, // Average size of published messages by this producer. bytes
* },
* ],
* "subscriptions" : { // Map of subscriptions on this topic
* "sub1" : {
* "msgRateOut" : 100.0, // Total rate of messages delivered on this subscription. msg/s
* "msgThroughputOut" : 10240.0, // Total throughput delivered on this subscription. bytes/s
* "msgBacklog" : 0, // Number of messages in the subscriotion backlog
* "type" : Exclusive // Whether the subscription is exclusive or shared
* "consumers" [ // List of consumers on this subscription
* {
* "id" : 5 // Consumer id
* "address" : 10.4.1.23:3425 // IP and port for this consumer
* "connectedSince" : 2014-11-21 23:54:46 // Timestamp of this consumer connection
* "msgRateOut" : 100.0, // Total rate of messages delivered to this consumer. msg/s
* "msgThroughputOut" : 10240.0, // Total throughput delivered to this consumer. bytes/s
* }
* ],
* },
* "replication" : { // Replication statistics
* "cluster_1" : { // Cluster name in the context of from-cluster or to-cluster
* "msgRateIn" : 100.0, // Total rate of messages received from this remote cluster. msg/s
* "msgThroughputIn" : 10240.0, // Total throughput received from this remote cluster. bytes/s
* "msgRateOut" : 100.0, // Total rate of messages delivered to the replication-subscriber. msg/s
* "msgThroughputOut" : 10240.0, // Total throughput delivered to the replication-subscriber. bytes/s
* "replicationBacklog" : 0, // Number of messages pending to be replicated to this remote cluster
* "connected" : true, // Whether the replication-subscriber is currently connected locally
* },
* "cluster_2" : {
* "msgRateIn" : 100.0,
* "msgThroughputIn" : 10240.0,
* "msgRateOut" : 100.0,
* "msgThroughputOut" : 10240.0,
* "replicationBacklog" : 0,
* "connected" : true,
* }
* },
* }
*
*
*
* All the rates are computed over a 1 minute window and are relative the last completed 1 minute period.
*
* @param topic
* topic name
* @param getStatsOptions
* get stats options
* @return the topic statistics
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
*/
TopicStats getStats(String topic, GetStatsOptions getStatsOptions) throws PulsarAdminException;
default TopicStats getStats(String topic, boolean getPreciseBacklog, boolean subscriptionBacklogSize,
boolean getEarliestTimeInBacklog) throws PulsarAdminException {
GetStatsOptions getStatsOptions =
new GetStatsOptions(getPreciseBacklog, subscriptionBacklogSize, getEarliestTimeInBacklog);
return getStats(topic, getStatsOptions);
}
default TopicStats getStats(String topic, boolean getPreciseBacklog,
boolean subscriptionBacklogSize) throws PulsarAdminException {
GetStatsOptions getStatsOptions = new GetStatsOptions(getPreciseBacklog, subscriptionBacklogSize, false);
return getStats(topic, getStatsOptions);
}
default TopicStats getStats(String topic, boolean getPreciseBacklog) throws PulsarAdminException {
GetStatsOptions getStatsOptions = new GetStatsOptions(getPreciseBacklog, false, false);
return getStats(topic, getStatsOptions);
}
default TopicStats getStats(String topic) throws PulsarAdminException {
return getStats(topic, new GetStatsOptions(false, false, false));
}
/**
* Get the stats for the topic asynchronously. All the rates are computed over a 1 minute window and are relative
* the last completed 1 minute period.
*
* @param topic
* topic name
* @param getPreciseBacklog
* Set to true to get precise backlog, Otherwise get imprecise backlog.
* @param subscriptionBacklogSize
* Whether to get backlog size for each subscription.
* @param getEarliestTimeInBacklog
* Whether to get the earliest time in backlog.
* @return a future that can be used to track when the topic statistics are returned
*
*/
CompletableFuture getStatsAsync(String topic, boolean getPreciseBacklog,
boolean subscriptionBacklogSize, boolean getEarliestTimeInBacklog);
default CompletableFuture getStatsAsync(String topic) {
return getStatsAsync(topic, false, false, false);
}
/**
* Get the internal stats for the topic.
*
* Access the internal state of the topic
*
* @param topic
* topic name
* @param metadata
* flag to include ledger metadata
* @return the topic statistics
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
*/
PersistentTopicInternalStats getInternalStats(String topic, boolean metadata) throws PulsarAdminException;
/**
* Get the internal stats for the topic.
*
* Access the internal state of the topic
*
* @param topic
* topic name
* @return the topic statistics
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
*/
PersistentTopicInternalStats getInternalStats(String topic) throws PulsarAdminException;
/**
* Get the internal stats for the topic asynchronously.
*
* @param topic
* topic Name
* @param metadata
* flag to include ledger metadata
* @return a future that can be used to track when the internal topic statistics are returned
*/
CompletableFuture getInternalStatsAsync(String topic, boolean metadata);
/**
* Get the internal stats for the topic asynchronously.
*
* @param topic
* topic Name
* @return a future that can be used to track when the internal topic statistics are returned
*/
CompletableFuture getInternalStatsAsync(String topic);
/**
* Get a JSON representation of the topic metadata stored in ZooKeeper.
*
* @param topic
* topic name
* @return the topic internal metadata
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
*/
String getInternalInfo(String topic) throws PulsarAdminException;
/**
* Get a JSON representation of the topic metadata stored in ZooKeeper.
*
* @param topic
* topic name
* @return a future to receive the topic internal metadata
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
*/
CompletableFuture getInternalInfoAsync(String topic);
/**
* Get the stats for the partitioned topic
*
* Response Example:
*
*
*
* {
* "msgRateIn" : 100.0, // Total rate of messages published on the partitioned topic. msg/s
* "msgThroughputIn" : 10240.0, // Total throughput of messages published on the partitioned topic. byte/s
* "msgRateOut" : 100.0, // Total rate of messages delivered on the partitioned topic. msg/s
* "msgThroughputOut" : 10240.0, // Total throughput of messages delivered on the partitioned topic. byte/s
* "averageMsgSize" : 1024.0, // Average size of published messages. bytes
* "publishers" : [ // List of publishes on this partitioned topic with their stats
* {
* "msgRateIn" : 100.0, // Total rate of messages published by this producer. msg/s
* "msgThroughputIn" : 10240.0, // Total throughput of messages published by this producer. byte/s
* "averageMsgSize" : 1024.0, // Average size of published messages by this producer. bytes
* },
* ],
* "subscriptions" : { // Map of subscriptions on this topic
* "sub1" : {
* "msgRateOut" : 100.0, // Total rate of messages delivered on this subscription. msg/s
* "msgThroughputOut" : 10240.0, // Total throughput delivered on this subscription. bytes/s
* "msgBacklog" : 0, // Number of messages in the subscriotion backlog
* "type" : Exclusive // Whether the subscription is exclusive or shared
* "consumers" [ // List of consumers on this subscription
* {
* "msgRateOut" : 100.0, // Total rate of messages delivered to this consumer. msg/s
* "msgThroughputOut" : 10240.0, // Total throughput delivered to this consumer. bytes/s
* }
* ],
* },
* "replication" : { // Replication statistics
* "cluster_1" : { // Cluster name in the context of from-cluster or to-cluster
* "msgRateIn" : 100.0, // Total rate of messages received from this remote cluster. msg/s
* "msgThroughputIn" : 10240.0, // Total throughput received from this remote cluster. bytes/s
* "msgRateOut" : 100.0, // Total rate of messages delivered to the replication-subscriber. msg/s
* "msgThroughputOut" : 10240.0, // Total throughput delivered to the replication-subscriber. bytes/s
* "replicationBacklog" : 0, // Number of messages pending to be replicated to this remote cluster
* "connected" : true, // Whether the replication-subscriber is currently connected locally
* },
* "cluster_2" : {
* "msgRateIn" : 100.0,
* "msgThroughputIn" : 10240.0,
* "msgRateOut" : 100.0,
* "msghroughputOut" : 10240.0,
* "replicationBacklog" : 0,
* "connected" : true,
* }
* },
* }
*
*
*
* All the rates are computed over a 1 minute window and are relative the last completed 1 minute period.
*
* @param topic
* topic name
* @param perPartition
* flag to get stats per partition
* @param getPreciseBacklog
* Set to true to get precise backlog, Otherwise get imprecise backlog.
* @param subscriptionBacklogSize
* Whether to get backlog size for each subscription.
* @return the partitioned topic statistics
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
*
*/
PartitionedTopicStats getPartitionedStats(String topic, boolean perPartition, boolean getPreciseBacklog,
boolean subscriptionBacklogSize, boolean getEarliestTimeInBacklog)
throws PulsarAdminException;
default PartitionedTopicStats getPartitionedStats(String topic, boolean perPartition) throws PulsarAdminException {
return getPartitionedStats(topic, perPartition, false, false, false);
}
/**
* Get the stats for the partitioned topic asynchronously.
*
* @param topic
* topic Name
* @param perPartition
* flag to get stats per partition
* @param getPreciseBacklog
* Set to true to get precise backlog, Otherwise get imprecise backlog.
* @param subscriptionBacklogSize
* Whether to get backlog size for each subscription.
* @param getEarliestTimeInBacklog
* Whether to get the earliest time in backlog.
* @return a future that can be used to track when the partitioned topic statistics are returned
*/
CompletableFuture getPartitionedStatsAsync(
String topic, boolean perPartition, boolean getPreciseBacklog, boolean subscriptionBacklogSize,
boolean getEarliestTimeInBacklog);
default CompletableFuture getPartitionedStatsAsync(String topic, boolean perPartition) {
return getPartitionedStatsAsync(topic, perPartition, false, false, false);
}
/**
* Get the stats for the partitioned topic.
*
* @param topic
* topic name
* @return
* @throws PulsarAdminException
*/
PartitionedTopicInternalStats getPartitionedInternalStats(String topic)
throws PulsarAdminException;
/**
* Get the stats-internal for the partitioned topic asynchronously.
*
* @param topic
* topic Name
* @return a future that can be used to track when the partitioned topic statistics are returned
*/
CompletableFuture getPartitionedInternalStatsAsync(String topic);
/**
* Delete a subscription.
*
* Delete a persistent subscription from a topic. There should not be any active consumers on the subscription.
*
*
* @param topic
* topic name
* @param subName
* Subscription name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic or subscription does not exist
* @throws PreconditionFailedException
* Subscription has active consumers
* @throws PulsarAdminException
* Unexpected error
*/
void deleteSubscription(String topic, String subName) throws PulsarAdminException;
/**
* Delete a subscription.
*
* Delete a persistent subscription from a topic. There should not be any active consumers on the subscription.
* Force flag deletes subscription forcefully by closing all active consumers.
*
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param force
* Delete topic forcefully
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic or subscription does not exist
* @throws PreconditionFailedException
* Subscription has active consumers
* @throws PulsarAdminException
* Unexpected error
*/
void deleteSubscription(String topic, String subName, boolean force) throws PulsarAdminException;
/**
* Delete a subscription asynchronously.
*
* Delete a persistent subscription from a topic. There should not be any active consumers on the subscription.
*
*
* @param topic
* topic name
* @param subName
* Subscription name
*
* @return a future that can be used to track when the subscription is deleted
*/
CompletableFuture deleteSubscriptionAsync(String topic, String subName);
/**
* Delete a subscription asynchronously.
*
* Delete a persistent subscription from a topic. There should not be any active consumers on the subscription.
* Force flag deletes subscription forcefully by closing all active consumers.
*
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param force
* Delete topic forcefully
*
* @return a future that can be used to track when the subscription is deleted
*/
CompletableFuture deleteSubscriptionAsync(String topic, String subName, boolean force);
/**
* Skip all messages on a topic subscription.
*
* Completely clears the backlog on the subscription.
*
* @param topic
* topic name
* @param subName
* Subscription name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic or subscription does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void skipAllMessages(String topic, String subName) throws PulsarAdminException;
/**
* Skip all messages on a topic subscription asynchronously.
*
* Completely clears the backlog on the subscription.
*
* @param topic
* topic name
* @param subName
* Subscription name
*
* @return a future that can be used to track when all the messages are skipped
*/
CompletableFuture skipAllMessagesAsync(String topic, String subName);
/**
* Skip messages on a topic subscription.
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param numMessages
* Number of messages
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic or subscription does not exist
* @throws PulsarAdminException
* Unexpected error
*/
void skipMessages(String topic, String subName, long numMessages) throws PulsarAdminException;
/**
* Skip messages on a topic subscription asynchronously.
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param numMessages
* Number of messages
*
* @return a future that can be used to track when the number of messages are skipped
*/
CompletableFuture skipMessagesAsync(String topic, String subName, long numMessages);
/**
* Expire all messages older than given N (expireTimeInSeconds) seconds for a given subscription.
*
* @param topic
* topic name
* @param subscriptionName
* Subscription name
* @param expireTimeInSeconds
* Expire messages older than time in seconds
* @throws PulsarAdminException
* Unexpected error
*/
void expireMessages(String topic, String subscriptionName, long expireTimeInSeconds)
throws PulsarAdminException;
/**
* Expire all messages older than given N (expireTimeInSeconds) seconds for a given subscription asynchronously.
*
* @param topic
* topic name
* @param subscriptionName
* Subscription name
* @param expireTimeInSeconds
* Expire messages older than time in seconds
* @return
*/
CompletableFuture expireMessagesAsync(String topic, String subscriptionName,
long expireTimeInSeconds);
/**
* Expire all messages older than given N (expireTimeInSeconds) seconds for a given subscription.
*
* @param topic
* topic name
* @param subscriptionName
* Subscription name
* @param messageId
* Position before which all messages will be expired.
* @param isExcluded
* Will message at passed in position also be expired.
* @throws PulsarAdminException
* Unexpected error
*/
void expireMessages(String topic, String subscriptionName, MessageId messageId, boolean isExcluded)
throws PulsarAdminException;
/**
* Expire all messages older than given N (expireTimeInSeconds) seconds for a given subscription asynchronously.
*
* @param topic
* topic name
* @param subscriptionName
* Subscription name
* @param messageId
* Position before which all messages will be expired.
* @param isExcluded
* Will message at passed in position also be expired.
* @return
* A {@link CompletableFuture} that'll be completed when expire message is done.
*/
CompletableFuture expireMessagesAsync(String topic, String subscriptionName,
MessageId messageId, boolean isExcluded);
/**
* Expire all messages older than given N seconds for all subscriptions of the persistent-topic.
*
* @param topic
* topic name
* @param expireTimeInSeconds
* Expire messages older than time in seconds
* @throws PulsarAdminException
* Unexpected error
*/
void expireMessagesForAllSubscriptions(String topic, long expireTimeInSeconds)
throws PulsarAdminException;
/**
* Expire all messages older than given N seconds for all subscriptions of the persistent-topic asynchronously.
*
* @param topic
* topic name
* @param expireTimeInSeconds
* Expire messages older than time in seconds
*/
CompletableFuture expireMessagesForAllSubscriptionsAsync(String topic, long expireTimeInSeconds);
/**
* Peek messages from a topic subscription.
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param numMessages
* Number of messages
* @return
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic or subscription does not exist
* @throws PulsarAdminException
* Unexpected error
*/
default List> peekMessages(String topic, String subName, int numMessages)
throws PulsarAdminException {
return peekMessages(topic, subName, numMessages, false, TransactionIsolationLevel.READ_COMMITTED);
}
/**
* Peek messages from a topic subscription.
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param numMessages
* Number of messages
* @param showServerMarker
* Enables the display of internal server write markers
* @param transactionIsolationLevel
* Sets the isolation level for peeking messages within transactions.
* - 'READ_COMMITTED' allows peeking only committed transactional messages.
* - 'READ_UNCOMMITTED' allows peeking all messages,
* even transactional messages which have been aborted.
* @return
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic or subscription does not exist
* @throws PulsarAdminException
* Unexpected error
*/
List> peekMessages(String topic, String subName, int numMessages,
boolean showServerMarker, TransactionIsolationLevel transactionIsolationLevel)
throws PulsarAdminException;
/**
* Peek messages from a topic subscription asynchronously.
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param numMessages
* Number of messages
* @return a future that can be used to track when the messages are returned
*/
default CompletableFuture>> peekMessagesAsync(String topic, String subName, int numMessages) {
return peekMessagesAsync(topic, subName, numMessages, false, TransactionIsolationLevel.READ_COMMITTED);
}
/**
* Peek messages from a topic subscription asynchronously.
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param numMessages
* Number of messages
* @param showServerMarker
* Enables the display of internal server write markers
@param transactionIsolationLevel
* Sets the isolation level for peeking messages within transactions.
* - 'READ_COMMITTED' allows peeking only committed transactional messages.
* - 'READ_UNCOMMITTED' allows peeking all messages,
* even transactional messages which have been aborted.
* @return a future that can be used to track when the messages are returned
*/
CompletableFuture>> peekMessagesAsync(
String topic, String subName, int numMessages,
boolean showServerMarker, TransactionIsolationLevel transactionIsolationLevel);
/**
* Get a message by its messageId via a topic subscription.
* @param topic
* Topic name
* @param ledgerId
* Ledger id
* @param entryId
* Entry id
* @return the message indexed by the messageId
* @throws PulsarAdminException
* Unexpected error
*/
Message getMessageById(String topic, long ledgerId, long entryId) throws PulsarAdminException;
/**
* Get a message by its messageId via a topic subscription asynchronously.
* @param topic
* Topic name
* @param ledgerId
* Ledger id
* @param entryId
* Entry id
* @return a future that can be used to track when the message is returned
*/
CompletableFuture> getMessageByIdAsync(String topic, long ledgerId, long entryId);
/**
* Get message ID published at or just after this absolute timestamp (in ms).
* @param topic
* Topic name
* @param timestamp
* Timestamp
* @return MessageId
* @throws PulsarAdminException
* Unexpected error
*/
MessageId getMessageIdByTimestamp(String topic, long timestamp) throws PulsarAdminException;
/**
* Get message ID published at or just after this absolute timestamp (in ms) asynchronously.
* @param topic
* Topic name
* @param timestamp
* Timestamp
* @return a future that can be used to track when the message ID is returned.
*/
CompletableFuture getMessageIdByTimestampAsync(String topic, long timestamp);
/**
* Create a new subscription on a topic.
*
* @param topic
* topic name
* @param subscriptionName
* Subscription name
* @param messageId
* The {@link MessageId} on where to initialize the subscription. It could be {@link MessageId#latest},
* {@link MessageId#earliest} or a specific message id.
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws ConflictException
* Subscription already exists
* @throws NotAllowedException
* Command disallowed for requested resource
* @throws PulsarAdminException
* Unexpected error
*/
default void createSubscription(String topic, String subscriptionName, MessageId messageId)
throws PulsarAdminException {
createSubscription(topic, subscriptionName, messageId, false);
};
/**
* Create a new subscription on a topic.
*
* @param topic
* topic name
* @param subscriptionName
* Subscription name
* @param messageId
* The {@link MessageId} on where to initialize the subscription. It could be {@link MessageId#latest},
* {@link MessageId#earliest} or a specific message id.
*/
default CompletableFuture createSubscriptionAsync(String topic, String subscriptionName,
MessageId messageId) {
return createSubscriptionAsync(topic, subscriptionName, messageId, false);
}
/**
* Create a new subscription on a topic.
*
* @param topic
* topic name
* @param subscriptionName
* Subscription name
* @param messageId
* The {@link MessageId} on where to initialize the subscription. It could be {@link MessageId#latest},
* {@link MessageId#earliest} or a specific message id.
* @param replicated
* replicated subscriptions.
* @throws NotAuthorizedException
* Don't have admin permission
* @throws ConflictException
* Subscription already exists
* @throws NotAllowedException
* Command disallowed for requested resource
* @throws PulsarAdminException
* Unexpected error
*/
default void createSubscription(String topic, String subscriptionName, MessageId messageId, boolean replicated)
throws PulsarAdminException {
createSubscription(topic, subscriptionName, messageId, replicated, null);
}
/**
* Create a new subscription on a topic.
*
* @param topic
* topic name
* @param subscriptionName
* Subscription name
* @param messageId
* The {@link MessageId} on where to initialize the subscription. It could be {@link MessageId#latest},
* {@link MessageId#earliest} or a specific message id.
* @param replicated
* replicated subscriptions.
* @param properties
* subscription properties.
* @throws NotAuthorizedException
* Don't have admin permission
* @throws ConflictException
* Subscription already exists
* @throws NotAllowedException
* Command disallowed for requested resource
* @throws PulsarAdminException
* Unexpected error
*/
void createSubscription(String topic, String subscriptionName, MessageId messageId, boolean replicated,
Map properties)
throws PulsarAdminException;
/**
* Create a new subscription on a topic.
*
* @param topic
* topic name
* @param subscriptionName
* Subscription name
* @param messageId
* The {@link MessageId} on where to initialize the subscription. It could be {@link MessageId#latest},
* {@link MessageId#earliest} or a specific message id.
*
* @param replicated
* replicated subscriptions.
*/
default CompletableFuture createSubscriptionAsync(String topic, String subscriptionName, MessageId messageId,
boolean replicated) {
return createSubscriptionAsync(topic, subscriptionName, messageId, replicated, null);
}
/**
* Create a new subscription on a topic.
*
* @param topic
* topic name
* @param subscriptionName
* Subscription name
* @param messageId
* The {@link MessageId} on where to initialize the subscription. It could be {@link MessageId#latest},
* {@link MessageId#earliest} or a specific message id.
*
* @param replicated
* replicated subscriptions.
* @param properties
* subscription properties.
*/
CompletableFuture createSubscriptionAsync(String topic, String subscriptionName, MessageId messageId,
boolean replicated, Map properties);
/**
* Reset cursor position on a topic subscription.
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param timestamp
* reset subscription to position closest to time in ms since epoch
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic or subscription does not exist
* @throws NotAllowedException
* Command disallowed for requested resource
* @throws PulsarAdminException
* Unexpected error
*/
void resetCursor(String topic, String subName, long timestamp) throws PulsarAdminException;
/**
* Reset cursor position on a topic subscription.
*
* and start consume messages from the next position of the reset position.
* @param topic
* @param subName
* @param messageId
* @param isExcluded
* @throws PulsarAdminException
*/
void resetCursor(String topic, String subName, MessageId messageId, boolean isExcluded) throws PulsarAdminException;
/**
* Update Subscription Properties on a topic subscription.
* The new properties will override the existing values, properties that are not passed will be removed.
* @param topic
* @param subName
* @param subscriptionProperties
* @throws PulsarAdminException
*/
void updateSubscriptionProperties(String topic, String subName, Map subscriptionProperties)
throws PulsarAdminException;
/**
* Get Subscription Properties on a topic subscription.
* @param topic
* @param subName
* @throws PulsarAdminException
*/
Map getSubscriptionProperties(String topic, String subName)
throws PulsarAdminException;
/**
* Reset cursor position on a topic subscription.
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param timestamp
* reset subscription to position closest to time in ms since epoch
*/
CompletableFuture resetCursorAsync(String topic, String subName, long timestamp);
/**
* Reset cursor position on a topic subscription.
*
* and start consume messages from the next position of the reset position.
* @param topic
* @param subName
* @param messageId
* @param isExcluded
* @return
*/
CompletableFuture resetCursorAsync(String topic, String subName, MessageId messageId, boolean isExcluded);
/**
* Update Subscription Properties on a topic subscription.
* The new properties will override the existing values, properties that are not passed will be removed.
* @param topic
* @param subName
* @param subscriptionProperties
*/
CompletableFuture updateSubscriptionPropertiesAsync(String topic, String subName,
Map subscriptionProperties);
/**
* Get Subscription Properties on a topic subscription.
* @param topic
* @param subName
*/
CompletableFuture> getSubscriptionPropertiesAsync(String topic, String subName);
/**
* Reset cursor position on a topic subscription.
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param messageId
* reset subscription to messageId (or previous nearest messageId if given messageId is not valid)
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic or subscription does not exist
* @throws NotAllowedException
* Command disallowed for requested resource
* @throws PulsarAdminException
* Unexpected error
*/
void resetCursor(String topic, String subName, MessageId messageId) throws PulsarAdminException;
/**
* Reset cursor position on a topic subscription.
*
* @param topic
* topic name
* @param subName
* Subscription name
* @param messageId
* reset subscription to messageId (or previous nearest messageId if given messageId is not valid)
*/
CompletableFuture resetCursorAsync(String topic, String subName, MessageId messageId);
/**
* Trigger compaction to run for a topic. A single topic can only have one instance of compaction
* running at any time. Any attempt to trigger another will be met with a ConflictException.
*
* @param topic
* The topic on which to trigger compaction
*/
void triggerCompaction(String topic) throws PulsarAdminException;
/**
* Trigger compaction to run for a topic asynchronously.
*
* @param topic
* The topic on which to trigger compaction
*/
CompletableFuture triggerCompactionAsync(String topic);
/**
* Trigger topic trimming.
* @param topic The topic to trim
* @throws PulsarAdminException
*/
void trimTopic(String topic) throws PulsarAdminException;
/**
* Trigger topic trimming asynchronously.
* @param topic The topic to trim
*/
CompletableFuture trimTopicAsync(String topic);
/**
* Check the status of an ongoing compaction for a topic.
*
* @param topic The topic whose compaction status we wish to check
*/
LongRunningProcessStatus compactionStatus(String topic) throws PulsarAdminException;
/**
* Check the status of an ongoing compaction for a topic asynchronously.
*
* @param topic The topic whose compaction status we wish to check
*/
CompletableFuture compactionStatusAsync(String topic);
/**
* Trigger offloading messages in topic to longterm storage.
*
* @param topic the topic to offload
* @param messageId ID of maximum message which should be offloaded
*/
void triggerOffload(String topic, MessageId messageId) throws PulsarAdminException;
/**
* Trigger offloading messages in topic to longterm storage asynchronously.
*
* @param topic the topic to offload
* @param messageId ID of maximum message which should be offloaded
*/
CompletableFuture triggerOffloadAsync(String topic, MessageId messageId);
/**
* Check the status of an ongoing offloading operation for a topic.
*
* @param topic the topic being offloaded
* @return the status of the offload operation
*/
OffloadProcessStatus offloadStatus(String topic) throws PulsarAdminException;
/**
* Check the status of an ongoing offloading operation for a topic asynchronously.
*
* @param topic the topic being offloaded
* @return the status of the offload operation
*/
CompletableFuture offloadStatusAsync(String topic);
/**
* Get the last commit message Id of a topic.
*
* @param topic the topic name
* @return
* @throws PulsarAdminException
*/
MessageId getLastMessageId(String topic) throws PulsarAdminException;
/**
* Get the last commit message Id of a topic asynchronously.
*
* @param topic the topic name
* @return
*/
CompletableFuture getLastMessageIdAsync(String topic);
/**
* Get backlog quota map for a topic.
* Response example:
*
*
*
* {
* "namespace_memory" : {
* "limit" : "134217728",
* "policy" : "consumer_backlog_eviction"
* },
* "destination_storage" : {
* "limit" : "-1",
* "policy" : "producer_exception"
* }
* }
*
*
*
* @param topic
* Topic name
*
* @throws NotAuthorizedException
* Permission denied
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getBacklogQuotaMap(String)} instead.
*/
@Deprecated
Map getBacklogQuotaMap(String topic)
throws PulsarAdminException;
/**
* Get applied backlog quota map for a topic.
* @param topic
* @param applied
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getBacklogQuotaMap(String, boolean)} instead.
*/
@Deprecated
Map getBacklogQuotaMap(String topic, boolean applied)
throws PulsarAdminException;
/**
* Analyze subscription backlog.
* This is a potentially expensive operation, as it requires
* to read the messages from storage.
* This function takes into consideration batch messages
* and also Subscription filters.
* @param topic
* Topic name
* @param subscriptionName
* the subscription
* @param startPosition
* the position to start the scan from (empty means the last processed message)
* @return an accurate analysis of the backlog
* @throws PulsarAdminException
* Unexpected error
*/
AnalyzeSubscriptionBacklogResult analyzeSubscriptionBacklog(String topic, String subscriptionName,
Optional startPosition)
throws PulsarAdminException;
/**
* Analyze subscription backlog.
* This is a potentially expensive operation, as it requires
* to read the messages from storage.
* This function takes into consideration batch messages
* and also Subscription filters.
* @param topic
* Topic name
* @param subscriptionName
* the subscription
* @param startPosition
* the position to start the scan from (empty means the last processed message)
* @return an accurate analysis of the backlog
* @throws PulsarAdminException
* Unexpected error
*/
CompletableFuture analyzeSubscriptionBacklogAsync(String topic,
String subscriptionName,
Optional startPosition);
/**
* Get backlog size by a message ID.
* @param topic
* Topic name
* @param messageId
* message ID
* @return the backlog size from
* @throws PulsarAdminException
* Unexpected error
*/
Long getBacklogSizeByMessageId(String topic, MessageId messageId) throws PulsarAdminException;
/**
* Get backlog size by a message ID asynchronously.
* @param topic
* Topic name
* @param messageId
* message ID
* @return the backlog size from
*/
CompletableFuture getBacklogSizeByMessageIdAsync(String topic, MessageId messageId);
/**
* Set a backlog quota for a topic.
* The backlog quota can be set on this resource:
*
*
* Request parameter example:
*
*
*
*
* {
* "limit" : "134217728",
* "policy" : "consumer_backlog_eviction"
* }
*
*
*
* @param topic
* Topic name
* @param backlogQuota
* the new BacklogQuota
* @param backlogQuotaType
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#setBacklogQuota(String, BacklogQuota, BacklogQuota.BacklogQuotaType)}
* instead.
*/
@Deprecated
void setBacklogQuota(String topic, BacklogQuota backlogQuota,
BacklogQuota.BacklogQuotaType backlogQuotaType) throws PulsarAdminException;
/**
* @deprecated Use {@link TopicPolicies#setBacklogQuota(String, BacklogQuota)} instead.
*/
@Deprecated
default void setBacklogQuota(String topic, BacklogQuota backlogQuota) throws PulsarAdminException {
setBacklogQuota(topic, backlogQuota, BacklogQuota.BacklogQuotaType.destination_storage);
}
/**
* Remove a backlog quota policy from a topic.
* The namespace backlog policy will fall back to the default.
*
* @param topic
* Topic name
* @param backlogQuotaType
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#removeBacklogQuota(String, BacklogQuota.BacklogQuotaType)} instead.
*/
@Deprecated
void removeBacklogQuota(String topic, BacklogQuota.BacklogQuotaType backlogQuotaType) throws PulsarAdminException;
/**
* @deprecated Use {@link TopicPolicies#removeBacklogQuota(String)} instead.
*/
@Deprecated
default void removeBacklogQuota(String topic)
throws PulsarAdminException {
removeBacklogQuota(topic, BacklogQuota.BacklogQuotaType.destination_storage);
}
/**
* Get the delayed delivery policy applied for a specified topic.
* @param topic
* @param applied
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getDelayedDeliveryPolicy(String, boolean)} instead.
*/
@Deprecated
DelayedDeliveryPolicies getDelayedDeliveryPolicy(String topic
, boolean applied) throws PulsarAdminException;
/**
* Get the delayed delivery policy applied for a specified topic asynchronously.
* @param topic
* @param applied
* @return
* @deprecated Use {@link TopicPolicies#getDelayedDeliveryPolicyAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getDelayedDeliveryPolicyAsync(String topic
, boolean applied);
/**
* Get the delayed delivery policy for a specified topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getDelayedDeliveryPolicy(String)} instead.
*/
@Deprecated
DelayedDeliveryPolicies getDelayedDeliveryPolicy(String topic) throws PulsarAdminException;
/**
* Get the delayed delivery policy for a specified topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#getDelayedDeliveryPolicyAsync(String)} instead.
*/
@Deprecated
CompletableFuture getDelayedDeliveryPolicyAsync(String topic);
/**
* Set the delayed delivery policy for a specified topic.
* @param topic
* @param delayedDeliveryPolicies
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#setDelayedDeliveryPolicy(String, DelayedDeliveryPolicies)} instead.
*/
@Deprecated
void setDelayedDeliveryPolicy(String topic
, DelayedDeliveryPolicies delayedDeliveryPolicies) throws PulsarAdminException;
/**
* Set the delayed delivery policy for a specified topic asynchronously.
* @param topic
* @param delayedDeliveryPolicies
* @return
* @deprecated Use {@link TopicPolicies#setDelayedDeliveryPolicyAsync(String, DelayedDeliveryPolicies)} instead.
*/
@Deprecated
CompletableFuture setDelayedDeliveryPolicyAsync(String topic
, DelayedDeliveryPolicies delayedDeliveryPolicies);
/**
* Remove the delayed delivery policy for a specified topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#removeDelayedDeliveryPolicyAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeDelayedDeliveryPolicyAsync(String topic);
/**
* Remove the delayed delivery policy for a specified topic.
* @param topic
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#removeDelayedDeliveryPolicy(String)} instead.
*/
@Deprecated
void removeDelayedDeliveryPolicy(String topic) throws PulsarAdminException;
/**
* Set message TTL for a topic.
*
* @param topic
* Topic name
* @param messageTTLInSecond
* Message TTL in second.
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#setMessageTTL(String, int)} instead.
*/
@Deprecated
void setMessageTTL(String topic, int messageTTLInSecond) throws PulsarAdminException;
/**
* Get message TTL for a topic.
*
* @param topic
* @return Message TTL in second.
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getMessageTTL(String)} instead.
*/
@Deprecated
Integer getMessageTTL(String topic) throws PulsarAdminException;
/**
* Get message TTL applied for a topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getMessageTTL(String, boolean)} instead.
*/
@Deprecated
Integer getMessageTTL(String topic, boolean applied) throws PulsarAdminException;
/**
* Remove message TTL for a topic.
*
* @param topic
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#removeMessageTTL(String)} instead.
*/
@Deprecated
void removeMessageTTL(String topic) throws PulsarAdminException;
/**
* Set the retention configuration on a topic.
*
* Set the retention configuration on a topic. This operation requires Pulsar super-user access.
*
* Request parameter example:
*
*
*
*
* {
* "retentionTimeInMinutes" : 60, // how long to retain messages
* "retentionSizeInMB" : 1024, // retention backlog limit
* }
*
*
*
* @param topic
* Topic name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws ConflictException
* Concurrent modification
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#setRetention(String, RetentionPolicies)} instead.
*/
@Deprecated
void setRetention(String topic, RetentionPolicies retention) throws PulsarAdminException;
/**
* Set the retention configuration for all the topics on a topic asynchronously.
*
* Set the retention configuration on a topic. This operation requires Pulsar super-user access.
*
* Request parameter example:
*
*
*
*
* {
* "retentionTimeInMinutes" : 60, // how long to retain messages
* "retentionSizeInMB" : 1024, // retention backlog limit
* }
*
*
*
* @param topic
* Topic name
* @deprecated Use {@link TopicPolicies#setRetentionAsync(String, RetentionPolicies)} instead.
*/
@Deprecated
CompletableFuture setRetentionAsync(String topic, RetentionPolicies retention);
/**
* Get the retention configuration for a topic.
*
* Get the retention configuration for a topic.
*
* Response example:
*
*
*
*
* {
* "retentionTimeInMinutes" : 60, // how long to retain messages
* "retentionSizeInMB" : 1024, // retention backlog limit
* }
*
*
*
* @param topic
* Topic name
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws ConflictException
* Concurrent modification
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getRetention(String)} instead.
*/
@Deprecated
RetentionPolicies getRetention(String topic) throws PulsarAdminException;
/**
* Get the retention configuration for a topic asynchronously.
*
* Get the retention configuration for a topic.
*
*
* @param topic
* Topic name
* @deprecated Use {@link TopicPolicies#getRetentionAsync(String)} instead.
*/
@Deprecated
CompletableFuture getRetentionAsync(String topic);
/**
* Get the applied retention configuration for a topic.
* @param topic
* @param applied
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getRetention(String, boolean)} instead.
*/
@Deprecated
RetentionPolicies getRetention(String topic, boolean applied) throws PulsarAdminException;
/**
* Get the applied retention configuration for a topic asynchronously.
* @param topic
* @param applied
* @return
* @deprecated Use {@link TopicPolicies#getRetentionAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getRetentionAsync(String topic, boolean applied);
/**
* Remove the retention configuration for all the topics on a topic.
*
* Remove the retention configuration on a topic. This operation requires Pulsar super-user access.
*
* Request parameter example:
*
*
* @param topic
* Topic name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws ConflictException
* Concurrent modification
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#removeRetention(String)} instead.
*/
@Deprecated
void removeRetention(String topic) throws PulsarAdminException;
/**
* Remove the retention configuration for all the topics on a topic asynchronously.
*
* Remove the retention configuration on a topic. This operation requires Pulsar super-user access.
*
* Request parameter example:
*
*
*
*
* {
* "retentionTimeInMinutes" : 60, // how long to retain messages
* "retentionSizeInMB" : 1024, // retention backlog limit
* }
*
*
*
* @param topic
* Topic name
* @deprecated Use {@link TopicPolicies#removeRetentionAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeRetentionAsync(String topic);
/**
* get max unacked messages on consumer of a topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getMaxUnackedMessagesOnConsumer(String)} instead.
*/
@Deprecated
Integer getMaxUnackedMessagesOnConsumer(String topic) throws PulsarAdminException;
/**
* get max unacked messages on consumer of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#getMaxUnackedMessagesOnConsumerAsync(String)} instead.
*/
@Deprecated
CompletableFuture getMaxUnackedMessagesOnConsumerAsync(String topic);
/**
* get applied max unacked messages on consumer of a topic.
* @param topic
* @param applied
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getMaxUnackedMessagesOnConsumer(String, boolean)} instead.
*/
@Deprecated
Integer getMaxUnackedMessagesOnConsumer(String topic, boolean applied) throws PulsarAdminException;
/**
* get applied max unacked messages on consumer of a topic asynchronously.
* @param topic
* @param applied
* @return
* @deprecated Use {@link TopicPolicies#getMaxUnackedMessagesOnConsumerAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getMaxUnackedMessagesOnConsumerAsync(String topic, boolean applied);
/**
* set max unacked messages on consumer of a topic.
* @param topic
* @param maxNum
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#setMaxUnackedMessagesOnConsumer(String, int)} instead.
*/
@Deprecated
void setMaxUnackedMessagesOnConsumer(String topic, int maxNum) throws PulsarAdminException;
/**
* set max unacked messages on consumer of a topic asynchronously.
* @param topic
* @param maxNum
* @return
* @deprecated Use {@link TopicPolicies#setMaxUnackedMessagesOnConsumerAsync(String, int)} instead.
*/
@Deprecated
CompletableFuture setMaxUnackedMessagesOnConsumerAsync(String topic, int maxNum);
/**
* remove max unacked messages on consumer of a topic.
* @param topic
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#removeMaxUnackedMessagesOnConsumer(String)} instead.
*/
@Deprecated
void removeMaxUnackedMessagesOnConsumer(String topic) throws PulsarAdminException;
/**
* remove max unacked messages on consumer of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#removeMaxUnackedMessagesOnConsumerAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeMaxUnackedMessagesOnConsumerAsync(String topic);
/**
* Get inactive topic policies applied for a topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getInactiveTopicPolicies(String, boolean)} instead.
*/
@Deprecated
InactiveTopicPolicies getInactiveTopicPolicies(String topic, boolean applied) throws PulsarAdminException;
/**
* Get inactive topic policies applied for a topic asynchronously.
* @param topic
* @param applied
* @return
* @deprecated Use {@link TopicPolicies#getInactiveTopicPoliciesAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getInactiveTopicPoliciesAsync(String topic, boolean applied);
/**
* get inactive topic policies of a topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getInactiveTopicPolicies(String)} instead.
*/
@Deprecated
InactiveTopicPolicies getInactiveTopicPolicies(String topic) throws PulsarAdminException;
/**
* get inactive topic policies of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#getInactiveTopicPoliciesAsync(String)} instead.
*/
@Deprecated
CompletableFuture getInactiveTopicPoliciesAsync(String topic);
/**
* set inactive topic policies of a topic.
* @param topic
* @param inactiveTopicPolicies
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#setInactiveTopicPolicies(String, InactiveTopicPolicies)} instead.
*/
@Deprecated
void setInactiveTopicPolicies(String topic
, InactiveTopicPolicies inactiveTopicPolicies) throws PulsarAdminException;
/**
* set inactive topic policies of a topic asynchronously.
* @param topic
* @param inactiveTopicPolicies
* @return
* @deprecated Use {@link TopicPolicies#setInactiveTopicPoliciesAsync(String, InactiveTopicPolicies)} instead.
*/
@Deprecated
CompletableFuture setInactiveTopicPoliciesAsync(String topic, InactiveTopicPolicies inactiveTopicPolicies);
/**
* remove inactive topic policies of a topic.
* @param topic
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#removeInactiveTopicPolicies(String)} instead.
*/
@Deprecated
void removeInactiveTopicPolicies(String topic) throws PulsarAdminException;
/**
* remove inactive topic policies of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#removeInactiveTopicPoliciesAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeInactiveTopicPoliciesAsync(String topic);
/**
* get offload policies of a topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getOffloadPolicies(String)} instead.
*/
@Deprecated
OffloadPolicies getOffloadPolicies(String topic) throws PulsarAdminException;
/**
* get offload policies of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#getOffloadPoliciesAsync(String)} instead.
*/
@Deprecated
CompletableFuture getOffloadPoliciesAsync(String topic);
/**
* get applied offload policies of a topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getOffloadPolicies(String, boolean)} instead.
*/
@Deprecated
OffloadPolicies getOffloadPolicies(String topic, boolean applied) throws PulsarAdminException;
/**
* get applied offload policies of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#getOffloadPoliciesAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getOffloadPoliciesAsync(String topic, boolean applied);
/**
* set offload policies of a topic.
* @param topic
* @param offloadPolicies
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#setOffloadPolicies(String, OffloadPolicies)} instead.
*/
@Deprecated
void setOffloadPolicies(String topic, OffloadPolicies offloadPolicies) throws PulsarAdminException;
/**
* set offload policies of a topic asynchronously.
* @param topic
* @param offloadPolicies
* @return
* @deprecated Use {@link TopicPolicies#setOffloadPoliciesAsync(String, OffloadPolicies)} instead.
*/
@Deprecated
CompletableFuture setOffloadPoliciesAsync(String topic, OffloadPolicies offloadPolicies);
/**
* remove offload policies of a topic.
* @param topic
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#removeOffloadPolicies(String)} instead.
*/
@Deprecated
void removeOffloadPolicies(String topic) throws PulsarAdminException;
/**
* remove offload policies of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#removeOffloadPoliciesAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeOffloadPoliciesAsync(String topic);
/**
* get max unacked messages on subscription of a topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getMaxUnackedMessagesOnSubscription(String)} instead.
*/
@Deprecated
Integer getMaxUnackedMessagesOnSubscription(String topic) throws PulsarAdminException;
/**
* get max unacked messages on subscription of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#getMaxUnackedMessagesOnSubscriptionAsync(String)} instead.
*/
@Deprecated
CompletableFuture getMaxUnackedMessagesOnSubscriptionAsync(String topic);
/**
* get max unacked messages on subscription of a topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getMaxUnackedMessagesOnSubscriptionAsync(String, boolean)} instead.
*/
@Deprecated
Integer getMaxUnackedMessagesOnSubscription(String topic, boolean applied) throws PulsarAdminException;
/**
* get max unacked messages on subscription of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#getMaxUnackedMessagesOnSubscriptionAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getMaxUnackedMessagesOnSubscriptionAsync(String topic, boolean applied);
/**
* set max unacked messages on subscription of a topic.
* @param topic
* @param maxNum
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#setMaxUnackedMessagesOnSubscription(String, int)} instead.
*/
@Deprecated
void setMaxUnackedMessagesOnSubscription(String topic, int maxNum) throws PulsarAdminException;
/**
* set max unacked messages on subscription of a topic asynchronously.
* @param topic
* @param maxNum
* @return
* @deprecated Use {@link TopicPolicies#setMaxUnackedMessagesOnSubscriptionAsync(String, int)} instead.
*/
@Deprecated
CompletableFuture setMaxUnackedMessagesOnSubscriptionAsync(String topic, int maxNum);
/**
* remove max unacked messages on subscription of a topic.
* @param topic
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#removeMaxUnackedMessagesOnSubscription(String)} instead.
*/
@Deprecated
void removeMaxUnackedMessagesOnSubscription(String topic) throws PulsarAdminException;
/**
* remove max unacked messages on subscription of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#removeMaxUnackedMessagesOnSubscriptionAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeMaxUnackedMessagesOnSubscriptionAsync(String topic);
/**
* Set the configuration of persistence policies for specified topic.
*
* @param topic Topic name
* @param persistencePolicies Configuration of bookkeeper persistence policies
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#setPersistence(String, PersistencePolicies)} (String)} instead.
*/
@Deprecated
void setPersistence(String topic, PersistencePolicies persistencePolicies) throws PulsarAdminException;
/**
* Set the configuration of persistence policies for specified topic asynchronously.
*
* @param topic Topic name
* @param persistencePolicies Configuration of bookkeeper persistence policies
* @deprecated Use {@link TopicPolicies#setPersistenceAsync(String, PersistencePolicies)} (String)} instead.
*/
@Deprecated
CompletableFuture setPersistenceAsync(String topic, PersistencePolicies persistencePolicies);
/**
* Get the configuration of persistence policies for specified topic.
*
* @param topic Topic name
* @return Configuration of bookkeeper persistence policies
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getPersistence(String)} instead.
*/
@Deprecated
PersistencePolicies getPersistence(String topic) throws PulsarAdminException;
/**
* Get the configuration of persistence policies for specified topic asynchronously.
*
* @param topic Topic name
* @deprecated Use {@link TopicPolicies#getPersistenceAsync(String)} instead.
*/
@Deprecated
CompletableFuture getPersistenceAsync(String topic);
/**
* Get the applied configuration of persistence policies for specified topic.
*
* @param topic Topic name
* @return Configuration of bookkeeper persistence policies
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getPersistence(String, boolean)} instead.
*/
@Deprecated
PersistencePolicies getPersistence(String topic, boolean applied) throws PulsarAdminException;
/**
* Get the applied configuration of persistence policies for specified topic asynchronously.
*
* @param topic Topic name
* @deprecated Use {@link TopicPolicies#getPersistenceAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getPersistenceAsync(String topic, boolean applied);
/**
* Remove the configuration of persistence policies for specified topic.
*
* @param topic Topic name
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#removePersistence(String)} instead.
*/
@Deprecated
void removePersistence(String topic) throws PulsarAdminException;
/**
* Remove the configuration of persistence policies for specified topic asynchronously.
*
* @param topic Topic name
* @deprecated Use {@link TopicPolicies#removePersistenceAsync(String)} instead.
*/
@Deprecated
CompletableFuture removePersistenceAsync(String topic);
/**
* get deduplication enabled of a topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getDeduplicationStatus(String)} instead.
*/
@Deprecated
Boolean getDeduplicationEnabled(String topic) throws PulsarAdminException;
/**
* get deduplication enabled of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#getDeduplicationStatusAsync(String)} instead.
*/
@Deprecated
CompletableFuture getDeduplicationEnabledAsync(String topic);
/**
* get deduplication enabled of a topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getDeduplicationStatus(String)} instead.
*/
@Deprecated
Boolean getDeduplicationStatus(String topic) throws PulsarAdminException;
/**
* get deduplication enabled of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#getDeduplicationStatusAsync(String)} instead.
*/
@Deprecated
CompletableFuture getDeduplicationStatusAsync(String topic);
/**
* get applied deduplication enabled of a topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getDeduplicationStatus(String, boolean)} instead.
*/
@Deprecated
Boolean getDeduplicationStatus(String topic, boolean applied) throws PulsarAdminException;
/**
* get applied deduplication enabled of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#getDeduplicationStatusAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getDeduplicationStatusAsync(String topic, boolean applied);
/**
* set deduplication enabled of a topic.
* @param topic
* @param enabled
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#setDeduplicationStatus(String, boolean)} instead.
*/
@Deprecated
void enableDeduplication(String topic, boolean enabled) throws PulsarAdminException;
/**
* set deduplication enabled of a topic asynchronously.
* @param topic
* @param enabled
* @return
* @deprecated Use {@link TopicPolicies#setDeduplicationStatusAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture enableDeduplicationAsync(String topic, boolean enabled);
/**
* set deduplication enabled of a topic.
* @param topic
* @param enabled
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#setDeduplicationStatus(String, boolean)} instead.
*/
@Deprecated
void setDeduplicationStatus(String topic, boolean enabled) throws PulsarAdminException;
/**
* set deduplication enabled of a topic asynchronously.
* @param topic
* @param enabled
* @return
* @deprecated Use {@link TopicPolicies#setDeduplicationStatusAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture setDeduplicationStatusAsync(String topic, boolean enabled);
/**
* remove deduplication enabled of a topic.
* @param topic
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#removeDeduplicationStatus(String)} instead.
*/
@Deprecated
void disableDeduplication(String topic) throws PulsarAdminException;
/**
* remove deduplication enabled of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#removeDeduplicationStatusAsync(String)} instead.
*/
@Deprecated
CompletableFuture disableDeduplicationAsync(String topic);
/**
* remove deduplication enabled of a topic.
* @param topic
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#removeDeduplicationStatus(String)} instead.
*/
@Deprecated
void removeDeduplicationStatus(String topic) throws PulsarAdminException;
/**
* remove deduplication enabled of a topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#removeDeduplicationStatusAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeDeduplicationStatusAsync(String topic);
/**
* Set message-dispatch-rate (topic can dispatch this many messages per second).
*
* @param topic
* @param dispatchRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#setDispatchRate(String, DispatchRate)} instead.
*/
@Deprecated
void setDispatchRate(String topic, DispatchRate dispatchRate) throws PulsarAdminException;
/**
* Set message-dispatch-rate asynchronously.
*
* topic can dispatch this many messages per second
*
* @param topic
* @param dispatchRate
* number of messages per second
* @deprecated Use {@link TopicPolicies#setDispatchRateAsync(String, DispatchRate)} instead.
*/
@Deprecated
CompletableFuture setDispatchRateAsync(String topic, DispatchRate dispatchRate);
/**
* Get message-dispatch-rate (topic can dispatch this many messages per second).
*
* @param topic
* @returns messageRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getDispatchRate(String)} instead.
*/
@Deprecated
DispatchRate getDispatchRate(String topic) throws PulsarAdminException;
/**
* Get message-dispatch-rate asynchronously.
*
* Topic can dispatch this many messages per second.
*
* @param topic
* @returns messageRate
* number of messages per second
* @deprecated Use {@link TopicPolicies#getDispatchRateAsync(String)} instead.
*/
@Deprecated
CompletableFuture getDispatchRateAsync(String topic);
/**
* Get applied message-dispatch-rate (topic can dispatch this many messages per second).
*
* @param topic
* @returns messageRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getDispatchRate(String, boolean)} instead.
*/
@Deprecated
DispatchRate getDispatchRate(String topic, boolean applied) throws PulsarAdminException;
/**
* Get applied message-dispatch-rate asynchronously.
*
* Topic can dispatch this many messages per second.
*
* @param topic
* @returns messageRate
* number of messages per second
* @deprecated Use {@link TopicPolicies#getDispatchRateAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getDispatchRateAsync(String topic, boolean applied);
/**
* Remove message-dispatch-rate.
*
* Remove topic message dispatch rate
*
* @param topic
* @throws PulsarAdminException
* unexpected error
* @deprecated Use {@link TopicPolicies#removeDispatchRate(String)} instead.
*/
@Deprecated
void removeDispatchRate(String topic) throws PulsarAdminException;
/**
* Remove message-dispatch-rate asynchronously.
*
* Remove topic message dispatch rate
*
* @param topic
* @throws PulsarAdminException
* unexpected error
* @deprecated Use {@link TopicPolicies#removeDispatchRateAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeDispatchRateAsync(String topic) throws PulsarAdminException;
/**
* Set subscription-message-dispatch-rate for the topic.
*
* Subscriptions under this namespace can dispatch this many messages per second
*
* @param topic
* @param dispatchRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#setSubscriptionDispatchRate(String, DispatchRate)} instead.
*/
@Deprecated
void setSubscriptionDispatchRate(String topic, DispatchRate dispatchRate) throws PulsarAdminException;
/**
* Set subscription-message-dispatch-rate for the topic asynchronously.
*
* Subscriptions under this namespace can dispatch this many messages per second.
*
* @param topic
* @param dispatchRate
* number of messages per second
* @deprecated Use {@link TopicPolicies#setSubscriptionDispatchRateAsync(String, DispatchRate)} instead.
*/
@Deprecated
CompletableFuture setSubscriptionDispatchRateAsync(String topic, DispatchRate dispatchRate);
/**
* Get applied subscription-message-dispatch-rate.
*
* Subscriptions under this namespace can dispatch this many messages per second.
*
* @param namespace
* @returns DispatchRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getSubscriptionDispatchRate(String, boolean)} instead.
*/
@Deprecated
DispatchRate getSubscriptionDispatchRate(String namespace, boolean applied) throws PulsarAdminException;
/**
* Get applied subscription-message-dispatch-rate asynchronously.
*
* Subscriptions under this namespace can dispatch this many messages per second.
*
* @param namespace
* @returns DispatchRate
* number of messages per second
* @deprecated Use {@link TopicPolicies#getSubscriptionDispatchRateAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getSubscriptionDispatchRateAsync(String namespace, boolean applied);
/**
* Get subscription-message-dispatch-rate for the topic.
*
* Subscriptions under this namespace can dispatch this many messages per second.
*
* @param topic
* @returns DispatchRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getSubscriptionDispatchRate(String)} instead.
*/
@Deprecated
DispatchRate getSubscriptionDispatchRate(String topic) throws PulsarAdminException;
/**
* Get subscription-message-dispatch-rate asynchronously.
*
* Subscriptions under this namespace can dispatch this many messages per second.
*
* @param topic
* @returns DispatchRate
* number of messages per second
* @deprecated Use {@link TopicPolicies#getSubscriptionDispatchRateAsync(String)} instead.
*/
@Deprecated
CompletableFuture getSubscriptionDispatchRateAsync(String topic);
/**
* Remove subscription-message-dispatch-rate for a topic.
* @param topic
* Topic name
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#removeSubscriptionDispatchRate(String)} instead.
*/
@Deprecated
void removeSubscriptionDispatchRate(String topic) throws PulsarAdminException;
/**
* Remove subscription-message-dispatch-rate for a topic asynchronously.
* @param topic
* Topic name
* @deprecated Use {@link TopicPolicies#removeSubscriptionDispatchRateAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeSubscriptionDispatchRateAsync(String topic);
/**
* Set replicatorDispatchRate for the topic.
*
* Replicator dispatch rate under this topic can dispatch this many messages per second
*
* @param topic
* @param dispatchRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#setReplicatorDispatchRate(String, DispatchRate)} instead.
*/
@Deprecated
void setReplicatorDispatchRate(String topic, DispatchRate dispatchRate) throws PulsarAdminException;
/**
* Set replicatorDispatchRate for the topic asynchronously.
*
* Replicator dispatch rate under this topic can dispatch this many messages per second.
*
* @param topic
* @param dispatchRate
* number of messages per second
* @deprecated Use {@link TopicPolicies#setReplicatorDispatchRateAsync(String, DispatchRate)} instead.
*/
@Deprecated
CompletableFuture setReplicatorDispatchRateAsync(String topic, DispatchRate dispatchRate);
/**
* Get replicatorDispatchRate for the topic.
*
* Replicator dispatch rate under this topic can dispatch this many messages per second.
*
* @param topic
* @returns DispatchRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getReplicatorDispatchRate(String)} instead.
*/
@Deprecated
DispatchRate getReplicatorDispatchRate(String topic) throws PulsarAdminException;
/**
* Get replicatorDispatchRate asynchronously.
*
* Replicator dispatch rate under this topic can dispatch this many messages per second.
*
* @param topic
* @returns DispatchRate
* number of messages per second
* @deprecated Use {@link TopicPolicies#getReplicatorDispatchRateAsync(String)} instead.
*/
@Deprecated
CompletableFuture getReplicatorDispatchRateAsync(String topic);
/**
* Get applied replicatorDispatchRate for the topic.
* @param topic
* @param applied
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getReplicatorDispatchRate(String, boolean)} instead.
*/
@Deprecated
DispatchRate getReplicatorDispatchRate(String topic, boolean applied) throws PulsarAdminException;
/**
* Get applied replicatorDispatchRate asynchronously.
* @param topic
* @param applied
* @return
* @deprecated Use {@link TopicPolicies#getReplicatorDispatchRateAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getReplicatorDispatchRateAsync(String topic, boolean applied);
/**
* Remove replicatorDispatchRate for a topic.
* @param topic
* Topic name
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#removeReplicatorDispatchRate(String)} instead.
*/
@Deprecated
void removeReplicatorDispatchRate(String topic) throws PulsarAdminException;
/**
* Remove replicatorDispatchRate for a topic asynchronously.
* @param topic
* Topic name
* @deprecated Use {@link TopicPolicies#removeReplicatorDispatchRateAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeReplicatorDispatchRateAsync(String topic);
/**
* Get the compactionThreshold for a topic. The maximum number of bytes
* can have before compaction is triggered. 0 disables.
*
* Response example:
*
*
* 10000000
*
*
* @param topic
* Topic name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getCompactionThreshold(String)} instead.
*/
@Deprecated
Long getCompactionThreshold(String topic) throws PulsarAdminException;
/**
* Get the compactionThreshold for a topic asynchronously. The maximum number of bytes
* can have before compaction is triggered. 0 disables.
*
* Response example:
*
*
* 10000000
*
*
* @param topic
* Topic name
* @deprecated Use {@link TopicPolicies#getCompactionThresholdAsync(String)} instead.
*/
@Deprecated
CompletableFuture getCompactionThresholdAsync(String topic);
/**
* Get the compactionThreshold for a topic. The maximum number of bytes
* can have before compaction is triggered. 0 disables.
* @param topic Topic name
* @throws NotAuthorizedException Don't have admin permission
* @throws NotFoundException Namespace does not exist
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getCompactionThreshold(String, boolean)} instead.
*/
@Deprecated
Long getCompactionThreshold(String topic, boolean applied) throws PulsarAdminException;
/**
* Get the compactionThreshold for a topic asynchronously. The maximum number of bytes
* can have before compaction is triggered. 0 disables.
* @param topic Topic name
* @deprecated Use {@link TopicPolicies#getCompactionThreshold(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getCompactionThresholdAsync(String topic, boolean applied);
/**
* Set the compactionThreshold for a topic. The maximum number of bytes
* can have before compaction is triggered. 0 disables.
*
* Request example:
*
*
* 10000000
*
*
* @param topic
* Topic 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
* @deprecated Use {@link TopicPolicies#setCompactionThreshold(String, long)} instead.
*/
@Deprecated
void setCompactionThreshold(String topic, long compactionThreshold) throws PulsarAdminException;
/**
* Set the compactionThreshold for a topic asynchronously. The maximum number of bytes
* can have before compaction is triggered. 0 disables.
*
* Request example:
*
*
* 10000000
*
*
* @param topic
* Topic name
* @param compactionThreshold
* maximum number of backlog bytes before compaction is triggered
* @deprecated Use {@link TopicPolicies#setCompactionThresholdAsync(String, long)} instead.
*/
@Deprecated
CompletableFuture setCompactionThresholdAsync(String topic, long compactionThreshold);
/**
* Remove the compactionThreshold for a topic.
* @param topic
* Topic name
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#removeCompactionThreshold(String)} instead.
*/
@Deprecated
void removeCompactionThreshold(String topic) throws PulsarAdminException;
/**
* Remove the compactionThreshold for a topic asynchronously.
* @param topic
* Topic name
* @deprecated Use {@link TopicPolicies#removeCompactionThresholdAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeCompactionThresholdAsync(String topic);
/**
* Set message-publish-rate (topics can publish this many messages per second).
*
* @param topic
* @param publishMsgRate
* number of messages per second
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#setPublishRate(String, PublishRate)} instead.
*/
@Deprecated
void setPublishRate(String topic, PublishRate publishMsgRate) throws PulsarAdminException;
/**
* Set message-publish-rate (topics can publish this many messages per second) asynchronously.
*
* @param topic
* @param publishMsgRate
* number of messages per second
* @deprecated Use {@link TopicPolicies#setPublishRateAsync(String, PublishRate)} instead.
*/
@Deprecated
CompletableFuture setPublishRateAsync(String topic, PublishRate publishMsgRate);
/**
* Get message-publish-rate (topics can publish this many messages per second).
*
* @param topic
* @return number of messages per second
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getPublishRate(String)} instead.
*/
@Deprecated
PublishRate getPublishRate(String topic) throws PulsarAdminException;
/**
* Get message-publish-rate (topics can publish this many messages per second) asynchronously.
*
* @param topic
* @return number of messages per second
* @deprecated Use {@link TopicPolicies#getPublishRateAsync(String)} instead.
*/
@Deprecated
CompletableFuture getPublishRateAsync(String topic);
/**
* Remove message-publish-rate.
*
* Remove topic message publish rate
*
* @param topic
* @throws PulsarAdminException
* unexpected error
* @deprecated Use {@link TopicPolicies#removePublishRate(String)} instead.
*/
@Deprecated
void removePublishRate(String topic) throws PulsarAdminException;
/**
* Remove message-publish-rate asynchronously.
*
* Remove topic message publish rate
*
* @param topic
* @throws PulsarAdminException
* unexpected error
* @deprecated Use {@link TopicPolicies#removePublishRateAsync(String)} instead.
*/
@Deprecated
CompletableFuture removePublishRateAsync(String topic) throws PulsarAdminException;
/**
* Get the maxConsumersPerSubscription for a topic.
*
* Response example:
*
*
* 0
*
*
* @param topic
* Topic name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Namespace does not exist
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getMaxConsumersPerSubscription(String)} instead.
*/
@Deprecated
Integer getMaxConsumersPerSubscription(String topic) throws PulsarAdminException;
/**
* Get the maxConsumersPerSubscription for a topic asynchronously.
*
* Response example:
*
*
* 0
*
*
* @param topic
* Topic name
* @deprecated Use {@link TopicPolicies#getMaxConsumersPerSubscriptionAsync(String)} instead.
*/
@Deprecated
CompletableFuture getMaxConsumersPerSubscriptionAsync(String topic);
/**
* Set maxConsumersPerSubscription for a topic.
*
* Request example:
*
*
* 10
*
*
* @param topic
* Topic 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
* @deprecated Use {@link TopicPolicies#setMaxConsumersPerSubscription(String, int)} instead.
*/
@Deprecated
void setMaxConsumersPerSubscription(String topic, int maxConsumersPerSubscription) throws PulsarAdminException;
/**
* Set maxConsumersPerSubscription for a topic asynchronously.
*
* Request example:
*
*
* 10
*
*
* @param topic
* Topic name
* @param maxConsumersPerSubscription
* maxConsumersPerSubscription value for a namespace
* @deprecated Use {@link TopicPolicies#setMaxConsumersPerSubscriptionAsync(String, int)} instead.
*/
@Deprecated
CompletableFuture setMaxConsumersPerSubscriptionAsync(String topic, int maxConsumersPerSubscription);
/**
* Remove the maxConsumersPerSubscription for a topic.
* @param topic
* Topic name
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#removeMaxConsumersPerSubscription(String)} instead.
*/
@Deprecated
void removeMaxConsumersPerSubscription(String topic) throws PulsarAdminException;
/**
* Remove the maxConsumersPerSubscription for a topic asynchronously.
* @param topic
* Topic name
* @deprecated Use {@link TopicPolicies#removeMaxConsumersPerSubscriptionAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeMaxConsumersPerSubscriptionAsync(String topic);
/**
* Get the max number of producer for specified topic.
*
* @param topic Topic name
* @return Configuration of bookkeeper persistence policies
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getMaxProducers(String)} instead.
*/
@Deprecated
Integer getMaxProducers(String topic) throws PulsarAdminException;
/**
* Get the max number of producer for specified topic asynchronously.
*
* @param topic Topic name
* @return Configuration of bookkeeper persistence policies
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getMaxProducersAsync(String)} instead.
*/
@Deprecated
CompletableFuture getMaxProducersAsync(String topic);
/**
* Get the max number of producer applied for specified topic.
* @param topic
* @param applied
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getMaxProducers(String, boolean)} instead.
*/
@Deprecated
Integer getMaxProducers(String topic, boolean applied) throws PulsarAdminException;
/**
* Get the max number of producer applied for specified topic asynchronously.
* @param topic
* @param applied
* @return
* @deprecated Use {@link TopicPolicies#getMaxProducersAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getMaxProducersAsync(String topic, boolean applied);
/**
* Set the max number of producer for specified topic.
*
* @param topic Topic name
* @param maxProducers Max number of producer
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#setMaxProducers(String, int)} instead.
*/
@Deprecated
void setMaxProducers(String topic, int maxProducers) throws PulsarAdminException;
/**
* Set the max number of producer for specified topic asynchronously.
*
* @param topic Topic name
* @param maxProducers Max number of producer
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#setMaxProducersAsync(String, int)} instead.
*/
@Deprecated
CompletableFuture setMaxProducersAsync(String topic, int maxProducers);
/**
* Remove the max number of producer for specified topic.
*
* @param topic Topic name
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#removeMaxProducers(String)} instead.
*/
@Deprecated
void removeMaxProducers(String topic) throws PulsarAdminException;
/**
* Remove the max number of producer for specified topic asynchronously.
*
* @param topic Topic name
* @deprecated Use {@link TopicPolicies#removeMaxProducersAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeMaxProducersAsync(String topic);
/**
* Get the max number of subscriptions for specified topic.
*
* @param topic Topic name
* @return Configuration of bookkeeper persistence policies
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getMaxSubscriptionsPerTopic(String)} instead.
*/
@Deprecated
Integer getMaxSubscriptionsPerTopic(String topic) throws PulsarAdminException;
/**
* Get the max number of subscriptions for specified topic asynchronously.
*
* @param topic Topic name
* @return Configuration of bookkeeper persistence policies
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getMaxSubscriptionsPerTopicAsync(String)} instead.
*/
@Deprecated
CompletableFuture getMaxSubscriptionsPerTopicAsync(String topic);
/**
* Set the max number of subscriptions for specified topic.
*
* @param topic Topic name
* @param maxSubscriptionsPerTopic Max number of subscriptions
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#setMaxSubscriptionsPerTopic(String, int)} instead.
*/
@Deprecated
void setMaxSubscriptionsPerTopic(String topic, int maxSubscriptionsPerTopic) throws PulsarAdminException;
/**
* Set the max number of subscriptions for specified topic asynchronously.
*
* @param topic Topic name
* @param maxSubscriptionsPerTopic Max number of subscriptions
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#setMaxSubscriptionsPerTopicAsync(String, int)} instead.
*/
@Deprecated
CompletableFuture setMaxSubscriptionsPerTopicAsync(String topic, int maxSubscriptionsPerTopic);
/**
* Remove the max number of subscriptions for specified topic.
*
* @param topic Topic name
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#removeMaxSubscriptionsPerTopic(String)} instead.
*/
@Deprecated
void removeMaxSubscriptionsPerTopic(String topic) throws PulsarAdminException;
/**
* Remove the max number of subscriptions for specified topic asynchronously.
*
* @param topic Topic name
* @deprecated Use {@link TopicPolicies#removeMaxSubscriptionsPerTopicAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeMaxSubscriptionsPerTopicAsync(String topic);
/**
* Get the max message size for specified topic.
*
* @param topic Topic name
* @return Configuration of bookkeeper persistence policies
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getMaxMessageSize(String)} instead.
*/
@Deprecated
Integer getMaxMessageSize(String topic) throws PulsarAdminException;
/**
* Get the max message size for specified topic asynchronously.
*
* @param topic Topic name
* @return Configuration of bookkeeper persistence policies
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getMaxMessageSizeAsync(String)} instead.
*/
@Deprecated
CompletableFuture getMaxMessageSizeAsync(String topic);
/**
* Set the max message size for specified topic.
*
* @param topic Topic name
* @param maxMessageSize Max message size of producer
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#setMaxMessageSize(String, int)} instead.
*/
@Deprecated
void setMaxMessageSize(String topic, int maxMessageSize) throws PulsarAdminException;
/**
* Set the max message size for specified topic asynchronously.0 disables.
*
* @param topic Topic name
* @param maxMessageSize Max message size of topic
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#setMaxMessageSizeAsync(String, int)} instead.
*/
@Deprecated
CompletableFuture setMaxMessageSizeAsync(String topic, int maxMessageSize);
/**
* Remove the max message size for specified topic.
*
* @param topic Topic name
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#removeMaxMessageSize(String)} instead.
*/
@Deprecated
void removeMaxMessageSize(String topic) throws PulsarAdminException;
/**
* Remove the max message size for specified topic asynchronously.
*
* @param topic Topic name
* @deprecated Use {@link TopicPolicies#removeMaxMessageSizeAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeMaxMessageSizeAsync(String topic);
/**
* Get the max number of consumer for specified topic.
*
* @param topic Topic name
* @return Configuration of bookkeeper persistence policies
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getMaxConsumers(String)} instead.
*/
@Deprecated
Integer getMaxConsumers(String topic) throws PulsarAdminException;
/**
* Get the max number of consumer for specified topic asynchronously.
*
* @param topic Topic name
* @return Configuration of bookkeeper persistence policies
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#getMaxConsumersAsync(String)} instead.
*/
@Deprecated
CompletableFuture getMaxConsumersAsync(String topic);
/**
* Get the max number of consumer applied for specified topic.
* @param topic
* @param applied
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getMaxConsumers(String, boolean)} instead.
*/
@Deprecated
Integer getMaxConsumers(String topic, boolean applied) throws PulsarAdminException;
/**
* Get the max number of consumer applied for specified topic asynchronously.
* @param topic
* @param applied
* @return
* @deprecated Use {@link TopicPolicies#getMaxConsumersAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getMaxConsumersAsync(String topic, boolean applied);
/**
* Set the max number of consumer for specified topic.
*
* @param topic Topic name
* @param maxConsumers Max number of consumer
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#setMaxConsumers(String, int)} instead.
*/
@Deprecated
void setMaxConsumers(String topic, int maxConsumers) throws PulsarAdminException;
/**
* Set the max number of consumer for specified topic asynchronously.
*
* @param topic Topic name
* @param maxConsumers Max number of consumer
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#setMaxConsumers(String, int)} instead.
*/
@Deprecated
CompletableFuture setMaxConsumersAsync(String topic, int maxConsumers);
/**
* Remove the max number of consumer for specified topic.
*
* @param topic Topic name
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#removeMaxConsumers(String)} instead.
*/
@Deprecated
void removeMaxConsumers(String topic) throws PulsarAdminException;
/**
* Remove the max number of consumer for specified topic asynchronously.
*
* @param topic Topic name
* @deprecated Use {@link TopicPolicies#removeMaxConsumersAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeMaxConsumersAsync(String topic);
/**
* Get the deduplication snapshot interval for specified topic.
* @param topic
* @return
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#getDeduplicationSnapshotInterval(String)} instead.
*/
@Deprecated
Integer getDeduplicationSnapshotInterval(String topic) throws PulsarAdminException;
/**
* Get the deduplication snapshot interval for specified topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#getDeduplicationSnapshotIntervalAsync(String)} instead.
*/
@Deprecated
CompletableFuture getDeduplicationSnapshotIntervalAsync(String topic);
/**
* Set the deduplication snapshot interval for specified topic.
* @param topic
* @param interval
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#setDeduplicationSnapshotInterval(String, int)} instead.
*/
@Deprecated
void setDeduplicationSnapshotInterval(String topic, int interval) throws PulsarAdminException;
/**
* Set the deduplication snapshot interval for specified topic asynchronously.
* @param topic
* @param interval
* @return
* @deprecated Use {@link TopicPolicies#setDeduplicationSnapshotIntervalAsync(String, int)} instead.
*/
@Deprecated
CompletableFuture setDeduplicationSnapshotIntervalAsync(String topic, int interval);
/**
* Remove the deduplication snapshot interval for specified topic.
* @param topic
* @throws PulsarAdminException
* @deprecated Use {@link TopicPolicies#removeDeduplicationSnapshotInterval(String)} instead.
*/
@Deprecated
void removeDeduplicationSnapshotInterval(String topic) throws PulsarAdminException;
/**
* Remove the deduplication snapshot interval for specified topic asynchronously.
* @param topic
* @return
* @deprecated Use {@link TopicPolicies#removeDeduplicationSnapshotIntervalAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeDeduplicationSnapshotIntervalAsync(String topic);
/**
* Set is enable sub types.
*
* @param topic
* @param subscriptionTypesEnabled
* is enable subTypes
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#setSubscriptionTypesEnabled(String, Set)} instead.
*/
@Deprecated
void setSubscriptionTypesEnabled(String topic,
Set subscriptionTypesEnabled) throws PulsarAdminException;
/**
* Set is enable sub types asynchronously.
*
* @param topic
* @param subscriptionTypesEnabled
* is enable subTypes
* @deprecated Use {@link TopicPolicies#setSubscriptionTypesEnabledAsync(String, Set)} instead.
*/
@Deprecated
CompletableFuture setSubscriptionTypesEnabledAsync(String topic,
Set subscriptionTypesEnabled);
/**
* Get is enable sub types.
*
* @param topic
* is topic for get is enable sub types
* @return set of enable sub types {@link Set}
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getSubscriptionTypesEnabled(String)} instead.
*/
@Deprecated
Set getSubscriptionTypesEnabled(String topic) throws PulsarAdminException;
/**
* Get is enable sub types asynchronously.
*
* @param topic
* is topic for get is enable sub types
* @deprecated Use {@link TopicPolicies#getSubscriptionTypesEnabledAsync(String)} instead.
*/
@Deprecated
CompletableFuture> getSubscriptionTypesEnabledAsync(String topic);
/**
* Remove subscription types enabled for a topic.
*
* @param topic Topic name
* @throws PulsarAdminException Unexpected error
* @deprecated Use {@link TopicPolicies#removeSubscriptionTypesEnabled(String)} instead.
*/
@Deprecated
void removeSubscriptionTypesEnabled(String topic) throws PulsarAdminException;
/**
* Remove subscription types enabled for a topic asynchronously.
*
* @param topic Topic name
* @deprecated Use {@link TopicPolicies#removeSubscriptionTypesEnabledAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeSubscriptionTypesEnabledAsync(String topic);
/**
* Set topic-subscribe-rate (topic will limit by subscribeRate).
*
* @param topic
* @param subscribeRate
* consumer subscribe limit by this subscribeRate
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#setSubscribeRate(String, SubscribeRate)} instead.
*/
@Deprecated
void setSubscribeRate(String topic, SubscribeRate subscribeRate) throws PulsarAdminException;
/**
* Set topic-subscribe-rate (topics will limit by subscribeRate) asynchronously.
*
* @param topic
* @param subscribeRate
* consumer subscribe limit by this subscribeRate
* @deprecated Use {@link TopicPolicies#setSubscribeRateAsync(String, SubscribeRate)} instead.
*/
@Deprecated
CompletableFuture setSubscribeRateAsync(String topic, SubscribeRate subscribeRate);
/**
* Get topic-subscribe-rate (topics allow subscribe times per consumer in a period).
*
* @param topic
* @returns subscribeRate
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getSubscribeRate(String)} instead.
*/
@Deprecated
SubscribeRate getSubscribeRate(String topic) throws PulsarAdminException;
/**
* Get topic-subscribe-rate asynchronously.
*
* Topic allow subscribe times per consumer in a period.
*
* @param topic
* @returns subscribeRate
* @deprecated Use {@link TopicPolicies#getSubscribeRateAsync(String)} instead.
*/
@Deprecated
CompletableFuture getSubscribeRateAsync(String topic);
/**
* Get applied topic-subscribe-rate (topics allow subscribe times per consumer in a period).
*
* @param topic
* @returns subscribeRate
* @throws PulsarAdminException
* Unexpected error
* @deprecated Use {@link TopicPolicies#getSubscribeRate(String, boolean)} instead.
*/
@Deprecated
SubscribeRate getSubscribeRate(String topic, boolean applied) throws PulsarAdminException;
/**
* Get applied topic-subscribe-rate asynchronously.
*
* @param topic
* @returns subscribeRate
* @deprecated Use {@link TopicPolicies#getSubscribeRateAsync(String, boolean)} instead.
*/
@Deprecated
CompletableFuture getSubscribeRateAsync(String topic, boolean applied);
/**
* Remove topic-subscribe-rate.
*
* Remove topic subscribe rate
*
* @param topic
* @throws PulsarAdminException
* unexpected error
* @deprecated Use {@link TopicPolicies#removeSubscribeRate(String)} instead.
*/
@Deprecated
void removeSubscribeRate(String topic) throws PulsarAdminException;
/**
* Remove topic-subscribe-rate asynchronously.
*
* Remove topic subscribe rate
*
* @param topic
* @throws PulsarAdminException
* unexpected error
* @deprecated Use {@link TopicPolicies#removeSubscribeRateAsync(String)} instead.
*/
@Deprecated
CompletableFuture removeSubscribeRateAsync(String topic) throws PulsarAdminException;
/**
* Examine a specific message on a topic by position relative to the earliest or the latest message.
*
* @param topic Topic name
* @param initialPosition Relative start position to examine message. It can be 'latest' or 'earliest'
* @param messagePosition The position of messages (default 1)
*/
Message examineMessage(String topic, String initialPosition, long messagePosition)
throws PulsarAdminException;
/**
* Examine a specific message on a topic by position relative to the earliest or the latest message.
*
* @param topic Topic name
* @param initialPosition Relative start position to examine message. It can be 'latest' or 'earliest'
* @param messagePosition The position of messages (default 1)
*/
CompletableFuture> examineMessageAsync(String topic, String initialPosition, long messagePosition)
throws PulsarAdminException;
/**
* Truncate a topic.
*
*
* @param topic
* topic name
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws PulsarAdminException
* Unexpected error
*/
void truncate(String topic) throws PulsarAdminException;
/**
* Truncate a topic asynchronously.
*
* The latest ledger cannot be deleted.
*
*
* @param topic
* topic name
*
* @return a future that can be used to track when the topic is truncated
*/
CompletableFuture truncateAsync(String topic);
/**
* Enable or disable a replicated subscription on a topic.
*
* @param topic
* @param subName
* @param enabled
* @throws PulsarAdminException
*/
void setReplicatedSubscriptionStatus(String topic, String subName, boolean enabled) throws PulsarAdminException;
/**
* Enable or disable a replicated subscription on a topic asynchronously.
*
* @param topic
* @param subName
* @param enabled
* @return
*/
CompletableFuture setReplicatedSubscriptionStatusAsync(String topic, String subName, boolean enabled);
/**
* Get the replication clusters for a topic.
*
* @param topic
* @param applied
* @return
* @throws PulsarAdminException
*/
Set getReplicationClusters(String topic, boolean applied) throws PulsarAdminException;
/**
* Get the replication clusters for a topic asynchronously.
*
* @param topic
* @param applied
* @return
* @throws PulsarAdminException
*/
CompletableFuture> getReplicationClustersAsync(String topic, boolean applied);
/**
* Set the replication clusters for the topic.
*
* @param topic
* @param clusterIds
* @return
* @throws PulsarAdminException
*/
void setReplicationClusters(String topic, List clusterIds) throws PulsarAdminException;
/**
* Set the replication clusters for the topic asynchronously.
*
* @param topic
* @param clusterIds
* @return
* @throws PulsarAdminException
*/
CompletableFuture setReplicationClustersAsync(String topic, List clusterIds);
/**
* Remove the replication clusters for the topic.
*
* @param topic
* @return
* @throws PulsarAdminException
*/
void removeReplicationClusters(String topic) throws PulsarAdminException;
/**
* Remove the replication clusters for the topic asynchronously.
*
* @param topic
* @return
* @throws PulsarAdminException
*/
CompletableFuture removeReplicationClustersAsync(String topic);
/**
* Get replicated subscription status on a topic.
*
* @param topic topic name
* @param subName subscription name
* @return a map of replicated subscription status on a topic
*
* @throws NotAuthorizedException
* Don't have admin permission
* @throws NotFoundException
* Topic does not exist
* @throws PulsarAdminException
* Unexpected error
*/
Map getReplicatedSubscriptionStatus(String topic, String subName) throws PulsarAdminException;
/**
* Get replicated subscription status on a topic asynchronously.
*
* @param topic topic name
* @return a map of replicated subscription status on a topic
*/
CompletableFuture> getReplicatedSubscriptionStatusAsync(String topic, String subName);
/**
* Get schema validation enforced for a topic.
*
* @param topic topic name
* @return whether the schema validation enforced is set or not
*/
boolean getSchemaValidationEnforced(String topic, boolean applied) throws PulsarAdminException;
/**
* Get schema validation enforced for a topic.
*
* @param topic topic name
*/
void setSchemaValidationEnforced(String topic, boolean enable) throws PulsarAdminException;
/**
* Get schema validation enforced for a topic asynchronously.
*
* @param topic topic name
* @return whether the schema validation enforced is set or not
*/
CompletableFuture getSchemaValidationEnforcedAsync(String topic, boolean applied);
/**
* Get schema validation enforced for a topic asynchronously.
*
* @param topic topic name
*/
CompletableFuture setSchemaValidationEnforcedAsync(String topic, boolean enable);
/**
* Set shadow topic list for a source topic.
*
* @param sourceTopic source topic name
* @param shadowTopics list of shadow topic name
*/
void setShadowTopics(String sourceTopic, List shadowTopics) throws PulsarAdminException;
/**
* Remove all shadow topics for a source topic.
*
* @param sourceTopic source topic name
*/
void removeShadowTopics(String sourceTopic) throws PulsarAdminException;
/**
* Get shadow topic list of the source topic.
*
* @param sourceTopic source topic name
* @return shadow topic list
*/
List getShadowTopics(String sourceTopic) throws PulsarAdminException;
/**
* Set shadow topic list for a source topic asynchronously.
*
* @param sourceTopic source topic name
*/
CompletableFuture setShadowTopicsAsync(String sourceTopic, List shadowTopics);
/**
* Remove all shadow topics for a source topic asynchronously.
*
* @param sourceTopic source topic name
*/
CompletableFuture removeShadowTopicsAsync(String sourceTopic);
/**
* Get shadow topic list of the source topic asynchronously.
*
* @param sourceTopic source topic name
*/
CompletableFuture> getShadowTopicsAsync(String sourceTopic);
/**
* Get the shadow source topic name of the given shadow topic.
* @param shadowTopic shadow topic name.
* @return The topic name of the source of the shadow topic.
*/
String getShadowSource(String shadowTopic) throws PulsarAdminException;
/**
* Get the shadow source topic name of the given shadow topic asynchronously.
* @param shadowTopic shadow topic name.
* @return The topic name of the source of the shadow topic.
*/
CompletableFuture getShadowSourceAsync(String shadowTopic);
/**
* Create a new shadow topic as the shadow of the source topic.
* The source topic must exist before call this method.
*
* For partitioned source topic, the partition number of shadow topic follows the source topic at creation. If
* the partition number of the source topic changes, the shadow topic needs to update its partition number
* manually.
* For non-partitioned source topic, the shadow topic will be created as non-partitioned topic.
*
*
* NOTE: This is still WIP until PIP-180 is finished.
*
* @param shadowTopic shadow topic name, and it must be a persistent topic name.
* @param sourceTopic source topic name, and it must be a persistent topic name.
* @param properties properties to be created with in the shadow topic.
* @throws PulsarAdminException
*/
void createShadowTopic(String shadowTopic, String sourceTopic, Map properties)
throws PulsarAdminException;
/**
* Create a new shadow topic, see #{@link #createShadowTopic(String, String, Map)} for details.
*/
CompletableFuture createShadowTopicAsync(String shadowTopic, String sourceTopic,
Map properties);
/**
* Create a new shadow topic, see #{@link #createShadowTopic(String, String, Map)} for details.
*/
default void createShadowTopic(String shadowTopic, String sourceTopic) throws PulsarAdminException {
createShadowTopic(shadowTopic, sourceTopic, null);
}
/**
* Create a new shadow topic, see #{@link #createShadowTopic(String, String, Map)} for details.
*/
default CompletableFuture createShadowTopicAsync(String shadowTopic, String sourceTopic) {
return createShadowTopicAsync(shadowTopic, sourceTopic, null);
}
}