public class PersistentTopic extends AbstractTopic implements Topic, AsyncCallbacks.AddEntryCallback, TopicPolicyListener<org.apache.pulsar.common.policies.data.TopicPolicies>
Topic.PublishContext| Modifier and Type | Field and Description |
|---|---|
boolean |
delayedDeliveryEnabled |
long |
delayedDeliveryTickTimeMillis |
protected ManagedLedger |
ledger |
static int |
MESSAGE_RATE_BACKOFF_MS |
protected MessageDeduplication |
messageDeduplication |
boolean |
msgChunkPublished |
protected TransactionBuffer |
transactionBuffer |
addEntryLatencyStatsUsec, brokerService, bytesOutFromRemovedSubscriptions, hasBatchMessagePublished, inactiveTopicPolicies, isAllowAutoUpdateSchema, isEncryptionRequired, isFenced, lastActive, lock, maxSubscriptionsPerTopic, maxUnackedMessagesOnConsumerAppilied, msgOutFromRemovedSubscriptions, preciseTopicPublishRateLimitingEnable, producers, publishRateLimitedTimes, replicatorPrefix, resourceGroupPublishLimiter, resourceGroupRateLimitingEnabled, schemaCompatibilityStrategy, schemaValidationEnforced, topic, topicEpoch, topicPublishRateLimiter| Constructor and Description |
|---|
PersistentTopic(String topic,
ManagedLedger ledger,
BrokerService brokerService) |
| Modifier and Type | Method and Description |
|---|---|
void |
addComplete(Position pos,
io.netty.buffer.ByteBuf entryData,
Object ctx) |
void |
addFailed(ManagedLedgerException exception,
Object ctx) |
CompletableFuture<Optional<Long>> |
addProducer(Producer producer,
CompletableFuture<Void> producerQueuedFuture)
Tries to add a producer to the topic.
|
protected CompletableFuture<Void> |
addReplicationCluster(String remoteCluster,
ManagedCursor cursor,
String localCluster) |
CompletableFuture<Void> |
addSchemaIfIdleOrCheckCompatible(org.apache.pulsar.common.protocol.schema.SchemaData schema)
If the topic is idle (no producers, no entries, no subscribers and no existing schema),
add the passed schema to the topic.
|
void |
asyncReadEntry(PositionImpl position,
AsyncCallbacks.ReadEntryCallback callback,
Object ctx) |
void |
checkBackloggedCursors()
Activate cursors those caught up backlog-threshold entries and deactivate slow cursors which are creating
backlog.
|
void |
checkCompaction() |
void |
checkDeduplicationSnapshot() |
CompletableFuture<Void> |
checkDeduplicationStatus() |
void |
checkGC() |
CompletableFuture<Void> |
checkIfTransactionBufferRecoverCompletely(boolean isTxnEnabled)
Wait TransactionBuffer Recovers completely.
|
void |
checkInactiveSubscriptions() |
void |
checkMessageDeduplicationInfo() |
void |
checkMessageExpiry() |
void |
checkReplicatedSubscriptionControllerState() |
CompletableFuture<Void> |
checkReplication() |
boolean |
checkSubscriptionTypesEnable(org.apache.pulsar.common.api.proto.CommandSubscribe.SubType subType) |
CompletableFuture<Void> |
clearBacklog()
Clears backlog for all cursors in the topic.
|
CompletableFuture<Void> |
clearBacklog(String cursorName)
Clears backlog for a given cursor in the topic.
|
CompletableFuture<Void> |
close() |
CompletableFuture<Void> |
close(boolean closeWithoutWaitingClientDisconnect)
Close this topic - close all producers and subscriptions associated with this topic.
|
LongRunningProcessStatus |
compactionStatus() |
CompletableFuture<Subscription> |
createSubscription(String subscriptionName,
org.apache.pulsar.common.api.proto.CommandSubscribe.InitialPosition initialPosition,
boolean replicateSubscriptionState) |
CompletableFuture<Void> |
delete()
Delete the managed ledger associated with this topic.
|
CompletableFuture<Void> |
deleteForcefully()
Forcefully close all producers/consumers/replicators and deletes the topic.
|
CompletableFuture<Void> |
endTxn(org.apache.pulsar.client.api.transaction.TxnID txnID,
int txnAction,
long lowWaterMark)
End the transaction in this topic.
|
org.apache.pulsar.common.policies.data.BacklogQuota |
getBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType backlogQuotaType) |
long |
getBacklogSize() |
CompactedTopic |
getCompactedTopic() |
Optional<CompactedTopicContext> |
getCompactedTopicContext() |
long |
getDelayedDeliveryTickTimeMillis() |
Optional<DispatchRateLimiter> |
getDispatchRateLimiter() |
PositionImpl |
getFirstPosition() |
CompletableFuture<org.apache.pulsar.common.policies.data.PersistentTopicInternalStats> |
getInternalStats(boolean includeLedgerMetadata) |
long |
getLastDataMessagePublishedTimestamp() |
CompletableFuture<org.apache.pulsar.client.api.MessageId> |
getLastMessageId() |
Position |
getLastPosition() |
long |
getLastPublishedSequenceId(String producerName) |
double |
getLastUpdatedAvgPublishRateInByte() |
double |
getLastUpdatedAvgPublishRateInMsg() |
ManagedLedger |
getManagedLedger() |
PositionImpl |
getMaxReadPosition() |
int |
getMaxUnackedMessagesOnConsumer() |
int |
getMaxUnackedMessagesOnSubscription() |
MessageDeduplication |
getMessageDeduplication() |
int |
getNumberOfConsumers() |
long |
getNumberOfEntries() |
int |
getNumberOfSameAddressConsumers(String clientAddress) |
CompletableFuture<ManagedLedger> |
getPendingAckManagedLedger(String subName) |
Replicator |
getPersistentReplicator(String remoteCluster) |
PositionImpl |
getPositionAfterN(PositionImpl startPosition,
long n) |
Optional<ReplicatedSubscriptionsController> |
getReplicatedSubscriptionController() |
org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,Replicator> |
getReplicators() |
org.apache.pulsar.common.policies.data.stats.TopicStatsImpl |
getStats(boolean getPreciseBacklog,
boolean subscriptionBacklogSize) |
Optional<SubscribeRateLimiter> |
getSubscribeRateLimiter() |
PersistentSubscription |
getSubscription(String subscriptionName) |
org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,PersistentSubscription> |
getSubscriptions() |
org.apache.pulsar.common.policies.data.TransactionBufferStats |
getTransactionBufferStats() |
org.apache.pulsar.common.policies.data.TransactionInBufferStats |
getTransactionInBufferStats(org.apache.pulsar.client.api.transaction.TxnID txnID) |
org.apache.pulsar.common.policies.data.TransactionInPendingAckStats |
getTransactionInPendingAckStats(org.apache.pulsar.client.api.transaction.TxnID txnID,
String subName) |
org.apache.pulsar.common.policies.data.TransactionPendingAckStats |
getTransactionPendingAckStats(String subName) |
protected void |
handleProducerRemoved(Producer producer) |
protected CompletableFuture<Long> |
incrementTopicEpoch(Optional<Long> currentEpoch) |
CompletableFuture<Void> |
initialize() |
protected CompletableFuture<Void> |
initTopicPolicy() |
boolean |
isActive(org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode deleteMode) |
boolean |
isBacklogQuotaExceeded(String producerName,
org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType backlogQuotaType) |
CompletableFuture<Boolean> |
isCompactionEnabled() |
boolean |
isDeduplicationEnabled() |
boolean |
isDelayedDeliveryEnabled() |
boolean |
isOldestMessageExpired(ManagedCursor cursor,
int messageTTLInSeconds) |
boolean |
isPersistent() |
boolean |
isReplicated() |
boolean |
isSizeBacklogExceeded() |
boolean |
isSystemTopic() |
protected boolean |
isTerminated() |
boolean |
isTimeBacklogExceeded() |
boolean |
isTxnAborted(org.apache.pulsar.client.api.transaction.TxnID txnID) |
OffloadProcessStatus |
offloadStatus() |
CompletableFuture<Void> |
onPoliciesUpdate(org.apache.pulsar.common.policies.data.Policies data) |
void |
onUpdate(org.apache.pulsar.common.policies.data.TopicPolicies policies) |
CompletableFuture<Void> |
preCreateSubscriptionForCompactionIfNeeded() |
void |
publishMessage(io.netty.buffer.ByteBuf headersAndPayload,
Topic.PublishContext publishContext) |
void |
publishTxnMessage(org.apache.pulsar.client.api.transaction.TxnID txnID,
io.netty.buffer.ByteBuf headersAndPayload,
Topic.PublishContext publishContext)
Publish Transaction message to this Topic's TransactionBuffer.
|
protected CompletableFuture<Long> |
setTopicEpoch(long newEpoch) |
CompletableFuture<Void> |
startReplProducers() |
CompletableFuture<Void> |
stopReplProducers() |
CompletableFuture<Consumer> |
subscribe(TransportCnx cnx,
String subscriptionName,
long consumerId,
org.apache.pulsar.common.api.proto.CommandSubscribe.SubType subType,
int priorityLevel,
String consumerName,
boolean isDurable,
org.apache.pulsar.client.api.MessageId startMessageId,
Map<String,String> metadata,
boolean readCompacted,
org.apache.pulsar.common.api.proto.CommandSubscribe.InitialPosition initialPosition,
long startMessageRollbackDurationSec,
boolean replicatedSubscriptionStateArg,
org.apache.pulsar.common.api.proto.KeySharedMeta keySharedMeta) |
CompletableFuture<org.apache.pulsar.client.api.MessageId> |
terminate() |
void |
triggerCompaction() |
void |
triggerOffload(MessageIdImpl messageId) |
CompletableFuture<Void> |
truncate()
Truncate a topic.
|
CompletableFuture<Void> |
unsubscribe(String subscriptionName)
Delete the cursor ledger for a given subscription.
|
void |
updateRates(NamespaceStats nsStats,
org.apache.pulsar.policies.data.loadbalancer.NamespaceBundleStats bundleStats,
StatsOutputStream topicStatsStream,
ClusterReplicationMetrics replStats,
String namespace,
boolean hydratePublishers) |
void |
updateUnackedMessagesAppliedOnSubscription(org.apache.pulsar.common.policies.data.Policies policies) |
addConsumerToSubscription, addSchema, checkSchemaCompatibleForConsumer, checkTopicFenced, checkTopicPublishThrottlingRate, currentUsageCount, decrementUsageCount, deletePartitionedTopicMetadataWhileInactive, deleteSchema, deleteTopicPolicies, disableCnxAutoRead, disableProducerRead, enableCnxAutoRead, enableProducerReadForPublishBufferLimiting, enableProducerReadForPublishRateLimiting, getActiveConsumer, getBrokerPublishRateLimiter, getBrokerService, getBytesInCounter, getBytesOutCounter, getInactiveTopicPolicies, getMsgInCounter, getMsgOutCounter, getName, getNumberOfSameAddressConsumers, getNumberOfSameAddressProducers, getProducers, getReplicatorPrefix, getSchemaValidationEnforced, getTopicPolicies, getTopicPublishRateLimiter, getWaitingProducersCount, handleConsumerAdded, hasLocalProducers, hasSchema, increasePublishLimitedTimes, incrementPublishCount, incrementTopicEpochIfNeeded, internalAddProducer, isBrokerPublishRateExceeded, isConsumersExceededOnTopic, isDeleteWhileInactive, isEncryptionRequired, isExceedMaximumMessageSize, isProducersExceeded, isPublishRateExceeded, isResourceGroupPublishRateExceeded, isResourceGroupRateLimitingEnabled, isSameAddressConsumersExceededOnTopic, isSameAddressProducersExceeded, isTopicPublishRateExceeded, markBatchMessagePublished, recordAddLatency, removeProducer, resetBrokerPublishCountAndEnableReadIfRequired, resetInactiveTopicPolicies, resetTopicPublishCountAndEnableReadIfRequired, setDeleteWhileInactive, setSchemaCompatibilityStrategy, toString, updateMaxPublishRate, updatePublishDispatcherclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddSchema, checkSchemaCompatibleForConsumer, checkTopicPublishThrottlingRate, deleteSchema, disableCnxAutoRead, enableCnxAutoRead, getBrokerService, getName, getProducers, getSchemaValidationEnforced, hasSchema, increasePublishLimitedTimes, incrementPublishCount, isBrokerPublishRateExceeded, isEncryptionRequired, isPublishRateExceeded, isResourceGroupPublishRateExceeded, isResourceGroupRateLimitingEnabled, isTopicPublishRateExceeded, recordAddLatency, removeProducer, resetBrokerPublishCountAndEnableReadIfRequired, resetTopicPublishCountAndEnableReadIfRequiredprotected final ManagedLedger ledger
public boolean msgChunkPublished
public volatile long delayedDeliveryTickTimeMillis
public volatile boolean delayedDeliveryEnabled
public static final int MESSAGE_RATE_BACKOFF_MS
protected final MessageDeduplication messageDeduplication
protected final TransactionBuffer transactionBuffer
public PersistentTopic(String topic, ManagedLedger ledger, BrokerService brokerService)
public CompletableFuture<Void> initialize()
initialize in interface Topicpublic void publishMessage(io.netty.buffer.ByteBuf headersAndPayload,
Topic.PublishContext publishContext)
publishMessage in interface Topicpublic void asyncReadEntry(PositionImpl position, AsyncCallbacks.ReadEntryCallback callback, Object ctx)
public PositionImpl getPositionAfterN(PositionImpl startPosition, long n) throws ManagedLedgerException
ManagedLedgerExceptionpublic PositionImpl getFirstPosition() throws ManagedLedgerException
ManagedLedgerExceptionpublic long getNumberOfEntries()
public void addComplete(Position pos, io.netty.buffer.ByteBuf entryData, Object ctx)
addComplete in interface AsyncCallbacks.AddEntryCallbackpublic void addFailed(ManagedLedgerException exception, Object ctx)
addFailed in interface AsyncCallbacks.AddEntryCallbackpublic CompletableFuture<Optional<Long>> addProducer(Producer producer, CompletableFuture<Void> producerQueuedFuture)
TopicaddProducer in interface TopicaddProducer in class AbstractTopicproducerQueuedFuture - a future that will be triggered if the producer is being queued up prior of getting establishedpublic CompletableFuture<Void> checkIfTransactionBufferRecoverCompletely(boolean isTxnEnabled)
TopiccheckIfTransactionBufferRecoverCompletely in interface Topicprotected CompletableFuture<Long> incrementTopicEpoch(Optional<Long> currentEpoch)
incrementTopicEpoch in class AbstractTopicprotected CompletableFuture<Long> setTopicEpoch(long newEpoch)
setTopicEpoch in class AbstractTopicpublic CompletableFuture<Void> startReplProducers()
public CompletableFuture<Void> stopReplProducers()
protected void handleProducerRemoved(Producer producer)
handleProducerRemoved in class AbstractTopicpublic CompletableFuture<Consumer> subscribe(TransportCnx cnx, String subscriptionName, long consumerId, org.apache.pulsar.common.api.proto.CommandSubscribe.SubType subType, int priorityLevel, String consumerName, boolean isDurable, org.apache.pulsar.client.api.MessageId startMessageId, Map<String,String> metadata, boolean readCompacted, org.apache.pulsar.common.api.proto.CommandSubscribe.InitialPosition initialPosition, long startMessageRollbackDurationSec, boolean replicatedSubscriptionStateArg, org.apache.pulsar.common.api.proto.KeySharedMeta keySharedMeta)
public void updateUnackedMessagesAppliedOnSubscription(org.apache.pulsar.common.policies.data.Policies policies)
public CompletableFuture<Subscription> createSubscription(String subscriptionName, org.apache.pulsar.common.api.proto.CommandSubscribe.InitialPosition initialPosition, boolean replicateSubscriptionState)
createSubscription in interface Topicpublic CompletableFuture<Void> unsubscribe(String subscriptionName)
unsubscribe in interface TopicsubscriptionName - Subscription for which the cursor ledger is to be deletedpublic CompletableFuture<Void> delete()
public CompletableFuture<Void> deleteForcefully()
deleteForcefully in interface Topicpublic CompletableFuture<Void> close()
public CompletableFuture<Void> close(boolean closeWithoutWaitingClientDisconnect)
public CompletableFuture<Void> checkDeduplicationStatus()
public CompletableFuture<Void> checkReplication()
checkReplication in interface Topicpublic void checkMessageExpiry()
checkMessageExpiry in interface Topicpublic void checkMessageDeduplicationInfo()
checkMessageDeduplicationInfo in interface Topicpublic CompletableFuture<Boolean> isCompactionEnabled()
public void checkCompaction()
public CompletableFuture<Void> preCreateSubscriptionForCompactionIfNeeded()
protected CompletableFuture<Void> addReplicationCluster(String remoteCluster, ManagedCursor cursor, String localCluster)
public boolean isDeduplicationEnabled()
public int getNumberOfConsumers()
getNumberOfConsumers in class AbstractTopicpublic int getNumberOfSameAddressConsumers(String clientAddress)
getNumberOfSameAddressConsumers in class AbstractTopicpublic org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,PersistentSubscription> getSubscriptions()
getSubscriptions in interface Topicpublic PersistentSubscription getSubscription(String subscriptionName)
getSubscription in interface Topicpublic org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,Replicator> getReplicators()
getReplicators in interface Topicpublic Replicator getPersistentReplicator(String remoteCluster)
public ManagedLedger getManagedLedger()
public void updateRates(NamespaceStats nsStats, org.apache.pulsar.policies.data.loadbalancer.NamespaceBundleStats bundleStats, StatsOutputStream topicStatsStream, ClusterReplicationMetrics replStats, String namespace, boolean hydratePublishers)
updateRates in interface Topicpublic double getLastUpdatedAvgPublishRateInMsg()
public double getLastUpdatedAvgPublishRateInByte()
public org.apache.pulsar.common.policies.data.stats.TopicStatsImpl getStats(boolean getPreciseBacklog,
boolean subscriptionBacklogSize)
public CompletableFuture<org.apache.pulsar.common.policies.data.PersistentTopicInternalStats> getInternalStats(boolean includeLedgerMetadata)
getInternalStats in interface Topicpublic Optional<CompactedTopicContext> getCompactedTopicContext()
public long getBacklogSize()
public boolean isActive(org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode deleteMode)
public void checkInactiveSubscriptions()
checkInactiveSubscriptions in interface Topicpublic void checkBackloggedCursors()
TopiccheckBackloggedCursors in interface Topicpublic void checkDeduplicationSnapshot()
checkDeduplicationSnapshot in interface Topicpublic CompletableFuture<Void> onPoliciesUpdate(org.apache.pulsar.common.policies.data.Policies data)
onPoliciesUpdate in interface Topicpublic org.apache.pulsar.common.policies.data.BacklogQuota getBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType backlogQuotaType)
getBacklogQuota in interface Topicpublic boolean isBacklogQuotaExceeded(String producerName, org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType backlogQuotaType)
isBacklogQuotaExceeded in interface Topicpublic boolean isSizeBacklogExceeded()
public boolean isTimeBacklogExceeded()
public boolean isReplicated()
isReplicated in interface Topicpublic CompletableFuture<org.apache.pulsar.client.api.MessageId> terminate()
public boolean isOldestMessageExpired(ManagedCursor cursor, int messageTTLInSeconds)
public CompletableFuture<Void> clearBacklog()
public CompletableFuture<Void> clearBacklog(String cursorName)
Note: For a replication cursor, just provide the remote cluster name
cursorName - public Optional<DispatchRateLimiter> getDispatchRateLimiter()
getDispatchRateLimiter in interface Topicpublic Optional<SubscribeRateLimiter> getSubscribeRateLimiter()
public long getLastPublishedSequenceId(String producerName)
public Position getLastPosition()
getLastPosition in interface Topicpublic CompletableFuture<org.apache.pulsar.client.api.MessageId> getLastMessageId()
getLastMessageId in interface Topicpublic void triggerCompaction()
throws PulsarServerException,
BrokerServiceException.AlreadyRunningException
public LongRunningProcessStatus compactionStatus()
public void triggerOffload(MessageIdImpl messageId) throws BrokerServiceException.AlreadyRunningException
public OffloadProcessStatus offloadStatus()
public CompletableFuture<Void> addSchemaIfIdleOrCheckCompatible(org.apache.pulsar.common.protocol.schema.SchemaData schema)
TopicaddSchemaIfIdleOrCheckCompatible in interface Topicpublic void checkReplicatedSubscriptionControllerState()
public Optional<ReplicatedSubscriptionsController> getReplicatedSubscriptionController()
public CompactedTopic getCompactedTopic()
public boolean isSystemTopic()
isSystemTopic in interface Topicpublic boolean isPersistent()
isPersistent in interface Topicpublic void publishTxnMessage(org.apache.pulsar.client.api.transaction.TxnID txnID,
io.netty.buffer.ByteBuf headersAndPayload,
Topic.PublishContext publishContext)
TopicpublishTxnMessage in interface TopictxnID - Transaction IdheadersAndPayload - Message datapublishContext - Publish contextpublic CompletableFuture<Void> endTxn(org.apache.pulsar.client.api.transaction.TxnID txnID, int txnAction, long lowWaterMark)
Topicpublic CompletableFuture<Void> truncate()
Topicpublic long getDelayedDeliveryTickTimeMillis()
public int getMaxUnackedMessagesOnConsumer()
public boolean isDelayedDeliveryEnabled()
public int getMaxUnackedMessagesOnSubscription()
public void onUpdate(org.apache.pulsar.common.policies.data.TopicPolicies policies)
onUpdate in interface TopicPolicyListener<org.apache.pulsar.common.policies.data.TopicPolicies>protected CompletableFuture<Void> initTopicPolicy()
public MessageDeduplication getMessageDeduplication()
public boolean checkSubscriptionTypesEnable(org.apache.pulsar.common.api.proto.CommandSubscribe.SubType subType)
throws Exception
Exceptionpublic org.apache.pulsar.common.policies.data.TransactionBufferStats getTransactionBufferStats()
public org.apache.pulsar.common.policies.data.TransactionPendingAckStats getTransactionPendingAckStats(String subName)
public PositionImpl getMaxReadPosition()
public boolean isTxnAborted(org.apache.pulsar.client.api.transaction.TxnID txnID)
public org.apache.pulsar.common.policies.data.TransactionInBufferStats getTransactionInBufferStats(org.apache.pulsar.client.api.transaction.TxnID txnID)
protected boolean isTerminated()
isTerminated in class AbstractTopicpublic org.apache.pulsar.common.policies.data.TransactionInPendingAckStats getTransactionInPendingAckStats(org.apache.pulsar.client.api.transaction.TxnID txnID,
String subName)
public CompletableFuture<ManagedLedger> getPendingAckManagedLedger(String subName)
public long getLastDataMessagePublishedTimestamp()
Copyright © 2017–2022 Apache Software Foundation. All rights reserved.