public abstract class AbstractDispatcherSingleActiveConsumer extends AbstractBaseDispatcher
| Modifier and Type | Field and Description |
|---|---|
protected static AtomicReferenceFieldUpdater<AbstractDispatcherSingleActiveConsumer,Consumer> |
ACTIVE_CONSUMER_UPDATER |
protected CompletableFuture<Void> |
closeFuture |
protected CopyOnWriteArrayList<Consumer> |
consumers |
protected static int |
FALSE |
protected static AtomicIntegerFieldUpdater<AbstractDispatcherSingleActiveConsumer> |
IS_CLOSED_UPDATER |
protected boolean |
isKeyHashRangeFiltered |
protected int |
partitionIndex |
protected StickyKeyConsumerSelector |
stickyKeyConsumerSelector |
protected org.apache.pulsar.common.api.proto.PulsarApi.CommandSubscribe.SubType |
subscriptionType |
protected String |
topicName |
protected static int |
TRUE |
NONE_KEY, subscription| Constructor and Description |
|---|
AbstractDispatcherSingleActiveConsumer(org.apache.pulsar.common.api.proto.PulsarApi.CommandSubscribe.SubType subscriptionType,
int partitionIndex,
String topicName,
Subscription subscription) |
| Modifier and Type | Method and Description |
|---|---|
void |
addConsumer(Consumer consumer) |
protected abstract void |
cancelPendingRead() |
boolean |
canUnsubscribe(Consumer consumer)
Handle unsubscribe command from the client API For failover subscription, if consumer is connected consumer, we
can unsubscribe.
|
CompletableFuture<Void> |
close()
mark dispatcher closed to stop new incoming requests and disconnect all consumers
|
CompletableFuture<Void> |
disconnectActiveConsumers(boolean isResetCursor)
Disconnect active consumers
|
CompletableFuture<Void> |
disconnectAllConsumers(boolean isResetCursor)
Disconnect all consumers on this dispatcher (server side close).
|
Consumer |
getActiveConsumer() |
List<Consumer> |
getConsumers() |
org.apache.pulsar.common.api.proto.PulsarApi.CommandSubscribe.SubType |
getType() |
boolean |
isClosed() |
boolean |
isConsumerConnected() |
protected abstract boolean |
isConsumersExceededOnSubscription() |
protected void |
notifyActiveConsumerChanged(Consumer activeConsumer) |
protected boolean |
pickAndScheduleActiveConsumer()
Pick active consumer for a topic for
PulsarApi.CommandSubscribe.SubType.Failover subscription. |
protected abstract void |
readMoreEntries(Consumer consumer) |
void |
removeConsumer(Consumer consumer) |
void |
reset()
mark dispatcher open to serve new incoming requests
|
void |
resetCloseFuture() |
protected abstract void |
scheduleReadOnActiveConsumer() |
addMessageToReplay, filterEntriesForConsumer, peekStickyKeyclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitaddUnAckedMessages, clearDelayedMessages, consumerFlow, cursorIsReset, disconnectAllConsumers, getNumberOfDelayedMessages, getRateLimiter, getRedeliveryTracker, initializeDispatchRateLimiterIfNeeded, markDeletePositionMoveForward, redeliverUnacknowledgedMessages, redeliverUnacknowledgedMessages, trackDelayedDelivery, updateRateLimiterprotected final String topicName
protected static final AtomicReferenceFieldUpdater<AbstractDispatcherSingleActiveConsumer,Consumer> ACTIVE_CONSUMER_UPDATER
protected final CopyOnWriteArrayList<Consumer> consumers
protected StickyKeyConsumerSelector stickyKeyConsumerSelector
protected boolean isKeyHashRangeFiltered
protected CompletableFuture<Void> closeFuture
protected final int partitionIndex
protected final org.apache.pulsar.common.api.proto.PulsarApi.CommandSubscribe.SubType subscriptionType
protected static final int FALSE
protected static final int TRUE
protected static final AtomicIntegerFieldUpdater<AbstractDispatcherSingleActiveConsumer> IS_CLOSED_UPDATER
public AbstractDispatcherSingleActiveConsumer(org.apache.pulsar.common.api.proto.PulsarApi.CommandSubscribe.SubType subscriptionType,
int partitionIndex,
String topicName,
Subscription subscription)
protected abstract void scheduleReadOnActiveConsumer()
protected abstract void readMoreEntries(Consumer consumer)
protected abstract void cancelPendingRead()
protected abstract boolean isConsumersExceededOnSubscription()
protected void notifyActiveConsumerChanged(Consumer activeConsumer)
protected boolean pickAndScheduleActiveConsumer()
PulsarApi.CommandSubscribe.SubType.Failover subscription.
If it's a non-partitioned topic then it'll pick consumer based on order they subscribe to the topic.
If is's a partitioned topic, first sort consumers based on their priority level and consumer name then
distributed partitions evenly across consumers with highest priority level.public void addConsumer(Consumer consumer) throws BrokerServiceException
BrokerServiceExceptionpublic void removeConsumer(Consumer consumer) throws BrokerServiceException
BrokerServiceExceptionpublic boolean canUnsubscribe(Consumer consumer)
consumer - Calling consumer objectpublic CompletableFuture<Void> close()
Dispatcherpublic boolean isClosed()
public CompletableFuture<Void> disconnectAllConsumers(boolean isResetCursor)
public CompletableFuture<Void> disconnectActiveConsumers(boolean isResetCursor)
Dispatcherpublic void resetCloseFuture()
resetCloseFuture in interface DispatcherresetCloseFuture in class AbstractBaseDispatcherpublic void reset()
Dispatcherpublic org.apache.pulsar.common.api.proto.PulsarApi.CommandSubscribe.SubType getType()
public Consumer getActiveConsumer()
public boolean isConsumerConnected()
Copyright © 2017–2021 Apache Software Foundation. All rights reserved.