Package org.apache.pulsar.client.impl
Class ConsumerImpl<T>
java.lang.Object
org.apache.pulsar.client.impl.ConsumerBase<T>
org.apache.pulsar.client.impl.ConsumerImpl<T>
- All Implemented Interfaces:
Closeable,AutoCloseable,org.apache.pulsar.client.api.Consumer<T>
- Direct Known Subclasses:
ZeroQueueConsumerImpl
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.pulsar.client.impl.ConsumerBase
ConsumerBase.OpBatchReceive<T> -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.client.impl.ConsumerImpl.ChunkedMessageCtx> protected final PulsarClientImplprotected longprotected org.apache.pulsar.client.api.MessageIdprotected booleanprotected final ConsumerStatsRecorderprotected final StringFields inherited from class org.apache.pulsar.client.impl.ConsumerBase
batchReceivePolicy, batchReceiveTimeout, conf, CONSUMER_EPOCH, consumerEpoch, consumerEventListener, consumerName, CURRENT_RECEIVER_QUEUE_SIZE_UPDATER, executorProvider, externalPinnedExecutor, incomingMessagesSize, INITIAL_RECEIVER_QUEUE_SIZE, interceptors, internalPinnedExecutor, listener, maxReceiverQueueSize, MEMORY_THRESHOLD_FOR_RECEIVER_QUEUE_SIZE_EXPANSION, pendingBatchReceives, pendingReceives, reentrantLock, scaleReceiverQueueHint, schema, subscribeFuture, subscription, unAckedChunkedMessageIdSequenceMap -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConsumerImpl(PulsarClientImpl client, String topic, ConsumerConfigurationData<T> conf, ExecutorProvider executorProvider, int partitionIndex, boolean hasParentConsumer, boolean parentConsumerHasListener, CompletableFuture<org.apache.pulsar.client.api.Consumer<T>> subscribeFuture, org.apache.pulsar.client.api.MessageId startMessageId, long startMessageRollbackDurationInSec, org.apache.pulsar.client.api.Schema<T> schema, ConsumerInterceptors<T> interceptors, boolean createTopicIfDoesNotExist) -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanprotected booleanprotected booleanintprotected voidvoidconnectionFailed(org.apache.pulsar.client.api.PulsarClientException exception) voidprotected voidconsumerIsReconnectedToBroker(ClientCnx cnx, int currentQueueSize) protected CompletableFuture<Void>doAcknowledge(List<org.apache.pulsar.client.api.MessageId> messageIdList, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) protected CompletableFuture<Void>doAcknowledge(org.apache.pulsar.client.api.MessageId messageId, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) protected CompletableFuture<Void>doReconsumeLater(org.apache.pulsar.client.api.Message<?> message, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, Map<String, String> customProperties, long delayTime, TimeUnit unit) booleanprotected org.apache.pulsar.client.impl.HandlerState.StategetAndUpdateState(UnaryOperator<org.apache.pulsar.client.impl.HandlerState.State> updater) intlongCompletableFuture<org.apache.pulsar.client.api.MessageId>protected org.apache.pulsar.client.impl.HandlerState.StategetState()getStats()inthashCode()booleanbooleanvoidincreaseAvailablePermits(int delta) protected voidincreaseAvailablePermits(ClientCnx currentCnx, int delta) protected org.apache.pulsar.client.api.Messages<T>protected CompletableFuture<org.apache.pulsar.client.api.Messages<T>>CompletableFuture<org.apache.pulsar.client.impl.ConsumerImpl.GetLastMessageIdResponse>protected org.apache.pulsar.client.api.Message<T>protected org.apache.pulsar.client.api.Message<T>internalReceive(long timeout, TimeUnit unit) protected CompletableFuture<org.apache.pulsar.client.api.Message<T>>protected booleanisBatch(org.apache.pulsar.common.api.proto.MessageMetadata messageMetadata) booleanbooleanisConnected(ClientCnx cnx) protected voidmessageProcessed(org.apache.pulsar.client.api.Message<?> msg) Record the event that one message has been processed by the application.intvoidnegativeAcknowledge(org.apache.pulsar.client.api.Message<?> message) voidnegativeAcknowledge(org.apache.pulsar.client.api.MessageId messageId) protected <V> MessageImpl<V>newMessage(MessageIdImpl messageId, org.apache.pulsar.common.api.proto.BrokerEntryMetadata brokerEntryMetadata, org.apache.pulsar.common.api.proto.MessageMetadata messageMetadata, io.netty.buffer.ByteBuf payload, org.apache.pulsar.client.api.Schema<V> schema, int redeliveryCount, long consumerEpoch) protected <V> MessageImpl<V>newSingleMessage(int index, int numMessages, org.apache.pulsar.common.api.proto.BrokerEntryMetadata brokerEntryMetadata, org.apache.pulsar.common.api.proto.MessageMetadata msgMetadata, org.apache.pulsar.common.api.proto.SingleMessageMetadata singleMessageMetadata, io.netty.buffer.ByteBuf payload, MessageIdImpl messageId, org.apache.pulsar.client.api.Schema<V> schema, boolean containMetadata, org.apache.pulsar.common.util.collections.BitSetRecyclable ackBitSet, BatchMessageAcker acker, int redeliveryCount, long consumerEpoch) intvoidpause()voidvoidredeliverUnacknowledgedMessages(Set<org.apache.pulsar.client.api.MessageId> messageIds) Redelivers the given unacknowledged messages.protected voidvoidresume()voidseek(long timestamp) voidvoidseek(org.apache.pulsar.client.api.MessageId messageId) seekAsync(long timestamp) seekAsync(org.apache.pulsar.client.api.MessageId messageId) protected voidsetCurrentReceiverQueueSize(int newSize) Update the size of the consumer receive queue.protected voidsetState(org.apache.pulsar.client.impl.HandlerState.State s) protected voidtrackMessage(org.apache.pulsar.client.api.Message<?> msg) protected voidtrackMessage(org.apache.pulsar.client.api.MessageId messageId) protected voidtrackMessage(org.apache.pulsar.client.api.MessageId messageId, int redeliveryCount) protected voidMethods inherited from class org.apache.pulsar.client.impl.ConsumerBase
acknowledge, acknowledge, acknowledge, acknowledge, acknowledgeAsync, acknowledgeAsync, acknowledgeAsync, acknowledgeAsync, acknowledgeAsync, acknowledgeAsync, acknowledgeAsync, acknowledgeCumulative, acknowledgeCumulative, acknowledgeCumulativeAsync, acknowledgeCumulativeAsync, acknowledgeCumulativeAsync, batchReceive, batchReceiveAsync, beforeConsume, callMessageListener, canEnqueueMessage, clearIncomingMessages, close, completePendingBatchReceive, completePendingReceive, decreaseIncomingMessageSize, doAcknowledgeWithTxn, doAcknowledgeWithTxn, enqueueMessageAndCheckBatchReceive, expectMoreIncomingMessages, failPendingReceive, getConsumerName, getCurrentReceiverQueueSize, getIncomingMessageSize, getLastMessageId, getNewMessagesImpl, getSubscription, getSubType, getTopic, getTotalIncomingMessages, hasBatchReceiveTimeout, hasEnoughMessagesForBatchReceive, hasNextPendingReceive, hasPendingBatchReceive, initReceiverQueueSize, isValidConsumerEpoch, negativeAcknowledge, nextPendingReceive, notifyPendingBatchReceivedCallBack, notifyPendingBatchReceivedCallBack, onAcknowledge, onAcknowledge, onAcknowledgeCumulative, onAcknowledgeCumulative, onAckTimeoutSend, onNegativeAcksSend, onPartitionsChange, peekMessageKey, receive, receive, receiveAsync, reconsumeLater, reconsumeLater, reconsumeLater, reconsumeLaterAsync, reconsumeLaterAsync, reconsumeLaterAsync, reconsumeLaterCumulative, reconsumeLaterCumulativeAsync, reconsumeLaterCumulativeAsync, reduceCurrentReceiverQueueSize, resetIncomingMessageSize, subscribeFuture, toString, triggerBatchReceiveTimeoutTask, tryTriggerListener, unsubscribe
-
Field Details
-
lastDequeuedMessageId
protected volatile org.apache.pulsar.client.api.MessageId lastDequeuedMessageId -
stats
-
paused
protected volatile boolean paused -
chunkedMessagesMap
protected org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<String,org.apache.pulsar.client.impl.ConsumerImpl.ChunkedMessageCtx> chunkedMessagesMap -
expireTimeOfIncompleteChunkedMessageMillis
protected long expireTimeOfIncompleteChunkedMessageMillis -
client
-
topic
-
-
Constructor Details
-
ConsumerImpl
protected ConsumerImpl(PulsarClientImpl client, String topic, ConsumerConfigurationData<T> conf, ExecutorProvider executorProvider, int partitionIndex, boolean hasParentConsumer, boolean parentConsumerHasListener, CompletableFuture<org.apache.pulsar.client.api.Consumer<T>> subscribeFuture, org.apache.pulsar.client.api.MessageId startMessageId, long startMessageRollbackDurationInSec, org.apache.pulsar.client.api.Schema<T> schema, ConsumerInterceptors<T> interceptors, boolean createTopicIfDoesNotExist)
-
-
Method Details
-
getConnectionHandler
-
getUnAckedMessageTracker
-
unsubscribeAsync
- Specified by:
unsubscribeAsyncin interfaceorg.apache.pulsar.client.api.Consumer<T>- Specified by:
unsubscribeAsyncin classConsumerBase<T>
-
minReceiverQueueSize
public int minReceiverQueueSize()- Specified by:
minReceiverQueueSizein classConsumerBase<T>
-
internalReceive
protected org.apache.pulsar.client.api.Message<T> internalReceive() throws org.apache.pulsar.client.api.PulsarClientException- Specified by:
internalReceivein classConsumerBase<T>- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
internalReceiveAsync
- Specified by:
internalReceiveAsyncin classConsumerBase<T>
-
internalReceive
protected org.apache.pulsar.client.api.Message<T> internalReceive(long timeout, TimeUnit unit) throws org.apache.pulsar.client.api.PulsarClientException - Specified by:
internalReceivein classConsumerBase<T>- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
internalBatchReceive
protected org.apache.pulsar.client.api.Messages<T> internalBatchReceive() throws org.apache.pulsar.client.api.PulsarClientException- Specified by:
internalBatchReceivein classConsumerBase<T>- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
internalBatchReceiveAsync
- Specified by:
internalBatchReceiveAsyncin classConsumerBase<T>
-
doAcknowledge
protected CompletableFuture<Void> doAcknowledge(org.apache.pulsar.client.api.MessageId messageId, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) - Specified by:
doAcknowledgein classConsumerBase<T>
-
doAcknowledge
protected CompletableFuture<Void> doAcknowledge(List<org.apache.pulsar.client.api.MessageId> messageIdList, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, Map<String, Long> properties, TransactionImpl txn) - Specified by:
doAcknowledgein classConsumerBase<T>
-
doReconsumeLater
protected CompletableFuture<Void> doReconsumeLater(org.apache.pulsar.client.api.Message<?> message, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, Map<String, String> customProperties, long delayTime, TimeUnit unit) - Specified by:
doReconsumeLaterin classConsumerBase<T>
-
negativeAcknowledge
public void negativeAcknowledge(org.apache.pulsar.client.api.MessageId messageId) - Specified by:
negativeAcknowledgein interfaceorg.apache.pulsar.client.api.Consumer<T>
-
negativeAcknowledge
public void negativeAcknowledge(org.apache.pulsar.client.api.Message<?> message) - Specified by:
negativeAcknowledgein interfaceorg.apache.pulsar.client.api.Consumer<T>- Overrides:
negativeAcknowledgein classConsumerBase<T>
-
connectionOpened
-
consumerIsReconnectedToBroker
-
connectionFailed
public void connectionFailed(org.apache.pulsar.client.api.PulsarClientException exception) -
closeAsync
- Specified by:
closeAsyncin interfaceorg.apache.pulsar.client.api.Consumer<T>- Specified by:
closeAsyncin classConsumerBase<T>
-
isBatch
protected boolean isBatch(org.apache.pulsar.common.api.proto.MessageMetadata messageMetadata) -
newSingleMessage
protected <V> MessageImpl<V> newSingleMessage(int index, int numMessages, org.apache.pulsar.common.api.proto.BrokerEntryMetadata brokerEntryMetadata, org.apache.pulsar.common.api.proto.MessageMetadata msgMetadata, org.apache.pulsar.common.api.proto.SingleMessageMetadata singleMessageMetadata, io.netty.buffer.ByteBuf payload, MessageIdImpl messageId, org.apache.pulsar.client.api.Schema<V> schema, boolean containMetadata, org.apache.pulsar.common.util.collections.BitSetRecyclable ackBitSet, BatchMessageAcker acker, int redeliveryCount, long consumerEpoch) -
newMessage
protected <V> MessageImpl<V> newMessage(MessageIdImpl messageId, org.apache.pulsar.common.api.proto.BrokerEntryMetadata brokerEntryMetadata, org.apache.pulsar.common.api.proto.MessageMetadata messageMetadata, io.netty.buffer.ByteBuf payload, org.apache.pulsar.client.api.Schema<V> schema, int redeliveryCount, long consumerEpoch) -
messageProcessed
protected void messageProcessed(org.apache.pulsar.client.api.Message<?> msg) Record the event that one message has been processed by the application. Periodically, it sends a Flow command to notify the broker that it can push more messages- Specified by:
messageProcessedin classConsumerBase<T>
-
trackMessage
protected void trackMessage(org.apache.pulsar.client.api.Message<?> msg) -
trackMessage
protected void trackMessage(org.apache.pulsar.client.api.MessageId messageId) -
trackMessage
protected void trackMessage(org.apache.pulsar.client.api.MessageId messageId, int redeliveryCount) -
increaseAvailablePermits
-
increaseAvailablePermits
public void increaseAvailablePermits(int delta) -
setCurrentReceiverQueueSize
protected void setCurrentReceiverQueueSize(int newSize) Description copied from class:ConsumerBaseUpdate the size of the consumer receive queue. SeeConsumerBuilder.receiverQueueSize(int).- Specified by:
setCurrentReceiverQueueSizein classConsumerBase<T>- Parameters:
newSize- new size of the receiver queue.
-
pause
public void pause()- Specified by:
pausein interfaceorg.apache.pulsar.client.api.Consumer<T>
-
resume
public void resume()- Specified by:
resumein interfaceorg.apache.pulsar.client.api.Consumer<T>
-
getLastDisconnectedTimestamp
public long getLastDisconnectedTimestamp()- Specified by:
getLastDisconnectedTimestampin interfaceorg.apache.pulsar.client.api.Consumer<T>
-
isConnected
public boolean isConnected()- Specified by:
isConnectedin interfaceorg.apache.pulsar.client.api.Consumer<T>
-
isConnected
-
getAvailablePermits
public int getAvailablePermits()- Specified by:
getAvailablePermitsin classConsumerBase<T>
-
numMessagesInQueue
public int numMessagesInQueue()- Specified by:
numMessagesInQueuein classConsumerBase<T>
-
redeliverUnacknowledgedMessages
public void redeliverUnacknowledgedMessages()- Specified by:
redeliverUnacknowledgedMessagesin interfaceorg.apache.pulsar.client.api.Consumer<T>
-
clearIncomingMessagesAndGetMessageNumber
public int clearIncomingMessagesAndGetMessageNumber() -
redeliverUnacknowledgedMessages
Description copied from class:ConsumerBaseRedelivers 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.- Specified by:
redeliverUnacknowledgedMessagesin classConsumerBase<T>
-
updateAutoScaleReceiverQueueHint
protected void updateAutoScaleReceiverQueueHint()- Specified by:
updateAutoScaleReceiverQueueHintin classConsumerBase<T>
-
completeOpBatchReceive
- Specified by:
completeOpBatchReceivein classConsumerBase<T>
-
seek
public void seek(org.apache.pulsar.client.api.MessageId messageId) throws org.apache.pulsar.client.api.PulsarClientException - Specified by:
seekin interfaceorg.apache.pulsar.client.api.Consumer<T>- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
seek
public void seek(long timestamp) throws org.apache.pulsar.client.api.PulsarClientException - Specified by:
seekin interfaceorg.apache.pulsar.client.api.Consumer<T>- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
seek
public void seek(Function<String, Object> function) throws org.apache.pulsar.client.api.PulsarClientException- Specified by:
seekin interfaceorg.apache.pulsar.client.api.Consumer<T>- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
seekAsync
- Specified by:
seekAsyncin interfaceorg.apache.pulsar.client.api.Consumer<T>
-
seekAsync
- Specified by:
seekAsyncin interfaceorg.apache.pulsar.client.api.Consumer<T>
-
seekAsync
- Specified by:
seekAsyncin interfaceorg.apache.pulsar.client.api.Consumer<T>
-
hasMessageAvailable
public boolean hasMessageAvailable() throws org.apache.pulsar.client.api.PulsarClientException- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
hasMessageAvailableAsync
-
getLastMessageIdAsync
- Specified by:
getLastMessageIdAsyncin interfaceorg.apache.pulsar.client.api.Consumer<T>- Specified by:
getLastMessageIdAsyncin classConsumerBase<T>
-
internalGetLastMessageIdAsync
public CompletableFuture<org.apache.pulsar.client.impl.ConsumerImpl.GetLastMessageIdResponse> internalGetLastMessageIdAsync() -
getStats
- Specified by:
getStatsin interfaceorg.apache.pulsar.client.api.Consumer<T>
-
hasReachedEndOfTopic
public boolean hasReachedEndOfTopic()- Specified by:
hasReachedEndOfTopicin interfaceorg.apache.pulsar.client.api.Consumer<T>
-
hashCode
public int hashCode() -
equals
-
getClientCnx
-
getTopicNameWithoutPartition
-
removeExpireIncompleteChunkedMessages
protected void removeExpireIncompleteChunkedMessages() -
getPossibleSendToDeadLetterTopicMessages
-
changeToReadyState
protected boolean changeToReadyState() -
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
-