public abstract class AbstractTopic extends Object implements Topic, TopicPolicyListener<org.apache.pulsar.common.policies.data.TopicPolicies>
Topic.PublishContext| Modifier and Type | Field and Description |
|---|---|
protected StatsBuckets |
addEntryLatencyStatsUsec |
protected BrokerService |
brokerService |
protected boolean |
hasBatchMessagePublished |
protected Boolean |
isAllowAutoUpdateSchema |
protected boolean |
isEncryptionRequired |
protected boolean |
isFenced |
protected long |
lastActive |
protected ReentrantReadWriteLock |
lock |
protected static long |
POLICY_UPDATE_FAILURE_RETRY_TIME_SECONDS |
protected boolean |
preciseTopicPublishRateLimitingEnable |
protected ConcurrentHashMap<String,Producer> |
producers |
protected long |
publishRateLimitedTimes |
protected String |
replicatorPrefix |
protected ResourceGroupPublishLimiter |
resourceGroupPublishLimiter |
protected boolean |
resourceGroupRateLimitingEnabled |
protected boolean |
schemaValidationEnforced |
protected String |
topic |
protected Optional<Long> |
topicEpoch |
protected org.apache.pulsar.common.policies.data.HierarchyTopicPolicies |
topicPolicies |
protected PublishRateLimiter |
topicPublishRateLimiter |
| Constructor and Description |
|---|
AbstractTopic(String topic,
BrokerService brokerService) |
| Modifier and Type | Method and Description |
|---|---|
protected CompletableFuture<Void> |
addConsumerToSubscription(Subscription subscription,
Consumer consumer) |
void |
addFilteredEntriesCount(int filtered) |
CompletableFuture<Optional<Long>> |
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.
|
CompletableFuture<Void> |
checkSchemaCompatibleForConsumer(org.apache.pulsar.common.protocol.schema.SchemaData schema)
Check if schema is compatible with current topic schema.
|
protected void |
checkTopicFenced() |
void |
checkTopicPublishThrottlingRate() |
long |
currentUsageCount() |
void |
decrementUsageCount() |
boolean |
deletePartitionedTopicMetadataWhileInactive() |
CompletableFuture<org.apache.pulsar.common.protocol.schema.SchemaVersion> |
deleteSchema()
Delete the schema if this topic has a schema defined for it.
|
CompletableFuture<Void> |
deleteTopicPolicies() |
void |
disableCnxAutoRead() |
protected void |
disableProducerRead() |
void |
enableCnxAutoRead() |
protected void |
enableProducerReadForPublishBufferLimiting() |
protected void |
enableProducerReadForPublishRateLimiting()
it sets cnx auto-readable if producer's cnx is disabled due to publish-throttling.
|
protected Consumer |
getActiveConsumer(Subscription subscription) |
PublishRateLimiter |
getBrokerPublishRateLimiter() |
BrokerService |
getBrokerService()
Get BrokerService.
|
long |
getBytesInCounter() |
long |
getBytesOutCounter() |
org.apache.pulsar.common.policies.data.impl.DispatchRateImpl |
getDispatchRate() |
long |
getFilteredEntriesCount() |
org.apache.pulsar.common.policies.data.HierarchyTopicPolicies |
getHierarchyTopicPolicies()
Get HierarchyTopicPolicies.
|
org.apache.pulsar.common.policies.data.InactiveTopicPolicies |
getInactiveTopicPolicies() |
long |
getMsgInCounter() |
long |
getMsgOutCounter() |
String |
getName() |
abstract int |
getNumberOfConsumers() |
abstract int |
getNumberOfSameAddressConsumers(String clientAddress) |
protected int |
getNumberOfSameAddressConsumers(String clientAddress,
List<? extends Subscription> subscriptions) |
int |
getNumberOfSameAddressProducers(String clientAddress) |
Map<String,Producer> |
getProducers() |
org.apache.pulsar.common.policies.data.impl.DispatchRateImpl |
getReplicatorDispatchRate() |
String |
getReplicatorPrefix() |
org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy |
getSchemaCompatibilityStrategy() |
boolean |
getSchemaValidationEnforced() |
org.apache.pulsar.common.policies.data.SubscribeRate |
getSubscribeRate() |
org.apache.pulsar.common.policies.data.impl.DispatchRateImpl |
getSubscriptionDispatchRate() |
Optional<org.apache.pulsar.common.policies.data.TopicPolicies> |
getTopicPolicies()
Get
TopicPolicies for this topic. |
PublishRateLimiter |
getTopicPublishRateLimiter() |
protected int |
getWaitingProducersCount() |
void |
handleConsumerAdded(String subscriptionName,
String consumerName) |
protected void |
handleProducerRemoved(Producer producer) |
protected boolean |
hasLocalProducers() |
CompletableFuture<Boolean> |
hasSchema()
Whether a topic has had a schema defined for it.
|
long |
increasePublishLimitedTimes()
increase the publishing limited times.
|
void |
incrementPublishCount(int numOfMessages,
long msgSizeInBytes) |
protected abstract CompletableFuture<Long> |
incrementTopicEpoch(Optional<Long> currentEpoch) |
protected CompletableFuture<Optional<Long>> |
incrementTopicEpochIfNeeded(Producer producer,
CompletableFuture<Void> producerQueuedFuture) |
protected void |
internalAddProducer(Producer producer) |
boolean |
isBrokerPublishRateExceeded() |
protected boolean |
isConsumersExceededOnTopic() |
boolean |
isDeleteWhileInactive() |
boolean |
isEncryptionRequired() |
protected boolean |
isExceedMaximumMessageSize(int size,
Topic.PublishContext publishContext) |
protected boolean |
isProducersExceeded() |
boolean |
isPublishRateExceeded() |
boolean |
isResourceGroupPublishRateExceeded(int numMessages,
int bytes) |
boolean |
isResourceGroupRateLimitingEnabled() |
protected boolean |
isSameAddressConsumersExceededOnTopic(Consumer consumer) |
protected boolean |
isSameAddressProducersExceeded(Producer producer) |
protected abstract boolean |
isTerminated() |
boolean |
isTopicPublishRateExceeded(int numberMessages,
int bytes) |
void |
markBatchMessagePublished() |
void |
recordAddLatency(long latency,
TimeUnit unit)
record add-latency.
|
protected void |
registerTopicPolicyListener() |
void |
removeProducer(Producer producer) |
void |
resetBrokerPublishCountAndEnableReadIfRequired(boolean doneBrokerReset) |
void |
resetTopicPublishCountAndEnableReadIfRequired() |
protected abstract CompletableFuture<Long> |
setTopicEpoch(long newEpoch) |
String |
toString() |
protected void |
unregisterTopicPolicyListener() |
void |
updateBrokerDispatchRate() |
void |
updateBrokerPublishRate() |
void |
updateBrokerReplicatorDispatchRate() |
void |
updateBrokerSubscribeRate() |
void |
updateBrokerSubscriptionDispatchRate() |
void |
updateBrokerSubscriptionTypesEnabled() |
void |
updatePublishDispatcher()
update topic publish dispatcher for this topic.
|
void |
updateResourceGroupLimiter(Optional<org.apache.pulsar.common.policies.data.Policies> optPolicies) |
protected void |
updateTopicPolicy(org.apache.pulsar.common.policies.data.TopicPolicies data) |
protected void |
updateTopicPolicyByNamespacePolicy(org.apache.pulsar.common.policies.data.Policies namespacePolicies) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddSchemaIfIdleOrCheckCompatible, asyncGetStats, checkBackloggedCursors, checkBacklogQuotaExceeded, checkDeduplicationSnapshot, checkGC, checkIfTransactionBufferRecoverCompletely, checkInactiveSubscriptions, checkMessageDeduplicationInfo, checkMessageExpiry, checkReplication, close, createSubscription, delete, deleteForcefully, endTxn, getBacklogQuota, getBrokerDispatchRateLimiter, getDispatchRateLimiter, getInternalStats, getLastMessageId, getLastPosition, getReplicators, getStats, getSubscribeRateLimiter, getSubscription, getSubscriptions, initialize, isPersistent, isReplicated, isSystemTopic, onPoliciesUpdate, publishMessage, publishTxnMessage, subscribe, subscribe, truncate, unsubscribe, updateRatesonUpdateprotected static final long POLICY_UPDATE_FAILURE_RETRY_TIME_SECONDS
protected final String topic
protected final ConcurrentHashMap<String,Producer> producers
protected final BrokerService brokerService
protected final String replicatorPrefix
protected final ReentrantReadWriteLock lock
protected volatile boolean isFenced
protected final org.apache.pulsar.common.policies.data.HierarchyTopicPolicies topicPolicies
protected volatile long lastActive
protected volatile boolean hasBatchMessagePublished
protected StatsBuckets addEntryLatencyStatsUsec
protected volatile boolean isEncryptionRequired
protected volatile Boolean isAllowAutoUpdateSchema
protected volatile boolean schemaValidationEnforced
protected volatile PublishRateLimiter topicPublishRateLimiter
protected volatile ResourceGroupPublishLimiter resourceGroupPublishLimiter
protected boolean preciseTopicPublishRateLimitingEnable
protected boolean resourceGroupRateLimitingEnabled
protected volatile long publishRateLimitedTimes
public AbstractTopic(String topic, BrokerService brokerService)
public org.apache.pulsar.common.policies.data.SubscribeRate getSubscribeRate()
public org.apache.pulsar.common.policies.data.impl.DispatchRateImpl getSubscriptionDispatchRate()
public org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy getSchemaCompatibilityStrategy()
public org.apache.pulsar.common.policies.data.impl.DispatchRateImpl getDispatchRate()
public org.apache.pulsar.common.policies.data.impl.DispatchRateImpl getReplicatorDispatchRate()
protected void updateTopicPolicy(org.apache.pulsar.common.policies.data.TopicPolicies data)
protected void updateTopicPolicyByNamespacePolicy(org.apache.pulsar.common.policies.data.Policies namespacePolicies)
protected boolean isProducersExceeded()
protected void registerTopicPolicyListener()
protected void unregisterTopicPolicyListener()
protected boolean isSameAddressProducersExceeded(Producer producer)
public int getNumberOfSameAddressProducers(String clientAddress)
protected boolean isConsumersExceededOnTopic()
protected boolean isSameAddressConsumersExceededOnTopic(Consumer consumer)
public abstract int getNumberOfConsumers()
public abstract int getNumberOfSameAddressConsumers(String clientAddress)
protected int getNumberOfSameAddressConsumers(String clientAddress, List<? extends Subscription> subscriptions)
protected CompletableFuture<Void> addConsumerToSubscription(Subscription subscription, Consumer consumer)
protected Consumer getActiveConsumer(Subscription subscription)
public void disableCnxAutoRead()
disableCnxAutoRead in interface Topicpublic void enableCnxAutoRead()
enableCnxAutoRead in interface Topicprotected boolean hasLocalProducers()
public Map<String,Producer> getProducers()
getProducers in interface Topicpublic BrokerService getBrokerService()
TopicgetBrokerService in interface Topicpublic boolean isEncryptionRequired()
isEncryptionRequired in interface Topicpublic boolean getSchemaValidationEnforced()
getSchemaValidationEnforced in interface Topicpublic void markBatchMessagePublished()
public String getReplicatorPrefix()
public CompletableFuture<Boolean> hasSchema()
Topicpublic CompletableFuture<org.apache.pulsar.common.protocol.schema.SchemaVersion> addSchema(org.apache.pulsar.common.protocol.schema.SchemaData schema)
Topicpublic CompletableFuture<org.apache.pulsar.common.protocol.schema.SchemaVersion> deleteSchema()
TopicdeleteSchema in interface Topicpublic CompletableFuture<Void> checkSchemaCompatibleForConsumer(org.apache.pulsar.common.protocol.schema.SchemaData schema)
TopiccheckSchemaCompatibleForConsumer in interface Topicpublic CompletableFuture<Optional<Long>> addProducer(Producer producer, CompletableFuture<Void> producerQueuedFuture)
TopicaddProducer in interface TopicproducerQueuedFuture - a future that will be triggered if the producer is being queued up prior of getting establishedprotected CompletableFuture<Optional<Long>> incrementTopicEpochIfNeeded(Producer producer, CompletableFuture<Void> producerQueuedFuture)
protected abstract CompletableFuture<Long> setTopicEpoch(long newEpoch)
protected abstract CompletableFuture<Long> incrementTopicEpoch(Optional<Long> currentEpoch)
public void recordAddLatency(long latency,
TimeUnit unit)
TopicrecordAddLatency in interface Topicpublic long increasePublishLimitedTimes()
TopicincreasePublishLimitedTimes in interface Topicpublic void checkTopicPublishThrottlingRate()
checkTopicPublishThrottlingRate in interface Topicpublic void incrementPublishCount(int numOfMessages,
long msgSizeInBytes)
incrementPublishCount in interface Topicpublic void resetTopicPublishCountAndEnableReadIfRequired()
resetTopicPublishCountAndEnableReadIfRequired in interface Topicpublic void resetBrokerPublishCountAndEnableReadIfRequired(boolean doneBrokerReset)
resetBrokerPublishCountAndEnableReadIfRequired in interface Topicprotected void enableProducerReadForPublishRateLimiting()
protected void enableProducerReadForPublishBufferLimiting()
protected void disableProducerRead()
protected void checkTopicFenced()
throws BrokerServiceException
BrokerServiceExceptionprotected void internalAddProducer(Producer producer) throws BrokerServiceException
BrokerServiceExceptionpublic void removeProducer(Producer producer)
removeProducer in interface Topicprotected void handleProducerRemoved(Producer producer)
public void decrementUsageCount()
public long currentUsageCount()
public boolean isPublishRateExceeded()
isPublishRateExceeded in interface Topicpublic boolean isResourceGroupPublishRateExceeded(int numMessages,
int bytes)
isResourceGroupPublishRateExceeded in interface Topicpublic boolean isResourceGroupRateLimitingEnabled()
isResourceGroupRateLimitingEnabled in interface Topicpublic boolean isTopicPublishRateExceeded(int numberMessages,
int bytes)
isTopicPublishRateExceeded in interface Topicpublic boolean isBrokerPublishRateExceeded()
isBrokerPublishRateExceeded in interface Topicpublic PublishRateLimiter getTopicPublishRateLimiter()
public PublishRateLimiter getBrokerPublishRateLimiter()
public void updateResourceGroupLimiter(Optional<org.apache.pulsar.common.policies.data.Policies> optPolicies)
public long getMsgInCounter()
public long getBytesInCounter()
public long getMsgOutCounter()
public long getBytesOutCounter()
public boolean isDeleteWhileInactive()
public boolean deletePartitionedTopicMetadataWhileInactive()
protected abstract boolean isTerminated()
public org.apache.pulsar.common.policies.data.InactiveTopicPolicies getInactiveTopicPolicies()
public Optional<org.apache.pulsar.common.policies.data.TopicPolicies> getTopicPolicies()
TopicPolicies for this topic.public CompletableFuture<Void> deleteTopicPolicies()
protected int getWaitingProducersCount()
protected boolean isExceedMaximumMessageSize(int size,
Topic.PublishContext publishContext)
public void updatePublishDispatcher()
public void updateBrokerSubscriptionTypesEnabled()
public org.apache.pulsar.common.policies.data.HierarchyTopicPolicies getHierarchyTopicPolicies()
TopicgetHierarchyTopicPolicies in interface Topicpublic void updateBrokerSubscriptionDispatchRate()
public void updateBrokerReplicatorDispatchRate()
public void updateBrokerDispatchRate()
public void addFilteredEntriesCount(int filtered)
public long getFilteredEntriesCount()
public void updateBrokerPublishRate()
public void updateBrokerSubscribeRate()
Copyright © 2017–2022 Apache Software Foundation. All rights reserved.