Class NonPersistentDispatcherMultipleConsumers
- java.lang.Object
-
- org.apache.pulsar.broker.service.AbstractBaseDispatcher
-
- org.apache.pulsar.broker.service.AbstractDispatcherMultipleConsumers
-
- org.apache.pulsar.broker.service.nonpersistent.NonPersistentDispatcherMultipleConsumers
-
- All Implemented Interfaces:
Dispatcher,NonPersistentDispatcher
- Direct Known Subclasses:
NonPersistentStickyKeyDispatcherMultipleConsumers
public class NonPersistentDispatcherMultipleConsumers extends AbstractDispatcherMultipleConsumers implements NonPersistentDispatcher
-
-
Field Summary
Fields Modifier and Type Field Description protected org.apache.pulsar.common.stats.RatemsgDropprotected Subscriptionsubscriptionprotected static java.util.concurrent.atomic.AtomicIntegerFieldUpdater<NonPersistentDispatcherMultipleConsumers>TOTAL_AVAILABLE_PERMITS_UPDATER-
Fields inherited from class org.apache.pulsar.broker.service.AbstractDispatcherMultipleConsumers
consumerList, consumerSet, currentConsumerRoundRobinIndex, FALSE, IS_CLOSED_UPDATER, TRUE
-
Fields inherited from class org.apache.pulsar.broker.service.AbstractBaseDispatcher
serviceConfig
-
-
Constructor Summary
Constructors Constructor Description NonPersistentDispatcherMultipleConsumers(NonPersistentTopic topic, Subscription subscription)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddConsumer(Consumer consumer)booleancanUnsubscribe(Consumer consumer)java.util.concurrent.CompletableFuture<java.lang.Void>close()mark dispatcher closed to stop new incoming requests and disconnect all consumers.voidconsumerFlow(Consumer consumer, int additionalNumberOfMessages)Indicates that this consumer is now ready to receive more messages.java.util.concurrent.CompletableFuture<java.lang.Void>disconnectActiveConsumers(boolean isResetCursor)Disconnect active consumers.java.util.concurrent.CompletableFuture<java.lang.Void>disconnectAllConsumers(boolean isResetCursor)disconnect all consumers.java.util.concurrent.CopyOnWriteArrayList<Consumer>getConsumers()org.apache.pulsar.common.stats.RategetMessageDropRate()RedeliveryTrackergetRedeliveryTracker()org.apache.pulsar.common.api.proto.CommandSubscribe.SubTypegetType()booleanhasPermits()booleanisConsumerAvailable(Consumer consumer)booleanisConsumerConnected()protected booleanisConsumersExceededOnSubscription()Determine whether the number of consumers on the subscription reaches the threshold.voidremoveConsumer(Consumer consumer)voidreset()mark dispatcher open to serve new incoming requests.voidresetCloseFuture()voidsendMessages(java.util.List<org.apache.bookkeeper.mledger.Entry> entries)-
Methods inherited from class org.apache.pulsar.broker.service.AbstractDispatcherMultipleConsumers
cancelPendingRead, getNextConsumer, getRandomConsumer, isClosed
-
Methods inherited from class org.apache.pulsar.broker.service.AbstractBaseDispatcher
computeReadLimits, filterEntriesForConsumer, filterEntriesForConsumer, isConsumersExceededOnSubscription, peekStickyKey, updateEntryWrapperWithMetadata
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.pulsar.broker.service.Dispatcher
checkAndUnblockIfStuck, clearDelayedMessages, cursorIsReset, disconnectAllConsumers, getNumberOfDelayedMessages, getRateLimiter, initializeDispatchRateLimiterIfNeeded, isClosed, markDeletePositionMoveForward, trackDelayedDelivery, updateRateLimiter
-
Methods inherited from interface org.apache.pulsar.broker.service.nonpersistent.NonPersistentDispatcher
addUnAckedMessages, redeliverUnacknowledgedMessages, redeliverUnacknowledgedMessages
-
-
-
-
Field Detail
-
subscription
protected final Subscription subscription
-
msgDrop
protected final org.apache.pulsar.common.stats.Rate msgDrop
-
TOTAL_AVAILABLE_PERMITS_UPDATER
protected static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<NonPersistentDispatcherMultipleConsumers> TOTAL_AVAILABLE_PERMITS_UPDATER
-
-
Constructor Detail
-
NonPersistentDispatcherMultipleConsumers
public NonPersistentDispatcherMultipleConsumers(NonPersistentTopic topic, Subscription subscription)
-
-
Method Detail
-
addConsumer
public void addConsumer(Consumer consumer) throws BrokerServiceException
- Specified by:
addConsumerin interfaceDispatcher- Specified by:
addConsumerin interfaceNonPersistentDispatcher- Throws:
BrokerServiceException
-
isConsumersExceededOnSubscription
protected boolean isConsumersExceededOnSubscription()
Description copied from class:AbstractBaseDispatcherDetermine whether the number of consumers on the subscription reaches the threshold.- Specified by:
isConsumersExceededOnSubscriptionin classAbstractBaseDispatcher- Returns:
-
removeConsumer
public void removeConsumer(Consumer consumer) throws BrokerServiceException
- Specified by:
removeConsumerin interfaceDispatcher- Specified by:
removeConsumerin interfaceNonPersistentDispatcher- Throws:
BrokerServiceException
-
isConsumerConnected
public boolean isConsumerConnected()
- Specified by:
isConsumerConnectedin interfaceDispatcher- Specified by:
isConsumerConnectedin interfaceNonPersistentDispatcher- Overrides:
isConsumerConnectedin classAbstractDispatcherMultipleConsumers
-
getConsumers
public java.util.concurrent.CopyOnWriteArrayList<Consumer> getConsumers()
- Specified by:
getConsumersin interfaceDispatcher- Specified by:
getConsumersin interfaceNonPersistentDispatcher- Overrides:
getConsumersin classAbstractDispatcherMultipleConsumers
-
canUnsubscribe
public boolean canUnsubscribe(Consumer consumer)
- Specified by:
canUnsubscribein interfaceDispatcher- Specified by:
canUnsubscribein interfaceNonPersistentDispatcher- Overrides:
canUnsubscribein classAbstractDispatcherMultipleConsumers
-
close
public java.util.concurrent.CompletableFuture<java.lang.Void> close()
Description copied from interface:Dispatchermark dispatcher closed to stop new incoming requests and disconnect all consumers.- Specified by:
closein interfaceDispatcher- Specified by:
closein interfaceNonPersistentDispatcher- Returns:
-
consumerFlow
public void consumerFlow(Consumer consumer, int additionalNumberOfMessages)
Description copied from interface:DispatcherIndicates that this consumer is now ready to receive more messages.- Specified by:
consumerFlowin interfaceDispatcher
-
disconnectAllConsumers
public java.util.concurrent.CompletableFuture<java.lang.Void> disconnectAllConsumers(boolean isResetCursor)
Description copied from interface:Dispatcherdisconnect all consumers.- Specified by:
disconnectAllConsumersin interfaceDispatcher- Specified by:
disconnectAllConsumersin interfaceNonPersistentDispatcher- Returns:
-
disconnectActiveConsumers
public java.util.concurrent.CompletableFuture<java.lang.Void> disconnectActiveConsumers(boolean isResetCursor)
Description copied from interface:DispatcherDisconnect active consumers.- Specified by:
disconnectActiveConsumersin interfaceDispatcher
-
resetCloseFuture
public void resetCloseFuture()
- Specified by:
resetCloseFuturein interfaceDispatcher- Overrides:
resetCloseFuturein classAbstractBaseDispatcher
-
reset
public void reset()
Description copied from interface:Dispatchermark dispatcher open to serve new incoming requests.- Specified by:
resetin interfaceDispatcher- Specified by:
resetin interfaceNonPersistentDispatcher
-
getType
public org.apache.pulsar.common.api.proto.CommandSubscribe.SubType getType()
- Specified by:
getTypein interfaceDispatcher- Specified by:
getTypein interfaceNonPersistentDispatcher- Overrides:
getTypein classAbstractDispatcherMultipleConsumers
-
getRedeliveryTracker
public RedeliveryTracker getRedeliveryTracker()
- Specified by:
getRedeliveryTrackerin interfaceDispatcher
-
sendMessages
public void sendMessages(java.util.List<org.apache.bookkeeper.mledger.Entry> entries)
- Specified by:
sendMessagesin interfaceNonPersistentDispatcher
-
hasPermits
public boolean hasPermits()
- Specified by:
hasPermitsin interfaceNonPersistentDispatcher
-
getMessageDropRate
public org.apache.pulsar.common.stats.Rate getMessageDropRate()
- Specified by:
getMessageDropRatein interfaceNonPersistentDispatcher
-
isConsumerAvailable
public boolean isConsumerAvailable(Consumer consumer)
- Specified by:
isConsumerAvailablein classAbstractDispatcherMultipleConsumers
-
-