Package org.apache.pulsar.broker.service
Interface Topic
-
- All Known Implementing Classes:
AbstractTopic,NonPersistentTopic,PersistentTopic,SystemTopic
public interface Topic
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interfaceTopic.PublishContext
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Deprecated Methods Modifier and Type Method Description java.util.concurrent.CompletableFuture<java.util.Optional<java.lang.Long>>addProducer(Producer producer, java.util.concurrent.CompletableFuture<java.lang.Void> producerQueuedFuture)Tries to add a producer to the topic.java.util.concurrent.CompletableFuture<org.apache.pulsar.common.protocol.schema.SchemaVersion>addSchema(org.apache.pulsar.common.protocol.schema.SchemaData schema)Add a schema to the topic.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<? extends org.apache.pulsar.common.policies.data.stats.TopicStatsImpl>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>checkSchemaCompatibleForConsumer(org.apache.pulsar.common.protocol.schema.SchemaData schema)Check if schema is compatible with current topic schema.voidcheckTopicPublishThrottlingRate()java.util.concurrent.CompletableFuture<java.lang.Void>close(boolean closeWithoutWaitingClientDisconnect)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()java.util.concurrent.CompletableFuture<org.apache.pulsar.common.protocol.schema.SchemaVersion>deleteSchema()Delete the schema if this topic has a schema defined for it.voiddisableCnxAutoRead()voidenableCnxAutoRead()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)default java.util.Optional<DispatchRateLimiter>getBrokerDispatchRateLimiter()BrokerServicegetBrokerService()Get BrokerService.default java.util.Optional<DispatchRateLimiter>getDispatchRateLimiter()org.apache.pulsar.common.policies.data.HierarchyTopicPoliciesgetHierarchyTopicPolicies()Get HierarchyTopicPolicies.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()java.lang.StringgetName()java.util.Map<java.lang.String,Producer>getProducers()org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<java.lang.String,? extends Replicator>getReplicators()booleangetSchemaValidationEnforced()org.apache.pulsar.common.policies.data.stats.TopicStatsImplgetStats(boolean getPreciseBacklog, boolean subscriptionBacklogSize, boolean getEarliestTimeInBacklog)default java.util.Optional<SubscribeRateLimiter>getSubscribeRateLimiter()SubscriptiongetSubscription(java.lang.String subscription)org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<java.lang.String,? extends Subscription>getSubscriptions()java.util.concurrent.CompletableFuture<java.lang.Boolean>hasSchema()Whether a topic has had a schema defined for it.longincreasePublishLimitedTimes()increase the publishing limited times.voidincrementPublishCount(int numOfMessages, long msgSizeInBytes)java.util.concurrent.CompletableFuture<java.lang.Void>initialize()booleanisBrokerPublishRateExceeded()booleanisEncryptionRequired()booleanisPersistent()booleanisPublishRateExceeded()booleanisReplicated()booleanisResourceGroupPublishRateExceeded(int msgSize, int numMessages)booleanisResourceGroupRateLimitingEnabled()default booleanisSystemTopic()booleanisTopicPublishRateExceeded(int msgSize, int numMessages)java.util.concurrent.CompletableFuture<java.lang.Void>onPoliciesUpdate(org.apache.pulsar.common.policies.data.Policies data)voidpublishMessage(io.netty.buffer.ByteBuf headersAndPayload, 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.voidrecordAddLatency(long latency, java.util.concurrent.TimeUnit unit)record add-latency.voidremoveProducer(Producer producer)voidresetBrokerPublishCountAndEnableReadIfRequired(boolean doneReset)voidresetTopicPublishCountAndEnableReadIfRequired()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 startMessageRollbackDurationSec, boolean replicateSubscriptionState, org.apache.pulsar.common.api.proto.KeySharedMeta keySharedMeta)Deprecated.java.util.concurrent.CompletableFuture<java.lang.Void>truncate()Truncate a topic.java.util.concurrent.CompletableFuture<java.lang.Void>unsubscribe(java.lang.String subName)voidupdateRates(NamespaceStats nsStats, org.apache.pulsar.policies.data.loadbalancer.NamespaceBundleStats currentBundleStats, StatsOutputStream topicStatsStream, ClusterReplicationMetrics clusterReplicationMetrics, java.lang.String namespaceName, boolean hydratePublishers)
-
-
-
Method Detail
-
initialize
java.util.concurrent.CompletableFuture<java.lang.Void> initialize()
-
publishMessage
void publishMessage(io.netty.buffer.ByteBuf headersAndPayload, Topic.PublishContext callback)
-
addProducer
java.util.concurrent.CompletableFuture<java.util.Optional<java.lang.Long>> addProducer(Producer producer, java.util.concurrent.CompletableFuture<java.lang.Void> producerQueuedFuture)
Tries to add a producer to the topic. Several validations will be performed.- Parameters:
producer-producerQueuedFuture- a future that will be triggered if the producer is being queued up prior of getting established- Returns:
- the "topic epoch" if there is one or empty
-
removeProducer
void removeProducer(Producer producer)
-
checkIfTransactionBufferRecoverCompletely
java.util.concurrent.CompletableFuture<java.lang.Void> checkIfTransactionBufferRecoverCompletely(boolean isTxnEnabled)
Wait TransactionBuffer Recovers completely. Take snapshot after TB Recovers completely.- Parameters:
isTxnEnabled-- Returns:
- a future which has completely if isTxn = false. Or a future return by takeSnapshot.
-
recordAddLatency
void recordAddLatency(long latency, java.util.concurrent.TimeUnit unit)record add-latency.
-
increasePublishLimitedTimes
long increasePublishLimitedTimes()
increase the publishing limited times.
-
subscribe
@Deprecated 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 startMessageRollbackDurationSec, boolean replicateSubscriptionState, org.apache.pulsar.common.api.proto.KeySharedMeta keySharedMeta)
Deprecated.
-
subscribe
java.util.concurrent.CompletableFuture<Consumer> subscribe(SubscriptionOption option)
Subscribe a topic.- Parameters:
option-- Returns:
-
createSubscription
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)
-
unsubscribe
java.util.concurrent.CompletableFuture<java.lang.Void> unsubscribe(java.lang.String subName)
-
getSubscriptions
org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<java.lang.String,? extends Subscription> getSubscriptions()
-
delete
java.util.concurrent.CompletableFuture<java.lang.Void> delete()
-
getProducers
java.util.Map<java.lang.String,Producer> getProducers()
-
getName
java.lang.String getName()
-
checkReplication
java.util.concurrent.CompletableFuture<java.lang.Void> checkReplication()
-
close
java.util.concurrent.CompletableFuture<java.lang.Void> close(boolean closeWithoutWaitingClientDisconnect)
-
checkGC
void checkGC()
-
checkInactiveSubscriptions
void checkInactiveSubscriptions()
-
checkBackloggedCursors
void checkBackloggedCursors()
Activate cursors those caught up backlog-threshold entries and deactivate slow cursors which are creating backlog.
-
checkDeduplicationSnapshot
void checkDeduplicationSnapshot()
-
checkMessageExpiry
void checkMessageExpiry()
-
checkMessageDeduplicationInfo
void checkMessageDeduplicationInfo()
-
checkTopicPublishThrottlingRate
void checkTopicPublishThrottlingRate()
-
incrementPublishCount
void incrementPublishCount(int numOfMessages, long msgSizeInBytes)
-
resetTopicPublishCountAndEnableReadIfRequired
void resetTopicPublishCountAndEnableReadIfRequired()
-
resetBrokerPublishCountAndEnableReadIfRequired
void resetBrokerPublishCountAndEnableReadIfRequired(boolean doneReset)
-
isPublishRateExceeded
boolean isPublishRateExceeded()
-
isTopicPublishRateExceeded
boolean isTopicPublishRateExceeded(int msgSize, int numMessages)
-
isResourceGroupRateLimitingEnabled
boolean isResourceGroupRateLimitingEnabled()
-
isResourceGroupPublishRateExceeded
boolean isResourceGroupPublishRateExceeded(int msgSize, int numMessages)
-
isBrokerPublishRateExceeded
boolean isBrokerPublishRateExceeded()
-
disableCnxAutoRead
void disableCnxAutoRead()
-
enableCnxAutoRead
void enableCnxAutoRead()
-
onPoliciesUpdate
java.util.concurrent.CompletableFuture<java.lang.Void> onPoliciesUpdate(org.apache.pulsar.common.policies.data.Policies data)
-
checkBacklogQuotaExceeded
java.util.concurrent.CompletableFuture<java.lang.Void> checkBacklogQuotaExceeded(java.lang.String producerName, org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType backlogQuotaType)
-
isEncryptionRequired
boolean isEncryptionRequired()
-
getSchemaValidationEnforced
boolean getSchemaValidationEnforced()
-
isReplicated
boolean isReplicated()
-
getBacklogQuota
org.apache.pulsar.common.policies.data.BacklogQuota getBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType backlogQuotaType)
-
updateRates
void updateRates(NamespaceStats nsStats, org.apache.pulsar.policies.data.loadbalancer.NamespaceBundleStats currentBundleStats, StatsOutputStream topicStatsStream, ClusterReplicationMetrics clusterReplicationMetrics, java.lang.String namespaceName, boolean hydratePublishers)
-
getSubscription
Subscription getSubscription(java.lang.String subscription)
-
getReplicators
org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<java.lang.String,? extends Replicator> getReplicators()
-
getStats
org.apache.pulsar.common.policies.data.stats.TopicStatsImpl getStats(boolean getPreciseBacklog, boolean subscriptionBacklogSize, boolean getEarliestTimeInBacklog)
-
asyncGetStats
java.util.concurrent.CompletableFuture<? extends org.apache.pulsar.common.policies.data.stats.TopicStatsImpl> asyncGetStats(boolean getPreciseBacklog, boolean subscriptionBacklogSize, boolean getEarliestTimeInBacklog)
-
getInternalStats
java.util.concurrent.CompletableFuture<org.apache.pulsar.common.policies.data.PersistentTopicInternalStats> getInternalStats(boolean includeLedgerMetadata)
-
getLastPosition
org.apache.bookkeeper.mledger.Position getLastPosition()
-
getLastMessageId
java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.MessageId> getLastMessageId()
-
hasSchema
java.util.concurrent.CompletableFuture<java.lang.Boolean> hasSchema()
Whether a topic has had a schema defined for it.
-
addSchema
java.util.concurrent.CompletableFuture<org.apache.pulsar.common.protocol.schema.SchemaVersion> addSchema(org.apache.pulsar.common.protocol.schema.SchemaData schema)
Add a schema to the topic. This will fail if the new schema is incompatible with the current schema.
-
deleteSchema
java.util.concurrent.CompletableFuture<org.apache.pulsar.common.protocol.schema.SchemaVersion> deleteSchema()
Delete the schema if this topic has a schema defined for it.
-
checkSchemaCompatibleForConsumer
java.util.concurrent.CompletableFuture<java.lang.Void> checkSchemaCompatibleForConsumer(org.apache.pulsar.common.protocol.schema.SchemaData schema)
Check if schema is compatible with current topic schema.
-
addSchemaIfIdleOrCheckCompatible
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. Otherwise, check that the passed schema is compatible with what the topic already has.
-
deleteForcefully
java.util.concurrent.CompletableFuture<java.lang.Void> deleteForcefully()
-
getDispatchRateLimiter
default java.util.Optional<DispatchRateLimiter> getDispatchRateLimiter()
-
getSubscribeRateLimiter
default java.util.Optional<SubscribeRateLimiter> getSubscribeRateLimiter()
-
getBrokerDispatchRateLimiter
default java.util.Optional<DispatchRateLimiter> getBrokerDispatchRateLimiter()
-
isSystemTopic
default boolean isSystemTopic()
-
isPersistent
boolean isPersistent()
-
publishTxnMessage
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.- Parameters:
txnID- Transaction IdheadersAndPayload- Message datapublishContext- Publish context
-
endTxn
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.- Parameters:
txnID- Transaction idtxnAction- Transaction action.lowWaterMark- low water mark of this tc- Returns:
-
truncate
java.util.concurrent.CompletableFuture<java.lang.Void> truncate()
Truncate a topic. The truncate operation will move all cursors to the end of the topic and delete all inactive ledgers.- Returns:
-
getBrokerService
BrokerService getBrokerService()
Get BrokerService.- Returns:
-
getHierarchyTopicPolicies
org.apache.pulsar.common.policies.data.HierarchyTopicPolicies getHierarchyTopicPolicies()
Get HierarchyTopicPolicies.- Returns:
-
-