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:
AsyncCallbacks.ReadEntriesCallback
,Dispatcher
public class PersistentDispatcherSingleActiveConsumer
extends AbstractDispatcherSingleActiveConsumer
implements Dispatcher, AsyncCallbacks.ReadEntriesCallback
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
-
Field Summary
Modifier and TypeFieldDescriptionprotected final Executor
protected boolean
protected final String
protected int
protected final Backoff
protected final PersistentTopic
Fields 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, TRUE
Fields inherited from class org.apache.pulsar.broker.service.AbstractBaseDispatcher
dispatchThrottlingOnBatchMessageEnabled, serviceConfig
Fields inherited from class org.apache.pulsar.broker.service.EntryFilterSupport
entryFilters, filterContext, hasFilter, subscription
-
Constructor Summary
ConstructorDescriptionPersistentDispatcherSingleActiveConsumer
(ManagedCursor cursor, org.apache.pulsar.common.api.proto.CommandSubscribe.SubType subscriptionType, int partitionIndex, PersistentTopic topic, Subscription subscription) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addUnAckedMessages
(int unAckMessages) calculateToRead
(Consumer consumer) protected void
boolean
Checks if dispatcher is stuck and unblocks the dispatch if needed.void
consumerFlow
(Consumer consumer, int additionalNumberOfMessages) Indicates that this consumer is now ready to receive more messages.protected void
dispatchEntriesToConsumer
(Consumer currentConsumer, List<Entry> entries, EntryBatchSizes batchSizes, EntryBatchIndexesAcks batchIndexesAcks, SendMessageInfo sendMessageInfo, long epoch) boolean
protected boolean
Determine whether the number of consumers on the subscription reaches the threshold.void
readEntriesComplete
(List<Entry> entries, Object obj) void
readEntriesFailed
(ManagedLedgerException exception, Object ctx) void
redeliverUnacknowledgedMessages
(Consumer consumer, long consumerEpoch) void
redeliverUnacknowledgedMessages
(Consumer consumer, List<PositionImpl> positions) protected void
protected void
Methods inherited from class org.apache.pulsar.broker.service.AbstractDispatcherSingleActiveConsumer
addConsumer, canUnsubscribe, close, disconnectActiveConsumers, disconnectAllConsumers, getActiveConsumer, getConsumers, getType, isClosed, isConsumerConnected, notifyActiveConsumerChanged, pickAndScheduleActiveConsumer, removeConsumer, reset, resetCloseFuture
Methods inherited from class org.apache.pulsar.broker.service.AbstractBaseDispatcher
acquirePermitsForDeliveredMessages, checkAndApplyReachedEndOfTopicOrTopicMigration, checkAndApplyReachedEndOfTopicOrTopicMigration, computeReadLimits, filterEntriesForConsumer, filterEntriesForConsumer, getFilterAcceptedMsgCount, getFilterProcessedMsgCount, getFilterRejectedMsgCount, getFilterRescheduledMsgCount, getSubscriptionName, isConsumersExceededOnSubscription, peekStickyKey, updateMessagesToRead, updatePendingBytesToDispatch
Methods inherited from class org.apache.pulsar.broker.service.EntryFilterSupport
runFiltersForEntry
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
addConsumer, canUnsubscribe, clearDelayedMessages, close, close, cursorIsReset, disconnectActiveConsumers, disconnectAllConsumers, disconnectAllConsumers, disconnectAllConsumers, getConsumers, getFilterAcceptedMsgCount, getFilterProcessedMsgCount, getFilterRejectedMsgCount, getFilterRescheduledMsgCount, getNumberOfDelayedMessages, getType, isClosed, isConsumerConnected, markDeletePositionMoveForward, removeConsumer, reset, resetCloseFuture, trackDelayedDelivery, updateRateLimiter
-
Field Details
-
topic
-
executor
-
name
-
havePendingRead
protected volatile boolean havePendingRead -
readBatchSize
protected volatile int readBatchSize -
readFailureBackoff
-
-
Constructor Details
-
PersistentDispatcherSingleActiveConsumer
public PersistentDispatcherSingleActiveConsumer(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:
scheduleReadOnActiveConsumer
in classAbstractDispatcherSingleActiveConsumer
-
isConsumersExceededOnSubscription
protected boolean isConsumersExceededOnSubscription()Description copied from class:AbstractBaseDispatcher
Determine whether the number of consumers on the subscription reaches the threshold.- Specified by:
isConsumersExceededOnSubscription
in classAbstractBaseDispatcher
- Returns:
-
cancelPendingRead
protected void cancelPendingRead()- Specified by:
cancelPendingRead
in classAbstractDispatcherSingleActiveConsumer
-
readEntriesComplete
- Specified by:
readEntriesComplete
in interfaceAsyncCallbacks.ReadEntriesCallback
-
dispatchEntriesToConsumer
protected void dispatchEntriesToConsumer(Consumer currentConsumer, List<Entry> entries, EntryBatchSizes batchSizes, EntryBatchIndexesAcks batchIndexesAcks, SendMessageInfo sendMessageInfo, long epoch) -
consumerFlow
Description copied from interface:Dispatcher
Indicates that this consumer is now ready to receive more messages.- Specified by:
consumerFlow
in interfaceDispatcher
-
redeliverUnacknowledgedMessages
- Specified by:
redeliverUnacknowledgedMessages
in interfaceDispatcher
-
redeliverUnacknowledgedMessages
- Specified by:
redeliverUnacknowledgedMessages
in interfaceDispatcher
-
reScheduleRead
protected void reScheduleRead()- Specified by:
reScheduleRead
in classAbstractBaseDispatcher
-
calculateToRead
-
readEntriesFailed
- Specified by:
readEntriesFailed
in interfaceAsyncCallbacks.ReadEntriesCallback
-
addUnAckedMessages
public void addUnAckedMessages(int unAckMessages) - Specified by:
addUnAckedMessages
in interfaceDispatcher
-
getRedeliveryTracker
- Specified by:
getRedeliveryTracker
in interfaceDispatcher
-
getRateLimiter
- Specified by:
getRateLimiter
in interfaceDispatcher
-
initializeDispatchRateLimiterIfNeeded
public boolean initializeDispatchRateLimiterIfNeeded()- Specified by:
initializeDispatchRateLimiterIfNeeded
in interfaceDispatcher
-
checkAndUnblockIfStuck
public boolean checkAndUnblockIfStuck()Description copied from interface:Dispatcher
Checks if dispatcher is stuck and unblocks the dispatch if needed.- Specified by:
checkAndUnblockIfStuck
in interfaceDispatcher
-