Class PersistentSubscription

java.lang.Object
org.apache.pulsar.broker.service.AbstractSubscription
org.apache.pulsar.broker.service.persistent.PersistentSubscription
All Implemented Interfaces:
MessageExpirer, Subscription
Direct Known Subclasses:
PulsarCompactorSubscription

public class PersistentSubscription extends AbstractSubscription
  • Field Details

  • Constructor Details

  • Method Details

    • updateLastMarkDeleteAdvancedTimestamp

      public void updateLastMarkDeleteAdvancedTimestamp()
    • interceptor

      public BrokerInterceptor interceptor()
    • getName

      public String getName()
    • getTopic

      public Topic getTopic()
    • isReplicated

      public boolean isReplicated()
    • setReplicated

      public boolean setReplicated(boolean replicated)
    • addConsumer

      public CompletableFuture<Void> addConsumer(Consumer consumer)
    • removeConsumer

      public void removeConsumer(Consumer consumer, boolean isResetCursor) throws BrokerServiceException
      Throws:
      BrokerServiceException
    • deactivateCursor

      public void deactivateCursor()
    • consumerFlow

      public void consumerFlow(Consumer consumer, int additionalNumberOfMessages)
    • acknowledgeMessage

      public void acknowledgeMessage(List<Position> positions, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, Map<String,Long> properties)
    • transactionIndividualAcknowledge

      public CompletableFuture<Void> transactionIndividualAcknowledge(org.apache.pulsar.client.api.transaction.TxnID txnId, List<org.apache.commons.lang3.tuple.MutablePair<Position,Integer>> positions)
    • transactionCumulativeAcknowledge

      public CompletableFuture<Void> transactionCumulativeAcknowledge(org.apache.pulsar.client.api.transaction.TxnID txnId, List<Position> positions)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getTopicName

      public String getTopicName()
    • getType

      public org.apache.pulsar.common.api.proto.CommandSubscribe.SubType getType()
    • getTypeString

      public String getTypeString()
    • analyzeBacklog

      public CompletableFuture<AnalyzeBacklogResult> analyzeBacklog(Optional<Position> position)
    • clearBacklog

      public CompletableFuture<Void> clearBacklog()
    • skipMessages

      public CompletableFuture<Void> skipMessages(int numMessagesToSkip)
    • resetCursor

      public CompletableFuture<Void> resetCursor(long timestamp)
    • resetCursor

      public CompletableFuture<Void> resetCursor(Position finalPosition)
    • peekNthMessage

      public CompletableFuture<Entry> peekNthMessage(int messagePosition)
    • getNumberOfEntriesInBacklog

      public long getNumberOfEntriesInBacklog(boolean getPreciseBacklog)
    • getDispatcher

      public Dispatcher getDispatcher()
    • getNumberOfEntriesSinceFirstNotAckedMessage

      public long getNumberOfEntriesSinceFirstNotAckedMessage()
    • getTotalNonContiguousDeletedMessagesRange

      public int getTotalNonContiguousDeletedMessagesRange()
    • disconnect

      public CompletableFuture<Void> disconnect(Optional<BrokerLookupData> assignedBrokerLookupData)
      Disconnect all consumers from this subscription.
      Returns:
      CompletableFuture indicating the completion of the operation.
    • close

      public CompletableFuture<Void> close(boolean disconnectConsumers, Optional<BrokerLookupData> assignedBrokerLookupData)
      Fence this subscription and optionally disconnect all consumers.
      Returns:
      CompletableFuture indicating the completion of the operation.
    • resumeAfterFence

      public void resumeAfterFence()
      Resume subscription after topic deletion or close failure.
    • delete

      public CompletableFuture<Void> delete()
      Delete the subscription by closing and deleting its managed cursor if no consumers are connected to it. Handle unsubscribe call from admin layer.
      Returns:
      CompletableFuture indicating the completion of delete operation
    • deleteForcefully

      public CompletableFuture<Void> deleteForcefully()
      Forcefully close all consumers and deletes the subscription.
      Returns:
    • doUnsubscribe

      public CompletableFuture<Void> doUnsubscribe(Consumer consumer)
      Handle unsubscribe command from the client API Check with the dispatcher is this consumer can proceed with unsubscribe.
      Parameters:
      consumer - consumer object that is initiating the unsubscribe operation
      Returns:
      CompletableFuture indicating the completion of unsubscribe operation
    • doUnsubscribe

      public CompletableFuture<Void> doUnsubscribe(Consumer consumer, boolean force)
      Handle unsubscribe command from the client API Check with the dispatcher is this consumer can proceed with unsubscribe.
      Parameters:
      consumer - consumer object that is initiating the unsubscribe operation
      force - unsubscribe forcefully by disconnecting consumers and closing subscription
      Returns:
      CompletableFuture indicating the completion of unsubscribe operation
    • getConsumers

      public List<Consumer> getConsumers()
    • expireMessages

      public boolean expireMessages(int messageTTLInSeconds)
    • expireMessages

      public boolean expireMessages(Position position)
    • getExpiredMessageRate

      public double getExpiredMessageRate()
    • getExpiryMonitor

      public PersistentMessageExpiryMonitor getExpiryMonitor()
    • estimateBacklogSize

      public long estimateBacklogSize()
    • getStatsAsync

      public CompletableFuture<org.apache.pulsar.common.policies.data.stats.SubscriptionStatsImpl> getStatsAsync(GetStatsOptions getStatsOptions)
    • redeliverUnacknowledgedMessages

      public void redeliverUnacknowledgedMessages(Consumer consumer, long consumerEpoch)
    • redeliverUnacknowledgedMessages

      public void redeliverUnacknowledgedMessages(Consumer consumer, List<Position> positions)
    • addUnAckedMessages

      public void addUnAckedMessages(int unAckMessages)
    • getNumberOfEntriesDelayed

      public long getNumberOfEntriesDelayed()
    • markTopicWithBatchMessagePublished

      public void markTopicWithBatchMessagePublished()
    • isSubscriptionMigrated

      public boolean isSubscriptionMigrated()
    • getSubscriptionProperties

      public Map<String,String> getSubscriptionProperties()
    • getPositionInPendingAck

      public Position getPositionInPendingAck(Position position)
    • updateSubscriptionProperties

      public CompletableFuture<Void> updateSubscriptionProperties(Map<String,String> subscriptionProperties)
    • mergeCursorProperties

      protected Map<String,Long> mergeCursorProperties(Map<String,Long> userProperties)
      Return a merged map that contains the cursor properties specified by used (eg. when using compaction subscription) and the subscription properties.
    • processReplicatedSubscriptionSnapshot

      public void processReplicatedSubscriptionSnapshot(org.apache.pulsar.common.api.proto.ReplicatedSubscriptionsSnapshot snapshot)
    • endTxn

      public CompletableFuture<Void> endTxn(long txnidMostBits, long txnidLeastBits, int txnAction, long lowWaterMark)
    • getCursor

      public ManagedCursor getCursor()
    • syncBatchPositionBitSetForPendingAck

      public void syncBatchPositionBitSetForPendingAck(Position position)
    • checkIsCanDeleteConsumerPendingAck

      public boolean checkIsCanDeleteConsumerPendingAck(Position position)
    • getTransactionPendingAckStats

      public org.apache.pulsar.common.policies.data.TransactionPendingAckStats getTransactionPendingAckStats(boolean lowWaterMarks)
    • checkAndUnblockIfStuck

      public boolean checkAndUnblockIfStuck()
    • getTransactionInPendingAckStats

      public org.apache.pulsar.common.policies.data.TransactionInPendingAckStats getTransactionInPendingAckStats(org.apache.pulsar.client.api.transaction.TxnID txnID)
    • getPendingAckManageLedger

      public CompletableFuture<ManagedLedger> getPendingAckManageLedger()
    • checkIfPendingAckStoreInit

      public boolean checkIfPendingAckStoreInit()
    • checkPositionInPendingAckState

      public org.apache.pulsar.common.stats.PositionInPendingAckStats checkPositionInPendingAckState(Position position, Integer batchIndex)