Class NonPersistentTopic
- java.lang.Object
-
- org.apache.pulsar.broker.service.AbstractTopic
-
- org.apache.pulsar.broker.service.nonpersistent.NonPersistentTopic
-
- All Implemented Interfaces:
Topic,TopicPolicyListener<org.apache.pulsar.common.policies.data.TopicPolicies>
public class NonPersistentTopic extends AbstractTopic implements Topic, TopicPolicyListener<org.apache.pulsar.common.policies.data.TopicPolicies>
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.pulsar.broker.service.Topic
Topic.PublishContext
-
-
Field Summary
-
Fields inherited from class org.apache.pulsar.broker.service.AbstractTopic
addEntryLatencyStatsUsec, brokerService, bytesOutFromRemovedSubscriptions, hasBatchMessagePublished, isAllowAutoUpdateSchema, isEncryptionRequired, isFenced, lastActive, lock, msgOutFromRemovedSubscriptions, POLICY_UPDATE_FAILURE_RETRY_TIME_SECONDS, preciseTopicPublishRateLimitingEnable, producers, publishRateLimitedTimes, replicatorPrefix, resourceGroupPublishLimiter, resourceGroupRateLimitingEnabled, schemaValidationEnforced, topic, topicEpoch, topicPolicies, topicPublishRateLimiter
-
-
Constructor Summary
Constructors Constructor Description NonPersistentTopic(java.lang.String topic, BrokerService brokerService)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.concurrent.CompletableFuture<java.lang.Void>addReplicationCluster(java.lang.String remoteCluster, NonPersistentTopic nonPersistentTopic, java.lang.String localCluster)java.util.concurrent.CompletableFuture<java.lang.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.java.util.concurrent.CompletableFuture<org.apache.pulsar.common.policies.data.stats.NonPersistentTopicStatsImpl>asyncGetStats(boolean getPreciseBacklog, boolean subscriptionBacklogSize, boolean getEarliestTimeInBacklog)voidcheckBackloggedCursors()Activate cursors those caught up backlog-threshold entries and deactivate slow cursors which are creating backlog.java.util.concurrent.CompletableFuture<java.lang.Void>checkBacklogQuotaExceeded(java.lang.String producerName, org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType backlogQuotaType)voidcheckDeduplicationSnapshot()voidcheckGC()java.util.concurrent.CompletableFuture<java.lang.Void>checkIfTransactionBufferRecoverCompletely(boolean isTxnEnabled)Wait TransactionBuffer Recovers completely.voidcheckInactiveSubscriptions()voidcheckMessageDeduplicationInfo()voidcheckMessageExpiry()java.util.concurrent.CompletableFuture<java.lang.Void>checkReplication()java.util.concurrent.CompletableFuture<java.lang.Void>close(boolean closeWithoutWaitingClientDisconnect)Close this topic - close all producers and subscriptions associated with this topic.java.util.concurrent.CompletableFuture<Subscription>createSubscription(java.lang.String subscriptionName, org.apache.pulsar.common.api.proto.CommandSubscribe.InitialPosition initialPosition, boolean replicateSubscriptionState, java.util.Map<java.lang.String,java.lang.String> properties)java.util.concurrent.CompletableFuture<java.lang.Void>delete()java.util.concurrent.CompletableFuture<java.lang.Void>deleteForcefully()Forcefully close all producers/consumers/replicators and deletes the topic.java.util.concurrent.CompletableFuture<java.lang.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.BacklogQuotagetBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType backlogQuotaType)java.util.concurrent.CompletableFuture<org.apache.pulsar.common.policies.data.PersistentTopicInternalStats>getInternalStats(boolean includeLedgerMetadata)java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.MessageId>getLastMessageId()org.apache.bookkeeper.mledger.PositiongetLastPosition()intgetNumberOfConsumers()intgetNumberOfSameAddressConsumers(java.lang.String clientAddress)ReplicatorgetPersistentReplicator(java.lang.String remoteCluster)org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<java.lang.String,NonPersistentReplicator>getReplicators()org.apache.pulsar.common.policies.data.stats.NonPersistentTopicStatsImplgetStats(boolean getPreciseBacklog, boolean subscriptionBacklogSize, boolean getEarliestTimeInBacklog)SubscriptiongetSubscription(java.lang.String subscription)org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<java.lang.String,NonPersistentSubscription>getSubscriptions()protected java.util.concurrent.CompletableFuture<java.lang.Long>incrementTopicEpoch(java.util.Optional<java.lang.Long> currentEpoch)java.util.concurrent.CompletableFuture<java.lang.Void>initialize()booleanisActive()booleanisPersistent()booleanisReplicated()protected booleanisTerminated()java.util.concurrent.CompletableFuture<java.lang.Void>onPoliciesUpdate(org.apache.pulsar.common.policies.data.Policies data)voidonUpdate(org.apache.pulsar.common.policies.data.TopicPolicies data)voidpublishMessage(io.netty.buffer.ByteBuf data, Topic.PublishContext callback)voidpublishTxnMessage(org.apache.pulsar.client.api.transaction.TxnID txnID, io.netty.buffer.ByteBuf headersAndPayload, Topic.PublishContext publishContext)Publish Transaction message to this Topic's TransactionBuffer.voidremoveProducer(Producer producer)protected java.util.concurrent.CompletableFuture<java.lang.Long>setTopicEpoch(long newEpoch)java.util.concurrent.CompletableFuture<java.lang.Void>stopReplProducers()java.util.concurrent.CompletableFuture<Consumer>subscribe(SubscriptionOption option)Subscribe a topic.java.util.concurrent.CompletableFuture<Consumer>subscribe(TransportCnx cnx, java.lang.String subscriptionName, long consumerId, org.apache.pulsar.common.api.proto.CommandSubscribe.SubType subType, int priorityLevel, java.lang.String consumerName, boolean isDurable, org.apache.pulsar.client.api.MessageId startMessageId, java.util.Map<java.lang.String,java.lang.String> metadata, boolean readCompacted, org.apache.pulsar.common.api.proto.CommandSubscribe.InitialPosition initialPosition, long resetStartMessageBackInSec, boolean replicateSubscriptionState, org.apache.pulsar.common.api.proto.KeySharedMeta keySharedMeta)java.util.concurrent.CompletableFuture<java.lang.Void>truncate()Truncate a topic.java.util.concurrent.CompletableFuture<java.lang.Void>unsubscribe(java.lang.String subscriptionName)voidupdateRates(NamespaceStats nsStats, org.apache.pulsar.policies.data.loadbalancer.NamespaceBundleStats bundleStats, StatsOutputStream topicStatsStream, ClusterReplicationMetrics replStats, java.lang.String namespace, boolean hydratePublishers)-
Methods inherited from class org.apache.pulsar.broker.service.AbstractTopic
addConsumerToSubscription, addFilteredEntriesCount, addProducer, addSchema, checkSchemaCompatibleForConsumer, checkTopicFenced, checkTopicPublishThrottlingRate, currentUsageCount, decrementUsageCount, deletePartitionedTopicMetadataWhileInactive, deleteSchema, deleteTopicPolicies, disableCnxAutoRead, disableProducerRead, enableCnxAutoRead, enableProducerReadForPublishBufferLimiting, enableProducerReadForPublishRateLimiting, getActiveConsumer, getBrokerPublishRateLimiter, getBrokerService, getBytesInCounter, getBytesOutCounter, getDispatchRate, getFilteredEntriesCount, getHierarchyTopicPolicies, getInactiveTopicPolicies, getMsgInCounter, getMsgOutCounter, getName, getNumberOfSameAddressConsumers, getNumberOfSameAddressProducers, getProducers, getReplicatorDispatchRate, getReplicatorPrefix, getSchemaCompatibilityStrategy, getSchemaValidationEnforced, getSubscribeRate, getSubscriptionDispatchRate, getTopicPolicies, getTopicPublishRateLimiter, getWaitingProducersCount, handleConsumerAdded, handleProducerRemoved, hasLocalProducers, hasSchema, increasePublishLimitedTimes, incrementPublishCount, incrementTopicEpochIfNeeded, internalAddProducer, isBrokerPublishRateExceeded, isConsumersExceededOnTopic, isDeleteWhileInactive, isEncryptionRequired, isExceedMaximumMessageSize, isProducersExceeded, isPublishRateExceeded, isResourceGroupPublishRateExceeded, isResourceGroupRateLimitingEnabled, isSameAddressConsumersExceededOnTopic, isSameAddressProducersExceeded, isTopicPublishRateExceeded, markBatchMessagePublished, recordAddLatency, registerTopicPolicyListener, resetBrokerPublishCountAndEnableReadIfRequired, resetTopicPublishCountAndEnableReadIfRequired, toString, unregisterTopicPolicyListener, updateBrokerDispatchRate, updateBrokerPublishRate, updateBrokerReplicatorDispatchRate, updateBrokerSubscribeRate, updateBrokerSubscriptionDispatchRate, updateBrokerSubscriptionTypesEnabled, updateDispatchRateLimiter, updatePublishDispatcher, updateResourceGroupLimiter, updateTopicPolicy, updateTopicPolicyByNamespacePolicy
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.pulsar.broker.service.Topic
addProducer, addSchema, checkSchemaCompatibleForConsumer, checkTopicPublishThrottlingRate, deleteSchema, disableCnxAutoRead, enableCnxAutoRead, getBrokerDispatchRateLimiter, getBrokerService, getDispatchRateLimiter, getHierarchyTopicPolicies, getName, getProducers, getSchemaValidationEnforced, getSubscribeRateLimiter, hasSchema, increasePublishLimitedTimes, incrementPublishCount, isBrokerPublishRateExceeded, isEncryptionRequired, isPublishRateExceeded, isResourceGroupPublishRateExceeded, isResourceGroupRateLimitingEnabled, isSystemTopic, isTopicPublishRateExceeded, recordAddLatency, resetBrokerPublishCountAndEnableReadIfRequired, resetTopicPublishCountAndEnableReadIfRequired
-
-
-
-
Constructor Detail
-
NonPersistentTopic
public NonPersistentTopic(java.lang.String topic, BrokerService brokerService)
-
-
Method Detail
-
initialize
public java.util.concurrent.CompletableFuture<java.lang.Void> initialize()
- Specified by:
initializein interfaceTopic
-
publishMessage
public void publishMessage(io.netty.buffer.ByteBuf data, Topic.PublishContext callback)- Specified by:
publishMessagein interfaceTopic
-
incrementTopicEpoch
protected java.util.concurrent.CompletableFuture<java.lang.Long> incrementTopicEpoch(java.util.Optional<java.lang.Long> currentEpoch)
- Specified by:
incrementTopicEpochin classAbstractTopic
-
setTopicEpoch
protected java.util.concurrent.CompletableFuture<java.lang.Long> setTopicEpoch(long newEpoch)
- Specified by:
setTopicEpochin classAbstractTopic
-
checkMessageDeduplicationInfo
public void checkMessageDeduplicationInfo()
- Specified by:
checkMessageDeduplicationInfoin interfaceTopic
-
removeProducer
public void removeProducer(Producer producer)
- Specified by:
removeProducerin interfaceTopic- Overrides:
removeProducerin classAbstractTopic
-
checkIfTransactionBufferRecoverCompletely
public java.util.concurrent.CompletableFuture<java.lang.Void> checkIfTransactionBufferRecoverCompletely(boolean isTxnEnabled)
Description copied from interface:TopicWait TransactionBuffer Recovers completely. Take snapshot after TB Recovers completely.- Specified by:
checkIfTransactionBufferRecoverCompletelyin interfaceTopic- Returns:
- a future which has completely if isTxn = false. Or a future return by takeSnapshot.
-
subscribe
public java.util.concurrent.CompletableFuture<Consumer> subscribe(SubscriptionOption option)
Description copied from interface:TopicSubscribe a topic.
-
subscribe
public java.util.concurrent.CompletableFuture<Consumer> subscribe(TransportCnx cnx, java.lang.String subscriptionName, long consumerId, org.apache.pulsar.common.api.proto.CommandSubscribe.SubType subType, int priorityLevel, java.lang.String consumerName, boolean isDurable, org.apache.pulsar.client.api.MessageId startMessageId, java.util.Map<java.lang.String,java.lang.String> metadata, boolean readCompacted, org.apache.pulsar.common.api.proto.CommandSubscribe.InitialPosition initialPosition, long resetStartMessageBackInSec, boolean replicateSubscriptionState, org.apache.pulsar.common.api.proto.KeySharedMeta keySharedMeta)
-
createSubscription
public java.util.concurrent.CompletableFuture<Subscription> createSubscription(java.lang.String subscriptionName, org.apache.pulsar.common.api.proto.CommandSubscribe.InitialPosition initialPosition, boolean replicateSubscriptionState, java.util.Map<java.lang.String,java.lang.String> properties)
- Specified by:
createSubscriptionin interfaceTopic
-
delete
public java.util.concurrent.CompletableFuture<java.lang.Void> delete()
-
deleteForcefully
public java.util.concurrent.CompletableFuture<java.lang.Void> deleteForcefully()
Forcefully close all producers/consumers/replicators and deletes the topic.- Specified by:
deleteForcefullyin interfaceTopic- Returns:
-
close
public java.util.concurrent.CompletableFuture<java.lang.Void> close(boolean closeWithoutWaitingClientDisconnect)
Close this topic - close all producers and subscriptions associated with this topic.
-
stopReplProducers
public java.util.concurrent.CompletableFuture<java.lang.Void> stopReplProducers()
-
checkReplication
public java.util.concurrent.CompletableFuture<java.lang.Void> checkReplication()
- Specified by:
checkReplicationin interfaceTopic
-
addReplicationCluster
protected java.util.concurrent.CompletableFuture<java.lang.Void> addReplicationCluster(java.lang.String remoteCluster, NonPersistentTopic nonPersistentTopic, java.lang.String localCluster)
-
checkMessageExpiry
public void checkMessageExpiry()
- Specified by:
checkMessageExpiryin interfaceTopic
-
getNumberOfConsumers
public int getNumberOfConsumers()
- Specified by:
getNumberOfConsumersin classAbstractTopic
-
getNumberOfSameAddressConsumers
public int getNumberOfSameAddressConsumers(java.lang.String clientAddress)
- Specified by:
getNumberOfSameAddressConsumersin classAbstractTopic
-
getSubscriptions
public org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<java.lang.String,NonPersistentSubscription> getSubscriptions()
- Specified by:
getSubscriptionsin interfaceTopic
-
getReplicators
public org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<java.lang.String,NonPersistentReplicator> getReplicators()
- Specified by:
getReplicatorsin interfaceTopic
-
getSubscription
public Subscription getSubscription(java.lang.String subscription)
- Specified by:
getSubscriptionin interfaceTopic
-
getPersistentReplicator
public Replicator getPersistentReplicator(java.lang.String remoteCluster)
-
updateRates
public void updateRates(NamespaceStats nsStats, org.apache.pulsar.policies.data.loadbalancer.NamespaceBundleStats bundleStats, StatsOutputStream topicStatsStream, ClusterReplicationMetrics replStats, java.lang.String namespace, boolean hydratePublishers)
- Specified by:
updateRatesin interfaceTopic
-
getStats
public org.apache.pulsar.common.policies.data.stats.NonPersistentTopicStatsImpl getStats(boolean getPreciseBacklog, boolean subscriptionBacklogSize, boolean getEarliestTimeInBacklog)
-
asyncGetStats
public java.util.concurrent.CompletableFuture<org.apache.pulsar.common.policies.data.stats.NonPersistentTopicStatsImpl> asyncGetStats(boolean getPreciseBacklog, boolean subscriptionBacklogSize, boolean getEarliestTimeInBacklog)- Specified by:
asyncGetStatsin interfaceTopic
-
getInternalStats
public java.util.concurrent.CompletableFuture<org.apache.pulsar.common.policies.data.PersistentTopicInternalStats> getInternalStats(boolean includeLedgerMetadata)
- Specified by:
getInternalStatsin interfaceTopic
-
isActive
public boolean isActive()
-
checkInactiveSubscriptions
public void checkInactiveSubscriptions()
- Specified by:
checkInactiveSubscriptionsin interfaceTopic
-
checkBackloggedCursors
public void checkBackloggedCursors()
Description copied from interface:TopicActivate cursors those caught up backlog-threshold entries and deactivate slow cursors which are creating backlog.- Specified by:
checkBackloggedCursorsin interfaceTopic
-
checkDeduplicationSnapshot
public void checkDeduplicationSnapshot()
- Specified by:
checkDeduplicationSnapshotin interfaceTopic
-
onPoliciesUpdate
public java.util.concurrent.CompletableFuture<java.lang.Void> onPoliciesUpdate(org.apache.pulsar.common.policies.data.Policies data)
- Specified by:
onPoliciesUpdatein interfaceTopic
-
onUpdate
public void onUpdate(org.apache.pulsar.common.policies.data.TopicPolicies data)
- Specified by:
onUpdatein interfaceTopicPolicyListener<org.apache.pulsar.common.policies.data.TopicPolicies>
-
getBacklogQuota
public org.apache.pulsar.common.policies.data.BacklogQuota getBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType backlogQuotaType)
- Specified by:
getBacklogQuotain interfaceTopic- Returns:
- Backlog quota for topic
-
checkBacklogQuotaExceeded
public java.util.concurrent.CompletableFuture<java.lang.Void> checkBacklogQuotaExceeded(java.lang.String producerName, org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType backlogQuotaType)- Specified by:
checkBacklogQuotaExceededin interfaceTopic- Returns:
- quota exceeded status for blocking producer creation
-
isReplicated
public boolean isReplicated()
- Specified by:
isReplicatedin interfaceTopic
-
unsubscribe
public java.util.concurrent.CompletableFuture<java.lang.Void> unsubscribe(java.lang.String subscriptionName)
- Specified by:
unsubscribein interfaceTopic
-
getLastPosition
public org.apache.bookkeeper.mledger.Position getLastPosition()
- Specified by:
getLastPositionin interfaceTopic
-
getLastMessageId
public java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.MessageId> getLastMessageId()
- Specified by:
getLastMessageIdin interfaceTopic
-
addSchemaIfIdleOrCheckCompatible
public java.util.concurrent.CompletableFuture<java.lang.Void> addSchemaIfIdleOrCheckCompatible(org.apache.pulsar.common.protocol.schema.SchemaData schema)
Description copied from interface:TopicIf the topic is idle (no producers, no entries, no subscribers and no existing schema), add the passed schema to the topic. Otherwise, check that the passed schema is compatible with what the topic already has.- Specified by:
addSchemaIfIdleOrCheckCompatiblein interfaceTopic
-
publishTxnMessage
public void publishTxnMessage(org.apache.pulsar.client.api.transaction.TxnID txnID, io.netty.buffer.ByteBuf headersAndPayload, Topic.PublishContext publishContext)Description copied from interface:TopicPublish Transaction message to this Topic's TransactionBuffer.- Specified by:
publishTxnMessagein interfaceTopic- Parameters:
txnID- Transaction IdheadersAndPayload- Message datapublishContext- Publish context
-
endTxn
public java.util.concurrent.CompletableFuture<java.lang.Void> endTxn(org.apache.pulsar.client.api.transaction.TxnID txnID, int txnAction, long lowWaterMark)Description copied from interface:TopicEnd the transaction in this topic.
-
truncate
public java.util.concurrent.CompletableFuture<java.lang.Void> truncate()
Description copied from interface:TopicTruncate a topic. The truncate operation will move all cursors to the end of the topic and delete all inactive ledgers.
-
isTerminated
protected boolean isTerminated()
- Specified by:
isTerminatedin classAbstractTopic
-
isPersistent
public boolean isPersistent()
- Specified by:
isPersistentin interfaceTopic
-
-