Class PersistentDispatcherSingleActiveConsumer
java.lang.Object
org.apache.pulsar.broker.service.EntryFilterSupport
org.apache.pulsar.broker.service.AbstractBaseDispatcher
org.apache.pulsar.broker.service.AbstractDispatcherSingleActiveConsumer
org.apache.pulsar.broker.service.persistent.PersistentDispatcherSingleActiveConsumer
- All Implemented Interfaces:
org.apache.bookkeeper.mledger.AsyncCallbacks.ReadEntriesCallback,Dispatcher
- Direct Known Subclasses:
PersistentStreamingDispatcherSingleActiveConsumer
public class PersistentDispatcherSingleActiveConsumer
extends AbstractDispatcherSingleActiveConsumer
implements Dispatcher, org.apache.bookkeeper.mledger.AsyncCallbacks.ReadEntriesCallback
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected final Stringprotected intprotected final org.apache.pulsar.client.impl.Backoffprotected final PersistentTopicFields inherited from class org.apache.pulsar.broker.service.AbstractDispatcherSingleActiveConsumer
ACTIVE_CONSUMER_UPDATER, closeFuture, consumers, cursor, FALSE, IS_CLOSED_UPDATER, isFirstRead, isKeyHashRangeFiltered, partitionIndex, stickyKeyConsumerSelector, subscriptionType, topicName, TRUEFields inherited from class org.apache.pulsar.broker.service.AbstractBaseDispatcher
dispatchThrottlingOnBatchMessageEnabled, serviceConfigFields inherited from class org.apache.pulsar.broker.service.EntryFilterSupport
entryFilters, filterContext, subscription -
Constructor Summary
ConstructorsConstructorDescriptionPersistentDispatcherSingleActiveConsumer(org.apache.bookkeeper.mledger.ManagedCursor cursor, org.apache.pulsar.common.api.proto.CommandSubscribe.SubType subscriptionType, int partitionIndex, PersistentTopic topic, Subscription subscription) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddUnAckedMessages(int unAckMessages) calculateToRead(Consumer consumer) protected voidbooleanChecks if dispatcher is stuck and unblocks the dispatch if needed.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.protected voiddispatchEntriesToConsumer(Consumer currentConsumer, List<org.apache.bookkeeper.mledger.Entry> entries, EntryBatchSizes batchSizes, EntryBatchIndexesAcks batchIndexesAcks, SendMessageInfo sendMessageInfo, long epoch) booleanvoidinternalReadEntriesComplete(List<org.apache.bookkeeper.mledger.Entry> entries, Object obj) protected booleanDetermine whether the number of consumers on the subscription reaches the threshold.voidreadEntriesComplete(List<org.apache.bookkeeper.mledger.Entry> entries, Object obj) voidreadEntriesFailed(org.apache.bookkeeper.mledger.ManagedLedgerException exception, Object ctx) protected voidreadMoreEntries(Consumer consumer) voidredeliverUnacknowledgedMessages(Consumer consumer, long consumerEpoch) voidredeliverUnacknowledgedMessages(Consumer consumer, List<org.apache.bookkeeper.mledger.impl.PositionImpl> positions) protected voidprotected voidvoidMethods inherited from class org.apache.pulsar.broker.service.AbstractDispatcherSingleActiveConsumer
addConsumer, canUnsubscribe, disconnectActiveConsumers, disconnectAllConsumers, getActiveConsumer, getConsumers, getType, isClosed, isConsumerConnected, notifyActiveConsumerChanged, pickAndScheduleActiveConsumer, removeConsumer, reset, resetCloseFutureMethods inherited from class org.apache.pulsar.broker.service.AbstractBaseDispatcher
computeReadLimits, filterEntriesForConsumer, filterEntriesForConsumer, getFilterAcceptedMsgCount, getFilterProcessedMsgCount, getFilterRejectedMsgCount, getFilterRescheduledMsgCount, getSubscriptionName, isConsumersExceededOnSubscription, peekStickyKey, reachDispatchRateLimit, updateMessagesToRead, updatePendingBytesToDispatchMethods inherited from class org.apache.pulsar.broker.service.EntryFilterSupport
runFiltersForEntryMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.pulsar.broker.service.Dispatcher
addConsumer, canUnsubscribe, clearDelayedMessages, cursorIsReset, disconnectActiveConsumers, disconnectAllConsumers, disconnectAllConsumers, getConsumers, getFilterAcceptedMsgCount, getFilterProcessedMsgCount, getFilterRejectedMsgCount, getFilterRescheduledMsgCount, getNumberOfDelayedMessages, getType, isClosed, isConsumerConnected, markDeletePositionMoveForward, removeConsumer, reset, resetCloseFuture, trackDelayedDelivery
-
Field Details
-
topic
-
name
-
havePendingRead
protected volatile boolean havePendingRead -
readBatchSize
protected volatile int readBatchSize -
readFailureBackoff
protected final org.apache.pulsar.client.impl.Backoff readFailureBackoff
-
-
Constructor Details
-
PersistentDispatcherSingleActiveConsumer
public PersistentDispatcherSingleActiveConsumer(org.apache.bookkeeper.mledger.ManagedCursor cursor, org.apache.pulsar.common.api.proto.CommandSubscribe.SubType subscriptionType, int partitionIndex, PersistentTopic topic, Subscription subscription)
-
-
Method Details
-
scheduleReadOnActiveConsumer
protected void scheduleReadOnActiveConsumer()- Specified by:
scheduleReadOnActiveConsumerin classAbstractDispatcherSingleActiveConsumer
-
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:
-
cancelPendingRead
protected void cancelPendingRead()- Specified by:
cancelPendingReadin classAbstractDispatcherSingleActiveConsumer
-
readEntriesComplete
- Specified by:
readEntriesCompletein interfaceorg.apache.bookkeeper.mledger.AsyncCallbacks.ReadEntriesCallback
-
internalReadEntriesComplete
-
dispatchEntriesToConsumer
protected void dispatchEntriesToConsumer(Consumer currentConsumer, List<org.apache.bookkeeper.mledger.Entry> entries, EntryBatchSizes batchSizes, EntryBatchIndexesAcks batchIndexesAcks, SendMessageInfo sendMessageInfo, long epoch) -
consumerFlow
Description copied from interface:DispatcherIndicates that this consumer is now ready to receive more messages.- Specified by:
consumerFlowin interfaceDispatcher
-
redeliverUnacknowledgedMessages
- Specified by:
redeliverUnacknowledgedMessagesin interfaceDispatcher
-
redeliverUnacknowledgedMessages
public void redeliverUnacknowledgedMessages(Consumer consumer, List<org.apache.bookkeeper.mledger.impl.PositionImpl> positions) - Specified by:
redeliverUnacknowledgedMessagesin interfaceDispatcher
-
readMoreEntries
- Specified by:
readMoreEntriesin classAbstractDispatcherSingleActiveConsumer
-
reScheduleRead
protected void reScheduleRead()- Specified by:
reScheduleReadin classAbstractBaseDispatcher
-
calculateToRead
-
readEntriesFailed
public void readEntriesFailed(org.apache.bookkeeper.mledger.ManagedLedgerException exception, Object ctx) - Specified by:
readEntriesFailedin interfaceorg.apache.bookkeeper.mledger.AsyncCallbacks.ReadEntriesCallback
-
addUnAckedMessages
public void addUnAckedMessages(int unAckMessages) - Specified by:
addUnAckedMessagesin interfaceDispatcher
-
getRedeliveryTracker
- Specified by:
getRedeliveryTrackerin interfaceDispatcher
-
getRateLimiter
- Specified by:
getRateLimiterin interfaceDispatcher
-
updateRateLimiter
public void updateRateLimiter()- Specified by:
updateRateLimiterin interfaceDispatcher
-
initializeDispatchRateLimiterIfNeeded
public boolean initializeDispatchRateLimiterIfNeeded()- Specified by:
initializeDispatchRateLimiterIfNeededin interfaceDispatcher
-
close
Description copied from interface:Dispatchermark dispatcher closed to stop new incoming requests and disconnect all consumers.- Specified by:
closein interfaceDispatcher- Overrides:
closein classAbstractDispatcherSingleActiveConsumer- Returns:
-
checkAndUnblockIfStuck
public boolean checkAndUnblockIfStuck()Description copied from interface:DispatcherChecks if dispatcher is stuck and unblocks the dispatch if needed.- Specified by:
checkAndUnblockIfStuckin interfaceDispatcher
-