public class PersistentDispatcherSingleActiveConsumer extends AbstractDispatcherSingleActiveConsumer implements Dispatcher, AsyncCallbacks.ReadEntriesCallback
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
havePendingRead |
protected String |
name |
protected int |
readBatchSize |
protected Backoff |
readFailureBackoff |
protected PersistentTopic |
topic |
ACTIVE_CONSUMER_UPDATER, closeFuture, consumers, cursor, FALSE, IS_CLOSED_UPDATER, isFirstRead, isKeyHashRangeFiltered, partitionIndex, stickyKeyConsumerSelector, subscriptionType, topicName, TRUEserviceConfig, subscription| Constructor and Description |
|---|
PersistentDispatcherSingleActiveConsumer(ManagedCursor cursor,
org.apache.pulsar.common.api.proto.CommandSubscribe.SubType subscriptionType,
int partitionIndex,
PersistentTopic topic,
Subscription subscription) |
| Modifier and Type | Method and Description |
|---|---|
void |
addUnAckedMessages(int unAckMessages) |
protected org.apache.commons.lang3.tuple.Pair<Integer,Long> |
calculateToRead(Consumer consumer) |
protected void |
cancelPendingRead() |
boolean |
checkAndUnblockIfStuck()
Checks if dispatcher is stuck and unblocks the dispatch if needed.
|
CompletableFuture<Void> |
close()
mark dispatcher closed to stop new incoming requests and disconnect all consumers.
|
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) |
Optional<DispatchRateLimiter> |
getRateLimiter() |
RedeliveryTracker |
getRedeliveryTracker() |
void |
initializeDispatchRateLimiterIfNeeded(Optional<org.apache.pulsar.common.policies.data.Policies> policies) |
void |
internalReadEntriesComplete(List<Entry> entries,
Object obj) |
protected boolean |
isConsumersExceededOnSubscription()
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) |
protected void |
readMoreEntries(Consumer consumer) |
void |
redeliverUnacknowledgedMessages(Consumer consumer) |
void |
redeliverUnacknowledgedMessages(Consumer consumer,
List<PositionImpl> positions) |
protected void |
scheduleReadOnActiveConsumer() |
void |
updateRateLimiter(org.apache.pulsar.common.policies.data.DispatchRate dispatchRate) |
addConsumer, canUnsubscribe, disconnectActiveConsumers, disconnectAllConsumers, getActiveConsumer, getConsumers, getType, isClosed, isConsumerConnected, notifyActiveConsumerChanged, pickAndScheduleActiveConsumer, removeConsumer, reset, resetCloseFuturecomputeReadLimits, filterEntriesForConsumer, filterEntriesForConsumer, isConsumersExceededOnSubscription, peekStickyKey, updateEntryWrapperWithMetadataclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitaddConsumer, canUnsubscribe, clearDelayedMessages, cursorIsReset, disconnectActiveConsumers, disconnectAllConsumers, disconnectAllConsumers, getConsumers, getNumberOfDelayedMessages, getType, isClosed, isConsumerConnected, markDeletePositionMoveForward, removeConsumer, reset, resetCloseFuture, trackDelayedDeliveryprotected final PersistentTopic topic
protected final String name
protected volatile boolean havePendingRead
protected volatile int readBatchSize
protected final Backoff readFailureBackoff
public PersistentDispatcherSingleActiveConsumer(ManagedCursor cursor, org.apache.pulsar.common.api.proto.CommandSubscribe.SubType subscriptionType, int partitionIndex, PersistentTopic topic, Subscription subscription)
protected void scheduleReadOnActiveConsumer()
scheduleReadOnActiveConsumer in class AbstractDispatcherSingleActiveConsumerprotected boolean isConsumersExceededOnSubscription()
AbstractBaseDispatcherisConsumersExceededOnSubscription in class AbstractBaseDispatcherprotected void cancelPendingRead()
cancelPendingRead in class AbstractDispatcherSingleActiveConsumerpublic void readEntriesComplete(List<Entry> entries, Object obj)
readEntriesComplete in interface AsyncCallbacks.ReadEntriesCallbackpublic void internalReadEntriesComplete(List<Entry> entries, Object obj)
protected void dispatchEntriesToConsumer(Consumer currentConsumer, List<Entry> entries, EntryBatchSizes batchSizes, EntryBatchIndexesAcks batchIndexesAcks, SendMessageInfo sendMessageInfo)
public void consumerFlow(Consumer consumer, int additionalNumberOfMessages)
DispatcherconsumerFlow in interface Dispatcherpublic void redeliverUnacknowledgedMessages(Consumer consumer)
redeliverUnacknowledgedMessages in interface Dispatcherpublic void redeliverUnacknowledgedMessages(Consumer consumer, List<PositionImpl> positions)
redeliverUnacknowledgedMessages in interface Dispatcherprotected void readMoreEntries(Consumer consumer)
readMoreEntries in class AbstractDispatcherSingleActiveConsumerprotected org.apache.commons.lang3.tuple.Pair<Integer,Long> calculateToRead(Consumer consumer)
public void readEntriesFailed(ManagedLedgerException exception, Object ctx)
readEntriesFailed in interface AsyncCallbacks.ReadEntriesCallbackpublic void addUnAckedMessages(int unAckMessages)
addUnAckedMessages in interface Dispatcherpublic RedeliveryTracker getRedeliveryTracker()
getRedeliveryTracker in interface Dispatcherpublic Optional<DispatchRateLimiter> getRateLimiter()
getRateLimiter in interface Dispatcherpublic void updateRateLimiter(org.apache.pulsar.common.policies.data.DispatchRate dispatchRate)
updateRateLimiter in interface Dispatcherpublic void initializeDispatchRateLimiterIfNeeded(Optional<org.apache.pulsar.common.policies.data.Policies> policies)
initializeDispatchRateLimiterIfNeeded in interface Dispatcherpublic CompletableFuture<Void> close()
Dispatcherclose in interface Dispatcherclose in class AbstractDispatcherSingleActiveConsumerpublic boolean checkAndUnblockIfStuck()
DispatchercheckAndUnblockIfStuck in interface DispatcherCopyright © 2017–2022 Apache Software Foundation. All rights reserved.