Package org.apache.pulsar.client.impl
Class ConsumerBase<T>
java.lang.Object
org.apache.pulsar.client.impl.ConsumerBase<T>
- All Implemented Interfaces:
Closeable,AutoCloseable,Consumer<T>,MessageAcknowledger
- Direct Known Subclasses:
ConsumerImpl,MultiTopicsConsumerImpl
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final BatchReceivePolicyprotected io.netty.util.Timeoutprotected final PulsarClientImplprotected final ConsumerConfigurationData<T>protected static final AtomicLongFieldUpdater<ConsumerBase>protected longprotected final ConsumerEventListenerprotected final Stringprotected static final AtomicIntegerFieldUpdater<ConsumerBase>protected final ExecutorProviderprotected final ExecutorServiceprotected longprotected final Lockprotected static final intprotected final ConsumerInterceptors<T>protected final ExecutorServiceprotected final MessageListener<T>protected final intprotected static final doubleprotected static final AtomicIntegerFieldUpdater<ConsumerBase>protected final MessageListenerExecutorprotected intprotected final ConcurrentLinkedQueue<ConsumerBase.OpBatchReceive<T>>protected final ConcurrentLinkedQueue<CompletableFuture<Message<T>>>protected URIprotected final AtomicBooleanprotected final CompletableFuture<Consumer<T>>protected final Stringprotected final Stringprotected ConcurrentOpenHashMap<MessageIdAdv,MessageIdImpl[]> protected UnAckedMessageTracker -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConsumerBase(PulsarClientImpl client, String topic, ConsumerConfigurationData<T> conf, int receiverQueueSize, ExecutorProvider executorProvider, CompletableFuture<Consumer<T>> subscribeFuture, Schema<T> schema, ConsumerInterceptors interceptors) -
Method Summary
Modifier and TypeMethodDescriptionvoidacknowledge(List<MessageId> messageIdList) voidacknowledge(Message<?> message) voidacknowledge(MessageId messageId) voidacknowledge(Messages<?> messages) acknowledgeAsync(List<MessageId> messageIdList) acknowledgeAsync(List<MessageId> messageIdList, Transaction txn) acknowledgeAsync(Message<?> message) acknowledgeAsync(MessageId messageId) acknowledgeAsync(MessageId messageId, Transaction txn) acknowledgeAsync(Messages<?> messages) acknowledgeAsync(Messages<?> messages, Transaction txn) voidacknowledgeCumulative(Message<?> message) voidacknowledgeCumulative(MessageId messageId) acknowledgeCumulativeAsync(Message<?> message) acknowledgeCumulativeAsync(MessageId messageId) acknowledgeCumulativeAsync(MessageId messageId, Transaction txn) beforeConsume(Message<T> message) protected voidcallMessageListener(Message<T> msg) protected booleancanEnqueueMessage(Message<T> message) protected booleanprotected booleanprotected booleanprotected voidvoidclose()abstract CompletableFuture<Void>protected booleancompareAndSetState(org.apache.pulsar.client.impl.HandlerState.State expect, org.apache.pulsar.client.impl.HandlerState.State update) protected abstract voidprotected voidcompletePendingBatchReceive(CompletableFuture<Messages<T>> future, Messages<T> messages) protected voidcompletePendingReceive(CompletableFuture<Message<T>> receivedFuture, Message<T> message) protected voiddecreaseIncomingMessageSize(Message<?> message) protected abstract CompletableFuture<Void>doAcknowledge(List<MessageId> messageIdList, CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) protected abstract CompletableFuture<Void>doAcknowledge(MessageId messageId, CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) protected CompletableFuture<Void>doAcknowledgeWithTxn(List<MessageId> messageIdList, CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) protected CompletableFuture<Void>doAcknowledgeWithTxn(MessageId messageId, CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) protected abstract CompletableFuture<Void>doReconsumeLater(Message<?> message, CommandAck.AckType ackType, Map<String, String> customProperties, long delayTime, TimeUnit unit) protected booleanenqueueMessageAndCheckBatchReceive(Message<T> message) protected voidprotected CompletableFuture<Void>protected org.apache.pulsar.client.impl.HandlerState.StategetAndUpdateState(UnaryOperator<org.apache.pulsar.client.impl.HandlerState.State> updater) abstract intintlongDeprecated.abstract CompletableFuture<MessageId>Deprecated.protected MessagesImpl<T>protected org.apache.pulsar.client.impl.HandlerState.StategetState()protected CommandSubscribe.SubTypegetTopic()intprotected UnAckedMessageTrackerbooleanprotected booleanprotected booleanprotected booleanprotected voidincreaseIncomingMessageSize(Message<?> message) voidprotected abstract CompletableFuture<Messages<T>>internalReceive(long timeout, TimeUnit unit) protected abstract CompletableFuture<Message<T>>protected booleanisSingleMessageAcked(BitSetRecyclable ackBitSet, int batchIndex) protected booleanisValidConsumerEpoch(MessageImpl<T> message) protected abstract voidmessageProcessed(Message<?> msg) abstract intvoidnegativeAcknowledge(Message<?> message) voidnegativeAcknowledge(Messages<?> messages) protected CompletableFuture<Message<T>>protected voidprotected final voidnotifyPendingBatchReceivedCallBack(CompletableFuture<Messages<T>> batchReceiveFuture) abstract intprotected voidonAcknowledge(List<MessageId> messageIds, Throwable exception) protected voidonAcknowledge(MessageId messageId, Throwable exception) protected voidonAcknowledgeCumulative(List<MessageId> messageIds, Throwable exception) protected voidonAcknowledgeCumulative(MessageId messageId, Throwable exception) protected voidonAckTimeoutSend(Set<MessageId> messageIds) protected voidonNegativeAcksSend(Set<MessageId> messageIds) protected voidonPartitionsChange(String topicName, int partitions) protected byte[]peekMessageKey(Message<?> msg) receive()voidreconsumeLater(Message<?> message, long delayTime, TimeUnit unit) voidreconsumeLater(Message<?> message, Map<String, String> customProperties, long delayTime, TimeUnit unit) voidreconsumeLater(Messages<?> messages, long delayTime, TimeUnit unit) reconsumeLaterAsync(Message<?> message, long delayTime, TimeUnit unit) reconsumeLaterAsync(Message<?> message, Map<String, String> customProperties, long delayTime, TimeUnit unit) reconsumeLaterAsync(Messages<?> messages, long delayTime, TimeUnit unit) voidreconsumeLaterCumulative(Message<?> message, long delayTime, TimeUnit unit) reconsumeLaterCumulativeAsync(Message<?> message, long delayTime, TimeUnit unit) reconsumeLaterCumulativeAsync(Message<?> message, Map<String, String> customProperties, long delayTime, TimeUnit unit) protected abstract voidredeliverUnacknowledgedMessages(Set<MessageId> messageIds) Redelivers the given unacknowledged messages.protected voidprotected voidprotected abstract voidsetCurrentReceiverQueueSize(int newSize) Update the size of the consumer receive queue.protected voidsetRedirectedClusterURI(String serviceUrl, String serviceUrlTls) protected voidsetState(org.apache.pulsar.client.impl.HandlerState.State s) toString()protected voidtrackUnAckedMsgIfNoListener(MessageId messageId, int redeliveryCount) protected voidprotected voidvoidabstract CompletableFuture<Void>protected abstract voidMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.pulsar.client.api.Consumer
getLastDisconnectedTimestamp, getLastMessageIdsAsync, getStats, hasReachedEndOfTopic, isConnected, negativeAcknowledge, pause, redeliverUnacknowledgedMessages, resume, seek, seek, seek, seekAsync, seekAsync, seekAsync
-
Field Details
-
INITIAL_RECEIVER_QUEUE_SIZE
protected static final int INITIAL_RECEIVER_QUEUE_SIZE- See Also:
-
MEMORY_THRESHOLD_FOR_RECEIVER_QUEUE_SIZE_EXPANSION
protected static final double MEMORY_THRESHOLD_FOR_RECEIVER_QUEUE_SIZE_EXPANSION- See Also:
-
subscription
-
conf
-
consumerName
-
subscribeFuture
-
listener
-
consumerEventListener
-
executorProvider
-
messageListenerExecutor
-
externalPinnedExecutor
-
internalPinnedExecutor
-
unAckedMessageTracker
-
unAckedChunkedMessageIdSequenceMap
-
pendingReceives
-
maxReceiverQueueSize
protected final int maxReceiverQueueSize -
MESSAGE_LISTENER_QUEUE_SIZE_UPDATER
-
messageListenerQueueSize
protected volatile int messageListenerQueueSize -
CURRENT_RECEIVER_QUEUE_SIZE_UPDATER
-
schema
-
interceptors
-
batchReceivePolicy
-
pendingBatchReceives
-
incomingMessagesSize
protected volatile long incomingMessagesSize -
batchReceiveTimeout
protected volatile io.netty.util.Timeout batchReceiveTimeout -
incomingQueueLock
-
CONSUMER_EPOCH
-
consumerEpoch
protected volatile long consumerEpoch -
scaleReceiverQueueHint
-
client
-
topic
-
redirectedClusterURI
-
-
Constructor Details
-
ConsumerBase
protected ConsumerBase(PulsarClientImpl client, String topic, ConsumerConfigurationData<T> conf, int receiverQueueSize, ExecutorProvider executorProvider, CompletableFuture<Consumer<T>> subscribeFuture, Schema<T> schema, ConsumerInterceptors interceptors)
-
-
Method Details
-
getUnAckedMessageTracker
-
triggerBatchReceiveTimeoutTask
protected void triggerBatchReceiveTimeoutTask() -
initReceiverQueueSize
public void initReceiverQueueSize() -
minReceiverQueueSize
public abstract int minReceiverQueueSize() -
expectMoreIncomingMessages
protected void expectMoreIncomingMessages() -
trackUnAckedMsgIfNoListener
-
reduceCurrentReceiverQueueSize
protected void reduceCurrentReceiverQueueSize() -
receive
- Specified by:
receivein interfaceConsumer<T>- Throws:
PulsarClientException
-
receiveAsync
- Specified by:
receiveAsyncin interfaceConsumer<T>
-
internalReceive
- Throws:
PulsarClientException
-
internalReceiveAsync
-
receive
- Specified by:
receivein interfaceConsumer<T>- Throws:
PulsarClientException
-
internalReceive
protected abstract Message<T> internalReceive(long timeout, TimeUnit unit) throws PulsarClientException - Throws:
PulsarClientException
-
batchReceive
- Specified by:
batchReceivein interfaceConsumer<T>- Throws:
PulsarClientException
-
batchReceiveAsync
- Specified by:
batchReceiveAsyncin interfaceConsumer<T>
-
hasNextPendingReceive
protected boolean hasNextPendingReceive() -
nextPendingReceive
-
completePendingReceive
protected void completePendingReceive(CompletableFuture<Message<T>> receivedFuture, Message<T> message) -
failPendingReceive
-
internalBatchReceive
- Throws:
PulsarClientException
-
internalBatchReceiveAsync
-
acknowledge
- Specified by:
acknowledgein interfaceMessageAcknowledger- Throws:
PulsarClientException
-
acknowledge
- Specified by:
acknowledgein interfaceMessageAcknowledger- Throws:
PulsarClientException
-
acknowledge
- Specified by:
acknowledgein interfaceMessageAcknowledger- Throws:
PulsarClientException
-
acknowledge
- Specified by:
acknowledgein interfaceMessageAcknowledger- Throws:
PulsarClientException
-
reconsumeLater
public void reconsumeLater(Message<?> message, long delayTime, TimeUnit unit) throws PulsarClientException - Specified by:
reconsumeLaterin interfaceConsumer<T>- Throws:
PulsarClientException
-
reconsumeLater
public void reconsumeLater(Message<?> message, Map<String, String> customProperties, long delayTime, TimeUnit unit) throws PulsarClientException- Specified by:
reconsumeLaterin interfaceConsumer<T>- Throws:
PulsarClientException
-
reconsumeLater
public void reconsumeLater(Messages<?> messages, long delayTime, TimeUnit unit) throws PulsarClientException - Specified by:
reconsumeLaterin interfaceConsumer<T>- Throws:
PulsarClientException
-
acknowledgeCumulative
- Specified by:
acknowledgeCumulativein interfaceMessageAcknowledger- Throws:
PulsarClientException
-
acknowledgeCumulative
- Specified by:
acknowledgeCumulativein interfaceMessageAcknowledger- Throws:
PulsarClientException
-
reconsumeLaterCumulative
public void reconsumeLaterCumulative(Message<?> message, long delayTime, TimeUnit unit) throws PulsarClientException - Specified by:
reconsumeLaterCumulativein interfaceConsumer<T>- Throws:
PulsarClientException
-
acknowledgeAsync
- Specified by:
acknowledgeAsyncin interfaceMessageAcknowledger
-
acknowledgeAsync
- Specified by:
acknowledgeAsyncin interfaceMessageAcknowledger
-
acknowledgeAsync
- Specified by:
acknowledgeAsyncin interfaceMessageAcknowledger
-
acknowledgeAsync
- Specified by:
acknowledgeAsyncin interfaceMessageAcknowledger
-
acknowledgeAsync
- Specified by:
acknowledgeAsyncin interfaceMessageAcknowledger
-
reconsumeLaterAsync
public CompletableFuture<Void> reconsumeLaterAsync(Message<?> message, long delayTime, TimeUnit unit) - Specified by:
reconsumeLaterAsyncin interfaceConsumer<T>
-
reconsumeLaterAsync
public CompletableFuture<Void> reconsumeLaterAsync(Message<?> message, Map<String, String> customProperties, long delayTime, TimeUnit unit) - Specified by:
reconsumeLaterAsyncin interfaceConsumer<T>
-
reconsumeLaterAsync
public CompletableFuture<Void> reconsumeLaterAsync(Messages<?> messages, long delayTime, TimeUnit unit) - Specified by:
reconsumeLaterAsyncin interfaceConsumer<T>
-
acknowledgeCumulativeAsync
- Specified by:
acknowledgeCumulativeAsyncin interfaceMessageAcknowledger
-
reconsumeLaterCumulativeAsync
public CompletableFuture<Void> reconsumeLaterCumulativeAsync(Message<?> message, long delayTime, TimeUnit unit) - Specified by:
reconsumeLaterCumulativeAsyncin interfaceConsumer<T>
-
reconsumeLaterCumulativeAsync
public CompletableFuture<Void> reconsumeLaterCumulativeAsync(Message<?> message, Map<String, String> customProperties, long delayTime, TimeUnit unit) - Specified by:
reconsumeLaterCumulativeAsyncin interfaceConsumer<T>
-
acknowledgeAsync
- Specified by:
acknowledgeAsyncin interfaceMessageAcknowledger
-
acknowledgeAsync
- Specified by:
acknowledgeAsyncin interfaceMessageAcknowledger
-
acknowledgeCumulativeAsync
- Specified by:
acknowledgeCumulativeAsyncin interfaceMessageAcknowledger
-
acknowledgeCumulativeAsync
- Specified by:
acknowledgeCumulativeAsyncin interfaceMessageAcknowledger
-
negativeAcknowledge
- Specified by:
negativeAcknowledgein interfaceConsumer<T>
-
doAcknowledgeWithTxn
protected CompletableFuture<Void> doAcknowledgeWithTxn(List<MessageId> messageIdList, CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) -
doAcknowledgeWithTxn
protected CompletableFuture<Void> doAcknowledgeWithTxn(MessageId messageId, CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) -
doAcknowledge
protected abstract CompletableFuture<Void> doAcknowledge(MessageId messageId, CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) -
doAcknowledge
protected abstract CompletableFuture<Void> doAcknowledge(List<MessageId> messageIdList, CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) -
doReconsumeLater
protected abstract CompletableFuture<Void> doReconsumeLater(Message<?> message, CommandAck.AckType ackType, Map<String, String> customProperties, long delayTime, TimeUnit unit) -
negativeAcknowledge
- Specified by:
negativeAcknowledgein interfaceConsumer<T>
-
unsubscribe
- Specified by:
unsubscribein interfaceConsumer<T>- Throws:
PulsarClientException
-
unsubscribeAsync
- Specified by:
unsubscribeAsyncin interfaceConsumer<T>
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceConsumer<T>- Throws:
PulsarClientException
-
closeAsync
- Specified by:
closeAsyncin interfaceConsumer<T>
-
getLastMessageId
Deprecated.- Specified by:
getLastMessageIdin interfaceConsumer<T>- Throws:
PulsarClientException
-
getLastMessageIdAsync
Deprecated.- Specified by:
getLastMessageIdAsyncin interfaceConsumer<T>
-
getLastMessageIds
- Specified by:
getLastMessageIdsin interfaceConsumer<T>- Throws:
PulsarClientException
-
getSubType
-
getAvailablePermits
public abstract int getAvailablePermits() -
numMessagesInQueue
public abstract int numMessagesInQueue() -
subscribeFuture
-
getTopic
-
getSubscription
- Specified by:
getSubscriptionin interfaceConsumer<T>
-
getConsumerName
- Specified by:
getConsumerNamein interfaceConsumer<T>
-
redeliverUnacknowledgedMessages
Redelivers the given unacknowledged messages. In Failover mode, the request is ignored if the consumer is not active for the given topic. In Shared mode, the consumers messages to be redelivered are distributed across all the connected consumers. This is a non blocking call and doesn't throw an exception. In case the connection breaks, the messages are redelivered after reconnect. -
toString
-
beforeConsume
-
onAcknowledge
-
onAcknowledge
-
onAcknowledgeCumulative
-
onAcknowledgeCumulative
-
onNegativeAcksSend
-
onAckTimeoutSend
-
onPartitionsChange
-
canEnqueueMessage
-
enqueueMessageAndCheckBatchReceive
-
updateAutoScaleReceiverQueueHint
protected abstract void updateAutoScaleReceiverQueueHint() -
hasEnoughMessagesForBatchReceive
protected boolean hasEnoughMessagesForBatchReceive() -
notifyPendingBatchReceivedCallBack
protected void notifyPendingBatchReceivedCallBack() -
notifyPendingBatchReceivedCallBack
protected final void notifyPendingBatchReceivedCallBack(CompletableFuture<Messages<T>> batchReceiveFuture) -
completePendingBatchReceive
protected void completePendingBatchReceive(CompletableFuture<Messages<T>> future, Messages<T> messages) -
messageProcessed
-
tryTriggerListener
protected void tryTriggerListener() -
callMessageListener
-
peekMessageKey
-
getNewMessagesImpl
-
hasPendingBatchReceive
protected boolean hasPendingBatchReceive() -
resetIncomingMessageSize
protected void resetIncomingMessageSize() -
decreaseIncomingMessageSize
-
increaseIncomingMessageSize
-
getIncomingMessageSize
public long getIncomingMessageSize() -
getTotalIncomingMessages
public int getTotalIncomingMessages() -
clearIncomingMessages
protected void clearIncomingMessages() -
setCurrentReceiverQueueSize
protected abstract void setCurrentReceiverQueueSize(int newSize) Update the size of the consumer receive queue. SeeConsumerBuilder.receiverQueueSize(int).- Parameters:
newSize- new size of the receiver queue.
-
getCurrentReceiverQueueSize
public int getCurrentReceiverQueueSize() -
completeOpBatchReceive
-
isValidConsumerEpoch
-
isSingleMessageAcked
-
hasBatchReceiveTimeout
public boolean hasBatchReceiveTimeout() -
setRedirectedClusterURI
protected void setRedirectedClusterURI(String serviceUrl, String serviceUrlTls) throws URISyntaxException - Throws:
URISyntaxException
-
changeToReadyState
protected boolean changeToReadyState() -
compareAndSetState
protected boolean compareAndSetState(org.apache.pulsar.client.impl.HandlerState.State expect, org.apache.pulsar.client.impl.HandlerState.State update) -
changeToRegisteringSchemaState
protected boolean changeToRegisteringSchemaState() -
getState
protected org.apache.pulsar.client.impl.HandlerState.State getState() -
changeToConnecting
protected boolean changeToConnecting() -
setState
protected void setState(org.apache.pulsar.client.impl.HandlerState.State s) -
getAndUpdateState
protected org.apache.pulsar.client.impl.HandlerState.State getAndUpdateState(UnaryOperator<org.apache.pulsar.client.impl.HandlerState.State> updater) -
getClient
-