All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.pulsar.client.admin.Topics Maven / Gradle / Ivy

There is a newer version: 1.12.0
Show newest version
/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package org.apache.pulsar.client.admin;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import 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.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;
/**
 * Admin interface for Topics management.
 */
public interface Topics {

    /**
     * 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; /** * 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); /** * 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 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 */ void createPartitionedTopic(String topic, int numPartitions) 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 */ CompletableFuture createPartitionedTopicAsync(String topic, int numPartitions); /** * Create a non-partitioned topic. *

* Create a non-partitioned topic. *

* * @param topic Topic name * @throws PulsarAdminException */ void createNonPartitionedTopic(String topic) throws PulsarAdminException; /** * Create a non-partitioned topic asynchronously. * * @param topic Topic name */ CompletableFuture createNonPartitionedTopicAsync(String topic); /** * 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 non-global 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 non-global 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 non-global 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 non-global 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); /** * Delete a partitioned topic. *

* 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 * * @throws PulsarAdminException */ void deletePartitionedTopic(String topic, boolean force, boolean deleteSchema) throws PulsarAdminException; /** * @see Topics#deletePartitionedTopic(String, boolean, boolean) */ default void deletePartitionedTopic(String topic, boolean force) throws PulsarAdminException { deletePartitionedTopic(topic, force, false); } /** * Delete a partitioned topic 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 * * @return a future that can be used to track when the partitioned topic is deleted */ 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, false); } /** * 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. *

* 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 * * @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, boolean force, boolean deleteSchema) throws PulsarAdminException; /** * @see Topics#delete(String, boolean, boolean) */ default void delete(String topic, boolean force) throws PulsarAdminException { delete(topic, force, false); } /** * Delete a topic 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 * * @return a future that can be used to track when the topic is deleted */ 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, false); } /** * 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); /** * 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 getPreciseBacklog * Set to true to get precise backlog, Otherwise get imprecise backlog. * @param subscriptionBacklogSize * Whether to get backlog size for each subscription. * @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, boolean getPreciseBacklog, boolean subscriptionBacklogSize) throws PulsarAdminException; default TopicStats getStats(String topic, boolean getPreciseBacklog) throws PulsarAdminException { return getStats(topic, getPreciseBacklog, false); } default TopicStats getStats(String topic) throws PulsarAdminException { return getStats(topic, 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. * @return a future that can be used to track when the topic statistics are returned * */ CompletableFuture getStatsAsync(String topic, boolean getPreciseBacklog, boolean subscriptionBacklogSize); default CompletableFuture getStatsAsync(String topic) { return getStatsAsync(topic, 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) throws PulsarAdminException; default PartitionedTopicStats getPartitionedStats(String topic, boolean perPartition) throws PulsarAdminException { return getPartitionedStats(topic, perPartition, 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. * @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); default CompletableFuture getPartitionedStatsAsync(String topic, boolean perPartition) { return getPartitionedStatsAsync(topic, perPartition, 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 */ List> peekMessages(String topic, String subName, int numMessages) 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 */ CompletableFuture>> peekMessagesAsync(String topic, String subName, int numMessages); /** * 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); /** * 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 */ void createSubscription(String topic, String subscriptionName, MessageId messageId) 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. */ CompletableFuture createSubscriptionAsync(String topic, String subscriptionName, MessageId messageId); /** * 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; /** * 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); /** * 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); /** * 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 */ Map getBacklogQuotaMap(String topic) throws PulsarAdminException; /** * Get applied backlog quota map for a topic. * @param topic * @param applied * @return * @throws PulsarAdminException */ Map getBacklogQuotaMap(String topic, boolean applied) throws PulsarAdminException; /** * 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 */ void setBacklogQuota(String topic, BacklogQuota backlogQuota, BacklogQuota.BacklogQuotaType backlogQuotaType) throws PulsarAdminException; 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 */ void removeBacklogQuota(String topic, BacklogQuota.BacklogQuotaType backlogQuotaType) throws PulsarAdminException; 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 */ DelayedDeliveryPolicies getDelayedDeliveryPolicy(String topic , boolean applied) throws PulsarAdminException; /** * Get the delayed delivery policy applied for a specified topic asynchronously. * @param topic * @param applied * @return */ CompletableFuture getDelayedDeliveryPolicyAsync(String topic , boolean applied); /** * Get the delayed delivery policy for a specified topic. * @param topic * @return * @throws PulsarAdminException */ DelayedDeliveryPolicies getDelayedDeliveryPolicy(String topic) throws PulsarAdminException; /** * Get the delayed delivery policy for a specified topic asynchronously. * @param topic * @return */ CompletableFuture getDelayedDeliveryPolicyAsync(String topic); /** * Set the delayed delivery policy for a specified topic. * @param topic * @param delayedDeliveryPolicies * @throws PulsarAdminException */ void setDelayedDeliveryPolicy(String topic , DelayedDeliveryPolicies delayedDeliveryPolicies) throws PulsarAdminException; /** * Set the delayed delivery policy for a specified topic asynchronously. * @param topic * @param delayedDeliveryPolicies * @return */ CompletableFuture setDelayedDeliveryPolicyAsync(String topic , DelayedDeliveryPolicies delayedDeliveryPolicies); /** * Remove the delayed delivery policy for a specified topic asynchronously. * @param topic * @return */ CompletableFuture removeDelayedDeliveryPolicyAsync(String topic); /** * Remove the delayed delivery policy for a specified topic. * @param topic * @throws PulsarAdminException */ 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 */ 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 */ Integer getMessageTTL(String topic) throws PulsarAdminException; /** * Get message TTL applied for a topic. * @param topic * @return * @throws PulsarAdminException */ 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 */ 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 */ 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 */ 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 */ 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 */ CompletableFuture getRetentionAsync(String topic); /** * Get the applied retention configuration for a topic. * @param topic * @param applied * @return * @throws PulsarAdminException */ RetentionPolicies getRetention(String topic, boolean applied) throws PulsarAdminException; /** * Get the applied retention configuration for a topic asynchronously. * @param topic * @param applied * @return */ 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 */ 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 */ CompletableFuture removeRetentionAsync(String topic); /** * get max unacked messages on consumer of a topic. * @param topic * @return * @throws PulsarAdminException */ Integer getMaxUnackedMessagesOnConsumer(String topic) throws PulsarAdminException; /** * get max unacked messages on consumer of a topic asynchronously. * @param topic * @return */ CompletableFuture getMaxUnackedMessagesOnConsumerAsync(String topic); /** * get applied max unacked messages on consumer of a topic. * @param topic * @param applied * @return * @throws PulsarAdminException */ Integer getMaxUnackedMessagesOnConsumer(String topic, boolean applied) throws PulsarAdminException; /** * get applied max unacked messages on consumer of a topic asynchronously. * @param topic * @param applied * @return */ CompletableFuture getMaxUnackedMessagesOnConsumerAsync(String topic, boolean applied); /** * set max unacked messages on consumer of a topic. * @param topic * @param maxNum * @throws PulsarAdminException */ void setMaxUnackedMessagesOnConsumer(String topic, int maxNum) throws PulsarAdminException; /** * set max unacked messages on consumer of a topic asynchronously. * @param topic * @param maxNum * @return */ CompletableFuture setMaxUnackedMessagesOnConsumerAsync(String topic, int maxNum); /** * remove max unacked messages on consumer of a topic. * @param topic * @throws PulsarAdminException */ void removeMaxUnackedMessagesOnConsumer(String topic) throws PulsarAdminException; /** * remove max unacked messages on consumer of a topic asynchronously. * @param topic * @return */ CompletableFuture removeMaxUnackedMessagesOnConsumerAsync(String topic); /** * Get inactive topic policies applied for a topic. * @param topic * @return * @throws PulsarAdminException */ InactiveTopicPolicies getInactiveTopicPolicies(String topic, boolean applied) throws PulsarAdminException; /** * Get inactive topic policies applied for a topic asynchronously. * @param topic * @param applied * @return */ CompletableFuture getInactiveTopicPoliciesAsync(String topic, boolean applied); /** * get inactive topic policies of a topic. * @param topic * @return * @throws PulsarAdminException */ InactiveTopicPolicies getInactiveTopicPolicies(String topic) throws PulsarAdminException; /** * get inactive topic policies of a topic asynchronously. * @param topic * @return */ CompletableFuture getInactiveTopicPoliciesAsync(String topic); /** * set inactive topic policies of a topic. * @param topic * @param inactiveTopicPolicies * @throws PulsarAdminException */ void setInactiveTopicPolicies(String topic , InactiveTopicPolicies inactiveTopicPolicies) throws PulsarAdminException; /** * set inactive topic policies of a topic asynchronously. * @param topic * @param inactiveTopicPolicies * @return */ CompletableFuture setInactiveTopicPoliciesAsync(String topic, InactiveTopicPolicies inactiveTopicPolicies); /** * remove inactive topic policies of a topic. * @param topic * @throws PulsarAdminException */ void removeInactiveTopicPolicies(String topic) throws PulsarAdminException; /** * remove inactive topic policies of a topic asynchronously. * @param topic * @return */ CompletableFuture removeInactiveTopicPoliciesAsync(String topic); /** * get offload policies of a topic. * @param topic * @return * @throws PulsarAdminException */ OffloadPolicies getOffloadPolicies(String topic) throws PulsarAdminException; /** * get offload policies of a topic asynchronously. * @param topic * @return */ CompletableFuture getOffloadPoliciesAsync(String topic); /** * get applied offload policies of a topic. * @param topic * @return * @throws PulsarAdminException */ OffloadPolicies getOffloadPolicies(String topic, boolean applied) throws PulsarAdminException; /** * get applied offload policies of a topic asynchronously. * @param topic * @return */ CompletableFuture getOffloadPoliciesAsync(String topic, boolean applied); /** * set offload policies of a topic. * @param topic * @param offloadPolicies * @throws PulsarAdminException */ void setOffloadPolicies(String topic, OffloadPolicies offloadPolicies) throws PulsarAdminException; /** * set offload policies of a topic asynchronously. * @param topic * @param offloadPolicies * @return */ CompletableFuture setOffloadPoliciesAsync(String topic, OffloadPolicies offloadPolicies); /** * remove offload policies of a topic. * @param topic * @throws PulsarAdminException */ void removeOffloadPolicies(String topic) throws PulsarAdminException; /** * remove offload policies of a topic asynchronously. * @param topic * @return */ CompletableFuture removeOffloadPoliciesAsync(String topic); /** * get max unacked messages on subscription of a topic. * @param topic * @return * @throws PulsarAdminException */ Integer getMaxUnackedMessagesOnSubscription(String topic) throws PulsarAdminException; /** * get max unacked messages on subscription of a topic asynchronously. * @param topic * @return */ CompletableFuture getMaxUnackedMessagesOnSubscriptionAsync(String topic); /** * get max unacked messages on subscription of a topic. * @param topic * @return * @throws PulsarAdminException */ Integer getMaxUnackedMessagesOnSubscription(String topic, boolean applied) throws PulsarAdminException; /** * get max unacked messages on subscription of a topic asynchronously. * @param topic * @return */ CompletableFuture getMaxUnackedMessagesOnSubscriptionAsync(String topic, boolean applied); /** * set max unacked messages on subscription of a topic. * @param topic * @param maxNum * @throws PulsarAdminException */ void setMaxUnackedMessagesOnSubscription(String topic, int maxNum) throws PulsarAdminException; /** * set max unacked messages on subscription of a topic asynchronously. * @param topic * @param maxNum * @return */ CompletableFuture setMaxUnackedMessagesOnSubscriptionAsync(String topic, int maxNum); /** * remove max unacked messages on subscription of a topic. * @param topic * @throws PulsarAdminException */ void removeMaxUnackedMessagesOnSubscription(String topic) throws PulsarAdminException; /** * remove max unacked messages on subscription of a topic asynchronously. * @param topic * @return */ 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 */ 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 */ 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 */ PersistencePolicies getPersistence(String topic) throws PulsarAdminException; /** * Get the configuration of persistence policies for specified topic asynchronously. * * @param topic Topic name */ 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 */ PersistencePolicies getPersistence(String topic, boolean applied) throws PulsarAdminException; /** * Get the applied configuration of persistence policies for specified topic asynchronously. * * @param topic Topic name */ CompletableFuture getPersistenceAsync(String topic, boolean applied); /** * Remove the configuration of persistence policies for specified topic. * * @param topic Topic name * @throws PulsarAdminException Unexpected error */ void removePersistence(String topic) throws PulsarAdminException; /** * Remove the configuration of persistence policies for specified topic asynchronously. * * @param topic Topic name */ CompletableFuture removePersistenceAsync(String topic); /** * get deduplication enabled of a topic. * @param topic * @return * @throws PulsarAdminException */ @Deprecated Boolean getDeduplicationEnabled(String topic) throws PulsarAdminException; /** * get deduplication enabled of a topic asynchronously. * @param topic * @return */ @Deprecated CompletableFuture getDeduplicationEnabledAsync(String topic); /** * get deduplication enabled of a topic. * @param topic * @return * @throws PulsarAdminException */ Boolean getDeduplicationStatus(String topic) throws PulsarAdminException; /** * get deduplication enabled of a topic asynchronously. * @param topic * @return */ CompletableFuture getDeduplicationStatusAsync(String topic); /** * get applied deduplication enabled of a topic. * @param topic * @return * @throws PulsarAdminException */ Boolean getDeduplicationStatus(String topic, boolean applied) throws PulsarAdminException; /** * get applied deduplication enabled of a topic asynchronously. * @param topic * @return */ CompletableFuture getDeduplicationStatusAsync(String topic, boolean applied); /** * set deduplication enabled of a topic. * @param topic * @param enabled * @throws PulsarAdminException */ @Deprecated void enableDeduplication(String topic, boolean enabled) throws PulsarAdminException; /** * set deduplication enabled of a topic asynchronously. * @param topic * @param enabled * @return */ @Deprecated CompletableFuture enableDeduplicationAsync(String topic, boolean enabled); /** * set deduplication enabled of a topic. * @param topic * @param enabled * @throws PulsarAdminException */ void setDeduplicationStatus(String topic, boolean enabled) throws PulsarAdminException; /** * set deduplication enabled of a topic asynchronously. * @param topic * @param enabled * @return */ CompletableFuture setDeduplicationStatusAsync(String topic, boolean enabled); /** * remove deduplication enabled of a topic. * @param topic * @throws PulsarAdminException */ @Deprecated void disableDeduplication(String topic) throws PulsarAdminException; /** * remove deduplication enabled of a topic asynchronously. * @param topic * @return */ @Deprecated CompletableFuture disableDeduplicationAsync(String topic); /** * remove deduplication enabled of a topic. * @param topic * @throws PulsarAdminException */ void removeDeduplicationStatus(String topic) throws PulsarAdminException; /** * remove deduplication enabled of a topic asynchronously. * @param topic * @return */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ CompletableFuture getDispatchRateAsync(String topic, boolean applied); /** * Remove message-dispatch-rate. *

* Remove topic message dispatch rate * * @param topic * @throws PulsarAdminException * unexpected error */ void removeDispatchRate(String topic) throws PulsarAdminException; /** * Remove message-dispatch-rate asynchronously. *

* Remove topic message dispatch rate * * @param topic * @throws PulsarAdminException * unexpected error */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ CompletableFuture getSubscriptionDispatchRateAsync(String topic); /** * Remove subscription-message-dispatch-rate for a topic. * @param topic * Topic name * @throws PulsarAdminException * Unexpected error */ void removeSubscriptionDispatchRate(String topic) throws PulsarAdminException; /** * Remove subscription-message-dispatch-rate for a topic asynchronously. * @param topic * Topic name */ 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 */ 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 */ 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 */ 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 */ CompletableFuture getReplicatorDispatchRateAsync(String topic); /** * Get applied replicatorDispatchRate for the topic. * @param topic * @param applied * @return * @throws PulsarAdminException */ DispatchRate getReplicatorDispatchRate(String topic, boolean applied) throws PulsarAdminException; /** * Get applied replicatorDispatchRate asynchronously. * @param topic * @param applied * @return */ CompletableFuture getReplicatorDispatchRateAsync(String topic, boolean applied); /** * Remove replicatorDispatchRate for a topic. * @param topic * Topic name * @throws PulsarAdminException * Unexpected error */ void removeReplicatorDispatchRate(String topic) throws PulsarAdminException; /** * Remove replicatorDispatchRate for a topic asynchronously. * @param topic * Topic name */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ CompletableFuture setCompactionThresholdAsync(String topic, long compactionThreshold); /** * Remove the compactionThreshold for a topic. * @param topic * Topic name * @throws PulsarAdminException * Unexpected error */ void removeCompactionThreshold(String topic) throws PulsarAdminException; /** * Remove the compactionThreshold for a topic asynchronously. * @param topic * Topic name */ 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 */ 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 */ 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 */ 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 */ CompletableFuture getPublishRateAsync(String topic); /** * Remove message-publish-rate. *

* Remove topic message publish rate * * @param topic * @throws PulsarAdminException * unexpected error */ void removePublishRate(String topic) throws PulsarAdminException; /** * Remove message-publish-rate asynchronously. *

* Remove topic message publish rate * * @param topic * @throws PulsarAdminException * unexpected error */ 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 */ Integer getMaxConsumersPerSubscription(String topic) throws PulsarAdminException; /** * Get the maxConsumersPerSubscription for a topic asynchronously. *

* Response example: * *

     * 0
     * 
* * @param topic * Topic name */ 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 */ 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 */ CompletableFuture setMaxConsumersPerSubscriptionAsync(String topic, int maxConsumersPerSubscription); /** * Remove the maxConsumersPerSubscription for a topic. * @param topic * Topic name * @throws PulsarAdminException * Unexpected error */ void removeMaxConsumersPerSubscription(String topic) throws PulsarAdminException; /** * Remove the maxConsumersPerSubscription for a topic asynchronously. * @param topic * Topic name */ 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 */ 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 */ CompletableFuture getMaxProducersAsync(String topic); /** * Get the max number of producer applied for specified topic. * @param topic * @param applied * @return * @throws PulsarAdminException */ Integer getMaxProducers(String topic, boolean applied) throws PulsarAdminException; /** * Get the max number of producer applied for specified topic asynchronously. * @param topic * @param applied * @return */ 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 */ 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 */ CompletableFuture setMaxProducersAsync(String topic, int maxProducers); /** * Remove the max number of producer for specified topic. * * @param topic Topic name * @throws PulsarAdminException Unexpected error */ void removeMaxProducers(String topic) throws PulsarAdminException; /** * Remove the max number of producer for specified topic asynchronously. * * @param topic Topic name */ 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 */ 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 */ 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 */ 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 */ CompletableFuture setMaxSubscriptionsPerTopicAsync(String topic, int maxSubscriptionsPerTopic); /** * Remove the max number of subscriptions for specified topic. * * @param topic Topic name * @throws PulsarAdminException Unexpected error */ void removeMaxSubscriptionsPerTopic(String topic) throws PulsarAdminException; /** * Remove the max number of subscriptions for specified topic asynchronously. * * @param topic Topic name */ 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 */ 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 */ 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 */ 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 */ CompletableFuture setMaxMessageSizeAsync(String topic, int maxMessageSize); /** * Remove the max message size for specified topic. * * @param topic Topic name * @throws PulsarAdminException Unexpected error */ void removeMaxMessageSize(String topic) throws PulsarAdminException; /** * Remove the max message size for specified topic asynchronously. * * @param topic Topic name */ 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 */ 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 */ CompletableFuture getMaxConsumersAsync(String topic); /** * Get the max number of consumer applied for specified topic. * @param topic * @param applied * @return * @throws PulsarAdminException */ Integer getMaxConsumers(String topic, boolean applied) throws PulsarAdminException; /** * Get the max number of consumer applied for specified topic asynchronously. * @param topic * @param applied * @return */ 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 */ 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 */ CompletableFuture setMaxConsumersAsync(String topic, int maxConsumers); /** * Remove the max number of consumer for specified topic. * * @param topic Topic name * @throws PulsarAdminException Unexpected error */ void removeMaxConsumers(String topic) throws PulsarAdminException; /** * Remove the max number of consumer for specified topic asynchronously. * * @param topic Topic name */ CompletableFuture removeMaxConsumersAsync(String topic); /** * Get the deduplication snapshot interval for specified topic. * @param topic * @return * @throws PulsarAdminException */ Integer getDeduplicationSnapshotInterval(String topic) throws PulsarAdminException; /** * Get the deduplication snapshot interval for specified topic asynchronously. * @param topic * @return */ CompletableFuture getDeduplicationSnapshotIntervalAsync(String topic); /** * Set the deduplication snapshot interval for specified topic. * @param topic * @param interval * @throws PulsarAdminException */ void setDeduplicationSnapshotInterval(String topic, int interval) throws PulsarAdminException; /** * Set the deduplication snapshot interval for specified topic asynchronously. * @param topic * @param interval * @return */ CompletableFuture setDeduplicationSnapshotIntervalAsync(String topic, int interval); /** * Remove the deduplication snapshot interval for specified topic. * @param topic * @throws PulsarAdminException */ void removeDeduplicationSnapshotInterval(String topic) throws PulsarAdminException; /** * Remove the deduplication snapshot interval for specified topic asynchronously. * @param topic * @return */ CompletableFuture removeDeduplicationSnapshotIntervalAsync(String topic); /** * Set is enable sub types. * * @param topic * @param subscriptionTypesEnabled * is enable subTypes * @throws PulsarAdminException * Unexpected error */ void setSubscriptionTypesEnabled(String topic, Set subscriptionTypesEnabled) throws PulsarAdminException; /** * Set is enable sub types asynchronously. * * @param topic * @param subscriptionTypesEnabled * is enable subTypes */ 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 */ Set getSubscriptionTypesEnabled(String topic) throws PulsarAdminException; /** * Get is enable sub types asynchronously. * * @param topic * is topic for get is enable sub types */ CompletableFuture> getSubscriptionTypesEnabledAsync(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 */ 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 */ 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 */ SubscribeRate getSubscribeRate(String topic) throws PulsarAdminException; /** * Get topic-subscribe-rate asynchronously. *

* Topic allow subscribe times per consumer in a period. * * @param topic * @returns subscribeRate */ 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 */ SubscribeRate getSubscribeRate(String topic, boolean applied) throws PulsarAdminException; /** * Get applied topic-subscribe-rate asynchronously. * * @param topic * @returns subscribeRate */ CompletableFuture getSubscribeRateAsync(String topic, boolean applied); /** * Remove topic-subscribe-rate. *

* Remove topic subscribe rate * * @param topic * @throws PulsarAdminException * unexpected error */ void removeSubscribeRate(String topic) throws PulsarAdminException; /** * Remove topic-subscribe-rate asynchronously. *

* Remove topic subscribe rate * * @param topic * @throws PulsarAdminException * unexpected error */ 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); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy