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 static AtomicLongFieldUpdater<PersistentTopic> |
USAGE_COUNT_UPDATER |
addEntryLatencyStatsUsec, brokerService, hasBatchMessagePublished, inactiveTopicPolicies, isAllowAutoUpdateSchema, isEncryptionRequired, isFenced, lastActive, lock, maxSubscriptionsPerTopic, maxUnackedMessagesOnConsumer, preciseTopicPublishRateLimitingEnable, producers, replicatorPrefix, schemaCompatibilityStrategy, schemaValidationEnforced, topic, topicPublishRateLimiter, transactionBuffer, transactionBufferLock| Constructor and Description |
|---|
PersistentTopic(String topic,
ManagedLedger ledger,
BrokerService brokerService) |
| Modifier and Type | Method and Description |
|---|---|
void |
addComplete(Position pos,
Object ctx) |
void |
addFailed(ManagedLedgerException exception,
Object ctx) |
void |
addProducer(Producer producer) |
protected boolean |
addReplicationCluster(String remoteCluster,
PersistentTopic persistentTopic,
String replicatorName,
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() |
void |
checkInactiveSubscriptions() |
void |
checkMessageDeduplicationInfo() |
void |
checkMessageExpiry() |
CompletableFuture<Void> |
checkReplication() |
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.PulsarApi.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,
List<org.apache.pulsar.common.api.proto.PulsarApi.MessageIdData> sendMessageList)
End the transaction in this topic.
|
org.apache.pulsar.common.policies.data.BacklogQuota |
getBacklogQuota() |
long |
getBacklogSize() |
CompactedTopic |
getCompactedTopic() |
long |
getDelayedDeliveryTickTimeMillis() |
Optional<DispatchRateLimiter> |
getDispatchRateLimiter() |
PositionImpl |
getFirstPosition() |
CompletableFuture<org.apache.pulsar.common.policies.data.PersistentTopicInternalStats> |
getInternalStats(boolean includeLedgerMetadata) |
CompletableFuture<org.apache.pulsar.client.api.MessageId> |
getLastMessageId() |
Position |
getLastPosition() |
long |
getLastPublishedSequenceId(String producerName) |
double |
getLastUpdatedAvgPublishRateInByte() |
double |
getLastUpdatedAvgPublishRateInMsg() |
ManagedLedger |
getManagedLedger() |
int |
getMaxUnackedMessagesOnConsumer() |
int |
getMaxUnackedMessagesOnSubscription() |
MessageDeduplication |
getMessageDeduplication() |
int |
getNumberOfConsumers() |
long |
getNumberOfEntries() |
Replicator |
getPersistentReplicator(String remoteCluster) |
PositionImpl |
getPositionAfterN(PositionImpl startPosition,
long n) |
org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,Replicator> |
getReplicators() |
org.apache.pulsar.common.policies.data.TopicStats |
getStats(boolean getPreciseBacklog,
boolean subscriptionBacklogSize) |
Optional<SubscribeRateLimiter> |
getSubscribeRateLimiter() |
PersistentSubscription |
getSubscription(String subscriptionName) |
org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,PersistentSubscription> |
getSubscriptions() |
CompletableFuture<TransactionBuffer> |
getTransactionBuffer(boolean createIfMissing)
Get the $
TransactionBuffer of this Topic. |
protected void |
handleProducerRemoved(Producer producer) |
boolean |
isActive(org.apache.pulsar.common.policies.data.InactiveTopicDeleteMode deleteMode) |
boolean |
isBacklogExceeded() |
boolean |
isBacklogQuotaExceeded(String producerName) |
boolean |
isDeduplicationEnabled() |
boolean |
isDelayedDeliveryEnabled() |
boolean |
isOldestMessageExpired(ManagedCursor cursor,
long messageTTLInSeconds) |
boolean |
isReplicated() |
boolean |
isSystemTopic() |
OffloadProcessStatus |
offloadStatus() |
CompletableFuture<Void> |
onPoliciesUpdate(org.apache.pulsar.common.policies.data.Policies data) |
void |
onUpdate(org.apache.pulsar.common.policies.data.TopicPolicies policies) |
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
|
void |
removeProducer(Producer producer) |
void |
startReplProducers() |
CompletableFuture<Void> |
stopReplProducers() |
CompletableFuture<Consumer> |
subscribe(TransportCnx cnx,
String subscriptionName,
long consumerId,
org.apache.pulsar.common.api.proto.PulsarApi.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.PulsarApi.CommandSubscribe.InitialPosition initialPosition,
long startMessageRollbackDurationSec,
boolean replicatedSubscriptionState,
org.apache.pulsar.common.api.proto.PulsarApi.KeySharedMeta keySharedMeta) |
CompletableFuture<org.apache.pulsar.client.api.MessageId> |
terminate() |
void |
triggerCompaction() |
void |
triggerOffload(MessageIdImpl messageId) |
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) |
addConsumerToSubscription, addSchema, checkSchemaCompatibleForConsumer, checkTopicFenced, checkTopicPublishThrottlingRate, deletePartitionedTopicMetadataWhileInactive, deleteSchema, disableCnxAutoRead, disableProducerRead, enableCnxAutoRead, enableProducerReadForPublishBufferLimiting, enableProducerReadForPublishRateLimiting, getBrokerPublishRateLimiter, getBrokerService, getBytesInCounter, getBytesOutCounter, getInactiveTopicPolicies, getMsgInCounter, getMsgOutCounter, getName, getProducers, getReplicatorPrefix, getSchemaValidationEnforced, getTopicPolicies, getTopicPublishRateLimiter, hasLocalProducers, hasSchema, incrementPublishCount, internalAddProducer, isBrokerPublishRateExceeded, isConsumersExceededOnTopic, isDeleteWhileInactive, isEncryptionRequired, isExceedMaximumMessageSize, isProducersExceeded, isPublishRateExceeded, isTopicPublishRateExceeded, markBatchMessagePublished, recordAddLatency, resetBrokerPublishCountAndEnableReadIfRequired, resetInactiveTopicPolicies, resetTopicPublishCountAndEnableReadIfRequired, setDeleteWhileInactive, setSchemaCompatibilityStrategy, toString, updateMaxPublishRate, updatePublishDispatcherclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddSchema, checkSchemaCompatibleForConsumer, checkTopicPublishThrottlingRate, deleteSchema, disableCnxAutoRead, enableCnxAutoRead, getName, getProducers, getSchemaValidationEnforced, hasSchema, incrementPublishCount, isBrokerPublishRateExceeded, isEncryptionRequired, isPublishRateExceeded, isTopicPublishRateExceeded, recordAddLatency, resetBrokerPublishCountAndEnableReadIfRequired, resetTopicPublishCountAndEnableReadIfRequiredprotected final ManagedLedger ledger
protected static final AtomicLongFieldUpdater<PersistentTopic> USAGE_COUNT_UPDATER
public boolean msgChunkPublished
public volatile long delayedDeliveryTickTimeMillis
public volatile boolean delayedDeliveryEnabled
public static final int MESSAGE_RATE_BACKOFF_MS
protected final MessageDeduplication messageDeduplication
public PersistentTopic(String topic, ManagedLedger ledger, BrokerService brokerService) throws BrokerServiceException.NamingException
public 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, Object ctx)
addComplete in interface AsyncCallbacks.AddEntryCallbackpublic void addFailed(ManagedLedgerException exception, Object ctx)
addFailed in interface AsyncCallbacks.AddEntryCallbackpublic void addProducer(Producer producer) throws BrokerServiceException
addProducer in interface TopicBrokerServiceExceptionpublic void startReplProducers()
public CompletableFuture<Void> stopReplProducers()
public void removeProducer(Producer producer)
removeProducer in interface Topicprotected void handleProducerRemoved(Producer producer)
handleProducerRemoved in class AbstractTopicpublic CompletableFuture<Consumer> subscribe(TransportCnx cnx, String subscriptionName, long consumerId, org.apache.pulsar.common.api.proto.PulsarApi.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.PulsarApi.CommandSubscribe.InitialPosition initialPosition, long startMessageRollbackDurationSec, boolean replicatedSubscriptionState, org.apache.pulsar.common.api.proto.PulsarApi.KeySharedMeta keySharedMeta)
public CompletableFuture<Subscription> createSubscription(String subscriptionName, org.apache.pulsar.common.api.proto.PulsarApi.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 void checkCompaction()
protected boolean addReplicationCluster(String remoteCluster, PersistentTopic persistentTopic, String replicatorName, String localCluster)
public boolean isDeduplicationEnabled()
public int getNumberOfConsumers()
getNumberOfConsumers 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.TopicStats getStats(boolean getPreciseBacklog,
boolean subscriptionBacklogSize)
public CompletableFuture<org.apache.pulsar.common.policies.data.PersistentTopicInternalStats> getInternalStats(boolean includeLedgerMetadata)
getInternalStats in interface Topicpublic 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()
getBacklogQuota in interface Topicpublic boolean isBacklogQuotaExceeded(String producerName)
isBacklogQuotaExceeded in interface Topicpublic boolean isBacklogExceeded()
public boolean isReplicated()
isReplicated in interface Topicpublic CompletableFuture<org.apache.pulsar.client.api.MessageId> terminate()
public boolean isOldestMessageExpired(ManagedCursor cursor, long 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 CompactedTopic getCompactedTopic()
public boolean isSystemTopic()
isSystemTopic in interface Topicpublic CompletableFuture<TransactionBuffer> getTransactionBuffer(boolean createIfMissing)
TopicTransactionBuffer of this Topic.getTransactionBuffer in interface TopiccreateIfMissing - Create the TransactionBuffer if missing.public 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, List<org.apache.pulsar.common.api.proto.PulsarApi.MessageIdData> sendMessageList)
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>public MessageDeduplication getMessageDeduplication()
Copyright © 2017–2021 Apache Software Foundation. All rights reserved.