public abstract class AbstractTopic extends Object implements Topic
Topic.PublishContext| Constructor and Description |
|---|
AbstractTopic(String topic,
BrokerService brokerService) |
| Modifier and Type | Method and Description |
|---|---|
protected CompletableFuture<Void> |
addConsumerToSubscription(Subscription subscription,
Consumer consumer) |
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.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() |
String |
getReplicatorPrefix() |
boolean |
getSchemaValidationEnforced() |
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) |
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.
|
void |
removeProducer(Producer producer) |
void |
resetBrokerPublishCountAndEnableReadIfRequired(boolean doneBrokerReset) |
void |
resetInactiveTopicPolicies(org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode inactiveTopicDeleteMode,
int maxInactiveDurationSeconds,
boolean deleteWhileInactive) |
void |
resetTopicPublishCountAndEnableReadIfRequired() |
void |
setDeleteWhileInactive(boolean deleteWhileInactive) |
protected void |
setSchemaCompatibilityStrategy(org.apache.pulsar.common.policies.data.Policies policies) |
protected abstract CompletableFuture<Long> |
setTopicEpoch(long newEpoch) |
String |
toString() |
void |
updateMaxPublishRate(org.apache.pulsar.common.policies.data.Policies policies) |
protected void |
updatePublishDispatcher(org.apache.pulsar.common.policies.data.PublishRate publishRate)
update topic publish dispatcher for this topic.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddSchemaIfIdleOrCheckCompatible, checkBackloggedCursors, checkDeduplicationSnapshot, checkGC, checkIfTransactionBufferRecoverCompletely, checkInactiveSubscriptions, checkMessageDeduplicationInfo, checkMessageExpiry, checkReplication, close, createSubscription, delete, deleteForcefully, endTxn, getBacklogQuota, getDispatchRateLimiter, getInternalStats, getLastMessageId, getLastPosition, getReplicators, getStats, getSubscription, getSubscriptions, initialize, isBacklogQuotaExceeded, isPersistent, isReplicated, isSystemTopic, onPoliciesUpdate, publishMessage, publishTxnMessage, subscribe, truncate, unsubscribe, updateRatesprotected 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 org.apache.pulsar.common.policies.data.InactiveTopicPolicies inactiveTopicPolicies
protected volatile long lastActive
protected volatile boolean hasBatchMessagePublished
protected StatsBuckets addEntryLatencyStatsUsec
protected volatile boolean isEncryptionRequired
protected volatile org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy schemaCompatibilityStrategy
protected volatile Boolean isAllowAutoUpdateSchema
protected volatile boolean schemaValidationEnforced
protected volatile int maxUnackedMessagesOnConsumerAppilied
protected volatile Integer maxSubscriptionsPerTopic
protected volatile PublishRateLimiter topicPublishRateLimiter
protected volatile ResourceGroupPublishLimiter resourceGroupPublishLimiter
protected boolean preciseTopicPublishRateLimitingEnable
protected boolean resourceGroupRateLimitingEnabled
protected volatile long publishRateLimitedTimes
protected final LongAdder msgOutFromRemovedSubscriptions
protected final LongAdder bytesOutFromRemovedSubscriptions
public AbstractTopic(String topic, BrokerService brokerService)
protected boolean isProducersExceeded()
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 Topicprotected void setSchemaCompatibilityStrategy(org.apache.pulsar.common.policies.data.Policies policies)
public 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
BrokerServiceExceptionpublic long increasePublishLimitedTimes()
TopicincreasePublishLimitedTimes in interface Topicprotected 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 updateMaxPublishRate(org.apache.pulsar.common.policies.data.Policies policies)
public long getMsgInCounter()
public long getBytesInCounter()
public long getMsgOutCounter()
public long getBytesOutCounter()
public boolean isDeleteWhileInactive()
public boolean deletePartitionedTopicMetadataWhileInactive()
public void setDeleteWhileInactive(boolean deleteWhileInactive)
protected abstract boolean isTerminated()
public org.apache.pulsar.common.policies.data.InactiveTopicPolicies getInactiveTopicPolicies()
public void resetInactiveTopicPolicies(org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode inactiveTopicDeleteMode,
int maxInactiveDurationSeconds,
boolean deleteWhileInactive)
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)
protected void updatePublishDispatcher(org.apache.pulsar.common.policies.data.PublishRate publishRate)
Copyright © 2017–2022 Apache Software Foundation. All rights reserved.