Package org.apache.pulsar.broker.service
Class AbstractTopic
java.lang.Object
org.apache.pulsar.broker.service.AbstractTopic
- All Implemented Interfaces:
Topic,TopicPolicyListener
- Direct Known Subclasses:
NonPersistentTopic,PersistentTopic
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.pulsar.broker.service.Topic
Topic.PublishContext -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected StatsBucketsprotected final BrokerServiceprotected final LongAdderprotected final LongAdderprotected final Clockprotected org.apache.commons.lang3.tuple.Pair<String,List<EntryFilter>> protected booleanprotected Booleanprotected booleanprotected booleanprotected longprotected final ReentrantReadWriteLockprotected final LongAdderprotected static final longprotected booleanprotected final ConcurrentHashMap<String,Producer> protected longprotected final Stringprotected ResourceGroupPublishLimiterprotected booleanprotected final Stringprotected final org.apache.pulsar.common.policies.data.HierarchyTopicPoliciesprotected PublishRateLimiterprotected longprotected booleanprotected int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected CompletableFuture<Void>addConsumerToSubscription(Subscription subscription, Consumer consumer) voidaddFilteredEntriesCount(int filtered) addProducer(Producer producer, CompletableFuture<Void> producerQueuedFuture) Tries to add a producer to the topic.CompletableFuture<org.apache.pulsar.common.protocol.schema.SchemaVersion>addSchema(org.apache.pulsar.common.protocol.schema.SchemaData schema) Add a schema to the topic.checkSchemaCompatibleForConsumer(org.apache.pulsar.common.protocol.schema.SchemaData schema) Check if schema is compatible with current topic schema.protected voidlongvoidbooleanCompletableFuture<org.apache.pulsar.common.protocol.schema.SchemaVersion>Delete the schema if this topic has a schema defined for it.protected ConsumergetActiveConsumer(Subscription subscription) Get BrokerService.longlongorg.apache.pulsar.common.policies.data.impl.DispatchRateImplorg.apache.pulsar.common.policies.data.EntryFilterslongorg.apache.pulsar.common.policies.data.HierarchyTopicPoliciesGet HierarchyTopicPolicies.org.apache.pulsar.common.policies.data.InactiveTopicPoliciesOptional<org.apache.pulsar.common.policies.data.ClusterPolicies.ClusterUrl>static Optional<org.apache.pulsar.common.policies.data.ClusterPolicies.ClusterUrl>getMigratedClusterUrl(PulsarService pulsar, String topic) static CompletableFuture<Optional<org.apache.pulsar.common.policies.data.ClusterPolicies.ClusterUrl>>getMigratedClusterUrlAsync(PulsarService pulsar, String topic) longlonggetName()abstract intabstract intgetNumberOfSameAddressConsumers(String clientAddress) protected intgetNumberOfSameAddressConsumers(String clientAddress, Collection<? extends Subscription> subscriptions) intgetNumberOfSameAddressProducers(String clientAddress) org.apache.pulsar.common.policies.data.impl.DispatchRateImplorg.apache.pulsar.common.policies.data.SchemaCompatibilityStrategyprotected Stringbooleanorg.apache.pulsar.common.policies.data.SubscribeRateorg.apache.pulsar.common.policies.data.impl.DispatchRateImplgetSubscriptionDispatchRate(String subscriptionName) longlongprotected intvoidhandleConsumerAdded(String subscriptionName, String consumerName) protected voidhandleProducerRemoved(Producer producer) protected booleanWhether a topic has had a schema defined for it.longincrease the publishing limited times.voidincrementPublishCount(Producer producer, int numOfMessages, long msgSizeInBytes) protected abstract CompletableFuture<Long>incrementTopicEpoch(Optional<Long> currentEpoch) protected CompletableFuture<Optional<Long>>incrementTopicEpochIfNeeded(Producer producer, CompletableFuture<Void> producerQueuedFuture) protected CompletableFuture<Void>internalAddProducer(Producer producer) static CompletableFuture<Boolean>isClusterMigrationEnabled(PulsarService pulsar, String topic) booleanbooleanbooleanprotected booleanisExceedMaximumMessageSize(int size, Topic.PublishContext publishContext) protected abstract booleanprotected booleanisProducersExceeded(boolean isRemote) booleanisProducersExceeded(String producerName) protected booleanisProducersExceeded(Producer producer) protected booleanprotected booleanisSameAddressProducersExceeded(Producer producer) booleanisSystemCursor(String sub) protected abstract booleanbooleanvoidvoidrecordAddLatency(long latency, TimeUnit unit) record add-latency.protected voidvoidremoveProducer(Producer producer) protected abstract CompletableFuture<Long>setTopicEpoch(long newEpoch) toString()protected voidvoidvoidvoidvoidvoidvoidvoidvoidvoidvoidupdate topic publish dispatcher for this topic.voidupdateResourceGroupLimiter(Optional<org.apache.pulsar.common.policies.data.Policies> optPolicies) Deprecated.voidupdateResourceGroupLimiter(org.apache.pulsar.common.policies.data.Policies namespacePolicies) protected voidupdateTopicPolicy(org.apache.pulsar.common.policies.data.TopicPolicies data) protected voidupdateTopicPolicyByNamespacePolicy(org.apache.pulsar.common.policies.data.Policies namespacePolicies) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.pulsar.broker.service.Topic
addSchemaIfIdleOrCheckCompatible, asyncGetStats, asyncGetStats, checkBackloggedCursors, checkBacklogQuotaExceeded, checkClusterMigration, checkCursorsToCacheEntries, checkDeduplicationSnapshot, checkGC, checkIfTransactionBufferRecoverCompletely, checkInactiveSubscriptions, checkMessageDeduplicationInfo, checkMessageExpiry, checkReplication, close, close, createSubscription, delete, deleteForcefully, endTxn, getBacklogQuota, getBestEffortOldestUnacknowledgedMessageAgeSeconds, getBrokerDispatchRateLimiter, getDispatchRateLimiter, getInternalStats, getLastDispatchablePosition, getLastMessageId, getLastPosition, getReplicators, getShadowReplicators, getStats, getStats, getSubscribeRateLimiter, getSubscription, getSubscriptions, getTopicAttributes, initialize, isDeduplicationEnabled, isPersistent, isReplicated, isReplicationBacklogExist, isShadowReplicated, isSystemTopic, onPoliciesUpdate, publishMessage, publishTxnMessage, shouldProducerMigrate, subscribe, subscribe, truncate, unsubscribe, updateRatesMethods inherited from interface org.apache.pulsar.broker.service.TopicPolicyListener
onUpdate
-
Field Details
-
POLICY_UPDATE_FAILURE_RETRY_TIME_SECONDS
protected static final long POLICY_UPDATE_FAILURE_RETRY_TIME_SECONDS- See Also:
-
topic
-
producers
-
brokerService
-
replicatorPrefix
-
lock
-
isFenced
protected volatile boolean isFenced -
topicPolicies
protected final org.apache.pulsar.common.policies.data.HierarchyTopicPolicies topicPolicies -
lastActive
protected volatile long lastActive -
hasBatchMessagePublished
protected volatile boolean hasBatchMessagePublished -
addEntryLatencyStatsUsec
-
isEncryptionRequired
protected volatile boolean isEncryptionRequired -
isAllowAutoUpdateSchema
-
topicPublishRateLimiter
-
resourceGroupPublishLimiter
-
preciseTopicPublishRateLimitingEnable
protected boolean preciseTopicPublishRateLimitingEnable -
resourceGroupRateLimitingEnabled
protected boolean resourceGroupRateLimitingEnabled -
publishRateLimitedTimes
protected volatile long publishRateLimitedTimes -
totalPublishRateLimitedCounter
protected volatile long totalPublishRateLimitedCounter -
userCreatedProducerCount
protected volatile int userCreatedProducerCount -
topicEpoch
-
msgOutFromRemovedSubscriptions
-
bytesOutFromRemovedSubscriptions
-
bytesOutFromRemovedSystemSubscriptions
-
entryFilters
-
transferring
protected volatile boolean transferring -
clock
-
additionalSystemCursorNames
-
-
Constructor Details
-
AbstractTopic
-
-
Method Details
-
getSubscribeRate
public org.apache.pulsar.common.policies.data.SubscribeRate getSubscribeRate() -
getSubscriptionDispatchRate
public org.apache.pulsar.common.policies.data.impl.DispatchRateImpl getSubscriptionDispatchRate(String subscriptionName) -
getSchemaCompatibilityStrategy
public org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy getSchemaCompatibilityStrategy() -
getDispatchRate
public org.apache.pulsar.common.policies.data.impl.DispatchRateImpl getDispatchRate() -
getEntryFiltersPolicy
public org.apache.pulsar.common.policies.data.EntryFilters getEntryFiltersPolicy()- Specified by:
getEntryFiltersPolicyin interfaceTopic
-
getEntryFilters
- Specified by:
getEntryFiltersin interfaceTopic
-
getReplicatorDispatchRate
public org.apache.pulsar.common.policies.data.impl.DispatchRateImpl getReplicatorDispatchRate() -
updateTopicPolicy
protected void updateTopicPolicy(org.apache.pulsar.common.policies.data.TopicPolicies data) -
updateTopicPolicyByNamespacePolicy
protected void updateTopicPolicyByNamespacePolicy(org.apache.pulsar.common.policies.data.Policies namespacePolicies) -
isProducersExceeded
-
isProducersExceeded
-
isProducersExceeded
protected boolean isProducersExceeded(boolean isRemote) -
registerTopicPolicyListener
protected void registerTopicPolicyListener() -
unregisterTopicPolicyListener
protected void unregisterTopicPolicyListener() -
isSameAddressProducersExceeded
-
getNumberOfSameAddressProducers
-
isConsumersExceededOnTopic
public boolean isConsumersExceededOnTopic() -
isSameAddressConsumersExceededOnTopic
-
getNumberOfConsumers
public abstract int getNumberOfConsumers() -
getNumberOfSameAddressConsumers
-
getNumberOfSameAddressConsumers
protected int getNumberOfSameAddressConsumers(String clientAddress, Collection<? extends Subscription> subscriptions) -
addConsumerToSubscription
protected CompletableFuture<Void> addConsumerToSubscription(Subscription subscription, Consumer consumer) -
getActiveConsumer
-
hasLocalProducers
protected boolean hasLocalProducers() -
toString
-
getProducers
- Specified by:
getProducersin interfaceTopic
-
getBrokerService
Description copied from interface:TopicGet BrokerService.- Specified by:
getBrokerServicein interfaceTopic- Returns:
-
getName
-
isEncryptionRequired
public boolean isEncryptionRequired()- Specified by:
isEncryptionRequiredin interfaceTopic
-
getSchemaValidationEnforced
public boolean getSchemaValidationEnforced()- Specified by:
getSchemaValidationEnforcedin interfaceTopic
-
markBatchMessagePublished
public void markBatchMessagePublished() -
getReplicatorPrefix
-
getSchemaId
-
hasSchema
Description copied from interface:TopicWhether a topic has had a schema defined for it. -
addSchema
public CompletableFuture<org.apache.pulsar.common.protocol.schema.SchemaVersion> addSchema(org.apache.pulsar.common.protocol.schema.SchemaData schema) Description copied from interface:TopicAdd a schema to the topic. This will fail if the new schema is incompatible with the current schema. -
deleteSchema
Description copied from interface:TopicDelete the schema if this topic has a schema defined for it.- Specified by:
deleteSchemain interfaceTopic
-
checkSchemaCompatibleForConsumer
public CompletableFuture<Void> checkSchemaCompatibleForConsumer(org.apache.pulsar.common.protocol.schema.SchemaData schema) Description copied from interface:TopicCheck if schema is compatible with current topic schema.- Specified by:
checkSchemaCompatibleForConsumerin interfaceTopic
-
addProducer
public CompletableFuture<Optional<Long>> addProducer(Producer producer, CompletableFuture<Void> producerQueuedFuture) Description copied from interface:TopicTries to add a producer to the topic. Several validations will be performed.- Specified by:
addProducerin interfaceTopic- Parameters:
producer- Producer to addproducerQueuedFuture- a future that will be triggered if the producer is being queued up prior of getting established- Returns:
- the "topic epoch" if there is one or empty
-
incrementTopicEpochIfNeeded
protected CompletableFuture<Optional<Long>> incrementTopicEpochIfNeeded(Producer producer, CompletableFuture<Void> producerQueuedFuture) -
setTopicEpoch
-
incrementTopicEpoch
-
recordAddLatency
Description copied from interface:Topicrecord add-latency.- Specified by:
recordAddLatencyin interfaceTopic
-
increasePublishLimitedTimes
public long increasePublishLimitedTimes()Description copied from interface:Topicincrease the publishing limited times.- Specified by:
increasePublishLimitedTimesin interfaceTopic
-
incrementPublishCount
- Specified by:
incrementPublishCountin interfaceTopic
-
updateDispatchRateLimiter
public void updateDispatchRateLimiter() -
checkTopicFenced
- Throws:
BrokerServiceException
-
internalAddProducer
-
removeProducer
- Specified by:
removeProducerin interfaceTopic
-
handleProducerRemoved
-
handleConsumerAdded
-
decrementUsageCount
public void decrementUsageCount() -
currentUsageCount
public long currentUsageCount() -
getTopicPublishRateLimiter
-
getBrokerPublishRateLimiter
-
updateResourceGroupLimiter
@Deprecated public void updateResourceGroupLimiter(Optional<org.apache.pulsar.common.policies.data.Policies> optPolicies) Deprecated.Avoid using the deprecated method #NamespaceResources.getPoliciesIfCached(NamespaceName)and we can use #updateResourceGroupLimiter(Policies)to instead of it. -
updateResourceGroupLimiter
public void updateResourceGroupLimiter(@Nonnull org.apache.pulsar.common.policies.data.Policies namespacePolicies) -
updateEntryFilters
public void updateEntryFilters() -
getMsgInCounter
public long getMsgInCounter() -
getBytesInCounter
public long getBytesInCounter() -
getMsgOutCounter
public long getMsgOutCounter() -
getSystemTopicBytesInCounter
public long getSystemTopicBytesInCounter() -
getBytesOutCounter
public long getBytesOutCounter() -
getTotalPublishRateLimitCounter
public long getTotalPublishRateLimitCounter() -
isDeleteWhileInactive
public boolean isDeleteWhileInactive() -
deletePartitionedTopicMetadataWhileInactive
public boolean deletePartitionedTopicMetadataWhileInactive() -
isTerminated
protected abstract boolean isTerminated() -
isMigrated
protected abstract boolean isMigrated() -
isTransferring
public boolean isTransferring()- Specified by:
isTransferringin interfaceTopic
-
getInactiveTopicPolicies
public org.apache.pulsar.common.policies.data.InactiveTopicPolicies getInactiveTopicPolicies() -
deleteTopicPolicies
-
getWaitingProducersCount
protected int getWaitingProducersCount() -
isExceedMaximumMessageSize
-
updatePublishRateLimiter
public void updatePublishRateLimiter()update topic publish dispatcher for this topic. -
updateBrokerSubscriptionTypesEnabled
public void updateBrokerSubscriptionTypesEnabled() -
getHierarchyTopicPolicies
public org.apache.pulsar.common.policies.data.HierarchyTopicPolicies getHierarchyTopicPolicies()Description copied from interface:TopicGet HierarchyTopicPolicies.- Specified by:
getHierarchyTopicPoliciesin interfaceTopic- Returns:
-
updateBrokerSubscriptionDispatchRate
public void updateBrokerSubscriptionDispatchRate() -
updateBrokerReplicatorDispatchRate
public void updateBrokerReplicatorDispatchRate() -
updateBrokerDispatchRate
public void updateBrokerDispatchRate() -
updateBrokerDispatchPauseOnAckStatePersistentEnabled
public void updateBrokerDispatchPauseOnAckStatePersistentEnabled() -
addFilteredEntriesCount
public void addFilteredEntriesCount(int filtered) -
getFilteredEntriesCount
public long getFilteredEntriesCount() -
updateBrokerPublishRate
public void updateBrokerPublishRate() -
updateBrokerSubscribeRate
public void updateBrokerSubscribeRate() -
getMigratedClusterUrl
public Optional<org.apache.pulsar.common.policies.data.ClusterPolicies.ClusterUrl> getMigratedClusterUrl() -
isClusterMigrationEnabled
public static CompletableFuture<Boolean> isClusterMigrationEnabled(PulsarService pulsar, String topic) -
getMigratedClusterUrlAsync
public static CompletableFuture<Optional<org.apache.pulsar.common.policies.data.ClusterPolicies.ClusterUrl>> getMigratedClusterUrlAsync(PulsarService pulsar, String topic) -
getMigratedClusterUrl
public static Optional<org.apache.pulsar.common.policies.data.ClusterPolicies.ClusterUrl> getMigratedClusterUrl(PulsarService pulsar, String topic) -
isSystemCursor
-
NamespaceResources.getPoliciesIfCached(NamespaceName)and we can use #updateResourceGroupLimiter(Policies)to instead of it.