Class ConsumerBase<T>

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, org.apache.pulsar.client.api.Consumer<T>
    Direct Known Subclasses:
    ConsumerImpl, MultiTopicsConsumerImpl

    public abstract class ConsumerBase<T>
    extends java.lang.Object
    implements org.apache.pulsar.client.api.Consumer<T>
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void acknowledge​(java.util.List<org.apache.pulsar.client.api.MessageId> messageIdList)  
      void acknowledge​(org.apache.pulsar.client.api.Message<?> message)  
      void acknowledge​(org.apache.pulsar.client.api.MessageId messageId)  
      void acknowledge​(org.apache.pulsar.client.api.Messages<?> messages)  
      java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeAsync​(java.util.List<org.apache.pulsar.client.api.MessageId> messageIdList)  
      java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeAsync​(org.apache.pulsar.client.api.Message<?> message)  
      java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeAsync​(org.apache.pulsar.client.api.MessageId messageId)  
      java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeAsync​(org.apache.pulsar.client.api.MessageId messageId, org.apache.pulsar.client.api.transaction.Transaction txn)  
      java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeAsync​(org.apache.pulsar.client.api.Messages<?> messages)  
      void acknowledgeCumulative​(org.apache.pulsar.client.api.Message<?> message)  
      void acknowledgeCumulative​(org.apache.pulsar.client.api.MessageId messageId)  
      java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeCumulativeAsync​(org.apache.pulsar.client.api.Message<?> message)  
      java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeCumulativeAsync​(org.apache.pulsar.client.api.MessageId messageId)  
      java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeCumulativeAsync​(org.apache.pulsar.client.api.MessageId messageId, org.apache.pulsar.client.api.transaction.Transaction txn)  
      org.apache.pulsar.client.api.Messages<T> batchReceive()  
      java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Messages<T>> batchReceiveAsync()  
      protected org.apache.pulsar.client.api.Message<T> beforeConsume​(org.apache.pulsar.client.api.Message<T> message)  
      protected void callMessageListener​(org.apache.pulsar.client.api.Message<T> msg)  
      protected boolean canEnqueueMessage​(org.apache.pulsar.client.api.Message<T> message)  
      protected boolean changeToConnecting()  
      protected boolean changeToReadyState()  
      protected boolean changeToRegisteringSchemaState()  
      protected void clearIncomingMessages()  
      void close()  
      abstract java.util.concurrent.CompletableFuture<java.lang.Void> closeAsync()  
      protected abstract void completeOpBatchReceive​(ConsumerBase.OpBatchReceive<T> op)  
      protected void completePendingBatchReceive​(java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Messages<T>> future, org.apache.pulsar.client.api.Messages<T> messages)  
      protected void completePendingReceive​(java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Message<T>> receivedFuture, org.apache.pulsar.client.api.Message<T> message)  
      protected void decreaseIncomingMessageSize​(org.apache.pulsar.client.api.Message<?> message)  
      protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> doAcknowledge​(java.util.List<org.apache.pulsar.client.api.MessageId> messageIdList, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, java.util.Map<java.lang.String,​java.lang.Long> properties, TransactionImpl txn)  
      protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> doAcknowledge​(org.apache.pulsar.client.api.MessageId messageId, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, java.util.Map<java.lang.String,​java.lang.Long> properties, TransactionImpl txn)  
      protected java.util.concurrent.CompletableFuture<java.lang.Void> doAcknowledgeWithTxn​(java.util.List<org.apache.pulsar.client.api.MessageId> messageIdList, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, java.util.Map<java.lang.String,​java.lang.Long> properties, TransactionImpl txn)  
      protected java.util.concurrent.CompletableFuture<java.lang.Void> doAcknowledgeWithTxn​(org.apache.pulsar.client.api.MessageId messageId, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, java.util.Map<java.lang.String,​java.lang.Long> properties, TransactionImpl txn)  
      protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> doReconsumeLater​(org.apache.pulsar.client.api.Message<?> message, org.apache.pulsar.common.api.proto.CommandAck.AckType ackType, java.util.Map<java.lang.String,​java.lang.String> customProperties, long delayTime, java.util.concurrent.TimeUnit unit)  
      protected boolean enqueueMessageAndCheckBatchReceive​(org.apache.pulsar.client.api.Message<T> message)  
      protected java.util.concurrent.CompletableFuture<java.lang.Void> failPendingReceive()  
      protected org.apache.pulsar.client.impl.HandlerState.State getAndUpdateState​(java.util.function.UnaryOperator<org.apache.pulsar.client.impl.HandlerState.State> updater)  
      abstract int getAvailablePermits()  
      PulsarClientImpl getClient()  
      java.lang.String getConsumerName()  
      long getIncomingMessageSize()  
      org.apache.pulsar.client.api.MessageId getLastMessageId()  
      abstract java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.MessageId> getLastMessageIdAsync()  
      protected MessagesImpl<T> getNewMessagesImpl()  
      protected org.apache.pulsar.client.impl.HandlerState.State getState()  
      java.lang.String getSubscription()  
      protected org.apache.pulsar.common.api.proto.CommandSubscribe.SubType getSubType()  
      java.lang.String getTopic()  
      int getTotalIncomingMessages()  
      boolean hasBatchReceiveTimeout()  
      protected boolean hasEnoughMessagesForBatchReceive()  
      protected boolean hasNextPendingReceive()  
      protected boolean hasPendingBatchReceive()  
      protected abstract org.apache.pulsar.client.api.Messages<T> internalBatchReceive()  
      protected abstract java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Messages<T>> internalBatchReceiveAsync()  
      protected abstract org.apache.pulsar.client.api.Message<T> internalReceive()  
      protected abstract org.apache.pulsar.client.api.Message<T> internalReceive​(long timeout, java.util.concurrent.TimeUnit unit)  
      protected abstract java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Message<T>> internalReceiveAsync()  
      protected boolean isValidConsumerEpoch​(MessageImpl<T> message)  
      protected abstract void messageProcessed​(org.apache.pulsar.client.api.Message<?> msg)  
      void negativeAcknowledge​(org.apache.pulsar.client.api.Message<?> message)  
      void negativeAcknowledge​(org.apache.pulsar.client.api.Messages<?> messages)  
      protected java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Message<T>> nextPendingReceive()  
      protected void notifyPendingBatchReceivedCallBack()  
      protected void notifyPendingBatchReceivedCallBack​(ConsumerBase.OpBatchReceive<T> opBatchReceive)  
      abstract int numMessagesInQueue()  
      protected void onAcknowledge​(org.apache.pulsar.client.api.MessageId messageId, java.lang.Throwable exception)  
      protected void onAcknowledgeCumulative​(org.apache.pulsar.client.api.MessageId messageId, java.lang.Throwable exception)  
      protected void onAckTimeoutSend​(java.util.Set<org.apache.pulsar.client.api.MessageId> messageIds)  
      protected void onNegativeAcksSend​(java.util.Set<org.apache.pulsar.client.api.MessageId> messageIds)  
      protected void onPartitionsChange​(java.lang.String topicName, int partitions)  
      protected byte[] peekMessageKey​(org.apache.pulsar.client.api.Message<T> msg)  
      org.apache.pulsar.client.api.Message<T> receive()  
      org.apache.pulsar.client.api.Message<T> receive​(int timeout, java.util.concurrent.TimeUnit unit)  
      java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Message<T>> receiveAsync()  
      void reconsumeLater​(org.apache.pulsar.client.api.Message<?> message, long delayTime, java.util.concurrent.TimeUnit unit)  
      void reconsumeLater​(org.apache.pulsar.client.api.Message<?> message, java.util.Map<java.lang.String,​java.lang.String> customProperties, long delayTime, java.util.concurrent.TimeUnit unit)  
      void reconsumeLater​(org.apache.pulsar.client.api.Messages<?> messages, long delayTime, java.util.concurrent.TimeUnit unit)  
      java.util.concurrent.CompletableFuture<java.lang.Void> reconsumeLaterAsync​(org.apache.pulsar.client.api.Message<?> message, long delayTime, java.util.concurrent.TimeUnit unit)  
      java.util.concurrent.CompletableFuture<java.lang.Void> reconsumeLaterAsync​(org.apache.pulsar.client.api.Message<?> message, java.util.Map<java.lang.String,​java.lang.String> customProperties, long delayTime, java.util.concurrent.TimeUnit unit)  
      java.util.concurrent.CompletableFuture<java.lang.Void> reconsumeLaterAsync​(org.apache.pulsar.client.api.Messages<?> messages, long delayTime, java.util.concurrent.TimeUnit unit)  
      void reconsumeLaterCumulative​(org.apache.pulsar.client.api.Message<?> message, long delayTime, java.util.concurrent.TimeUnit unit)  
      java.util.concurrent.CompletableFuture<java.lang.Void> reconsumeLaterCumulativeAsync​(org.apache.pulsar.client.api.Message<?> message, long delayTime, java.util.concurrent.TimeUnit unit)  
      java.util.concurrent.CompletableFuture<java.lang.Void> reconsumeLaterCumulativeAsync​(org.apache.pulsar.client.api.Message<?> message, java.util.Map<java.lang.String,​java.lang.String> customProperties, long delayTime, java.util.concurrent.TimeUnit unit)  
      protected abstract void redeliverUnacknowledgedMessages​(java.util.Set<org.apache.pulsar.client.api.MessageId> messageIds)
      Redelivers the given unacknowledged messages.
      protected void resetIncomingMessageSize()  
      protected void setMaxReceiverQueueSize​(int newSize)  
      protected void setState​(org.apache.pulsar.client.impl.HandlerState.State s)  
      java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Consumer<T>> subscribeFuture()  
      java.lang.String toString()  
      protected void triggerBatchReceiveTimeoutTask()  
      protected void tryTriggerListener()  
      void unsubscribe()  
      abstract java.util.concurrent.CompletableFuture<java.lang.Void> unsubscribeAsync()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface org.apache.pulsar.client.api.Consumer

        getLastDisconnectedTimestamp, getStats, hasReachedEndOfTopic, isConnected, negativeAcknowledge, pause, redeliverUnacknowledgedMessages, resume, seek, seek, seek, seekAsync, seekAsync, seekAsync
    • Field Detail

      • subscription

        protected final java.lang.String subscription
      • consumerName

        protected final java.lang.String consumerName
      • subscribeFuture

        protected final java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Consumer<T>> subscribeFuture
      • listener

        protected final org.apache.pulsar.client.api.MessageListener<T> listener
      • consumerEventListener

        protected final org.apache.pulsar.client.api.ConsumerEventListener consumerEventListener
      • externalPinnedExecutor

        protected final java.util.concurrent.ExecutorService externalPinnedExecutor
      • internalPinnedExecutor

        protected final java.util.concurrent.ExecutorService internalPinnedExecutor
      • unAckedChunkedMessageIdSequenceMap

        protected org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap<MessageIdImpl,​MessageIdImpl[]> unAckedChunkedMessageIdSequenceMap
      • pendingReceives

        protected final java.util.concurrent.ConcurrentLinkedQueue<java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Message<T>>> pendingReceives
      • maxReceiverQueueSize

        protected int maxReceiverQueueSize
      • schema

        protected final org.apache.pulsar.client.api.Schema<T> schema
      • batchReceivePolicy

        protected final org.apache.pulsar.client.api.BatchReceivePolicy batchReceivePolicy
      • incomingMessagesSize

        protected volatile long incomingMessagesSize
      • batchReceiveTimeout

        protected volatile io.netty.util.Timeout batchReceiveTimeout
      • reentrantLock

        protected final java.util.concurrent.locks.Lock reentrantLock
      • CONSUMER_EPOCH

        protected static final java.util.concurrent.atomic.AtomicLongFieldUpdater<ConsumerBase> CONSUMER_EPOCH
      • consumerEpoch

        protected volatile long consumerEpoch
      • topic

        protected final java.lang.String topic
    • Method Detail

      • triggerBatchReceiveTimeoutTask

        protected void triggerBatchReceiveTimeoutTask()
      • receive

        public org.apache.pulsar.client.api.Message<T> receive()
                                                        throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        receive in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • receiveAsync

        public java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Message<T>> receiveAsync()
        Specified by:
        receiveAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • internalReceive

        protected abstract org.apache.pulsar.client.api.Message<T> internalReceive()
                                                                            throws org.apache.pulsar.client.api.PulsarClientException
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • internalReceiveAsync

        protected abstract java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Message<T>> internalReceiveAsync()
      • receive

        public org.apache.pulsar.client.api.Message<T> receive​(int timeout,
                                                               java.util.concurrent.TimeUnit unit)
                                                        throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        receive in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • internalReceive

        protected abstract org.apache.pulsar.client.api.Message<T> internalReceive​(long timeout,
                                                                                   java.util.concurrent.TimeUnit unit)
                                                                            throws org.apache.pulsar.client.api.PulsarClientException
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • batchReceive

        public org.apache.pulsar.client.api.Messages<T> batchReceive()
                                                              throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        batchReceive in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • batchReceiveAsync

        public java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Messages<T>> batchReceiveAsync()
        Specified by:
        batchReceiveAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • hasNextPendingReceive

        protected boolean hasNextPendingReceive()
      • nextPendingReceive

        protected java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Message<T>> nextPendingReceive()
      • completePendingReceive

        protected void completePendingReceive​(java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Message<T>> receivedFuture,
                                              org.apache.pulsar.client.api.Message<T> message)
      • failPendingReceive

        protected java.util.concurrent.CompletableFuture<java.lang.Void> failPendingReceive()
      • internalBatchReceive

        protected abstract org.apache.pulsar.client.api.Messages<T> internalBatchReceive()
                                                                                  throws org.apache.pulsar.client.api.PulsarClientException
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • internalBatchReceiveAsync

        protected abstract java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Messages<T>> internalBatchReceiveAsync()
      • acknowledge

        public void acknowledge​(org.apache.pulsar.client.api.Message<?> message)
                         throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        acknowledge in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • acknowledge

        public void acknowledge​(org.apache.pulsar.client.api.MessageId messageId)
                         throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        acknowledge in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • acknowledge

        public void acknowledge​(java.util.List<org.apache.pulsar.client.api.MessageId> messageIdList)
                         throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        acknowledge in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • acknowledge

        public void acknowledge​(org.apache.pulsar.client.api.Messages<?> messages)
                         throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        acknowledge in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • reconsumeLater

        public void reconsumeLater​(org.apache.pulsar.client.api.Message<?> message,
                                   long delayTime,
                                   java.util.concurrent.TimeUnit unit)
                            throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        reconsumeLater in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • reconsumeLater

        public void reconsumeLater​(org.apache.pulsar.client.api.Message<?> message,
                                   java.util.Map<java.lang.String,​java.lang.String> customProperties,
                                   long delayTime,
                                   java.util.concurrent.TimeUnit unit)
                            throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        reconsumeLater in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • reconsumeLater

        public void reconsumeLater​(org.apache.pulsar.client.api.Messages<?> messages,
                                   long delayTime,
                                   java.util.concurrent.TimeUnit unit)
                            throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        reconsumeLater in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • acknowledgeCumulative

        public void acknowledgeCumulative​(org.apache.pulsar.client.api.Message<?> message)
                                   throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        acknowledgeCumulative in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • acknowledgeCumulative

        public void acknowledgeCumulative​(org.apache.pulsar.client.api.MessageId messageId)
                                   throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        acknowledgeCumulative in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • reconsumeLaterCumulative

        public void reconsumeLaterCumulative​(org.apache.pulsar.client.api.Message<?> message,
                                             long delayTime,
                                             java.util.concurrent.TimeUnit unit)
                                      throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        reconsumeLaterCumulative in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • acknowledgeAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeAsync​(org.apache.pulsar.client.api.Message<?> message)
        Specified by:
        acknowledgeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • acknowledgeAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeAsync​(org.apache.pulsar.client.api.Messages<?> messages)
        Specified by:
        acknowledgeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • acknowledgeAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeAsync​(java.util.List<org.apache.pulsar.client.api.MessageId> messageIdList)
        Specified by:
        acknowledgeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • reconsumeLaterAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> reconsumeLaterAsync​(org.apache.pulsar.client.api.Message<?> message,
                                                                                          long delayTime,
                                                                                          java.util.concurrent.TimeUnit unit)
        Specified by:
        reconsumeLaterAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • reconsumeLaterAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> reconsumeLaterAsync​(org.apache.pulsar.client.api.Message<?> message,
                                                                                          java.util.Map<java.lang.String,​java.lang.String> customProperties,
                                                                                          long delayTime,
                                                                                          java.util.concurrent.TimeUnit unit)
        Specified by:
        reconsumeLaterAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • reconsumeLaterAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> reconsumeLaterAsync​(org.apache.pulsar.client.api.Messages<?> messages,
                                                                                          long delayTime,
                                                                                          java.util.concurrent.TimeUnit unit)
        Specified by:
        reconsumeLaterAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • acknowledgeCumulativeAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeCumulativeAsync​(org.apache.pulsar.client.api.Message<?> message)
        Specified by:
        acknowledgeCumulativeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • reconsumeLaterCumulativeAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> reconsumeLaterCumulativeAsync​(org.apache.pulsar.client.api.Message<?> message,
                                                                                                    long delayTime,
                                                                                                    java.util.concurrent.TimeUnit unit)
        Specified by:
        reconsumeLaterCumulativeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • reconsumeLaterCumulativeAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> reconsumeLaterCumulativeAsync​(org.apache.pulsar.client.api.Message<?> message,
                                                                                                    java.util.Map<java.lang.String,​java.lang.String> customProperties,
                                                                                                    long delayTime,
                                                                                                    java.util.concurrent.TimeUnit unit)
        Specified by:
        reconsumeLaterCumulativeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • acknowledgeAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeAsync​(org.apache.pulsar.client.api.MessageId messageId)
        Specified by:
        acknowledgeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • acknowledgeAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeAsync​(org.apache.pulsar.client.api.MessageId messageId,
                                                                                       org.apache.pulsar.client.api.transaction.Transaction txn)
        Specified by:
        acknowledgeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • acknowledgeCumulativeAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeCumulativeAsync​(org.apache.pulsar.client.api.MessageId messageId)
        Specified by:
        acknowledgeCumulativeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • acknowledgeCumulativeAsync

        public java.util.concurrent.CompletableFuture<java.lang.Void> acknowledgeCumulativeAsync​(org.apache.pulsar.client.api.MessageId messageId,
                                                                                                 org.apache.pulsar.client.api.transaction.Transaction txn)
        Specified by:
        acknowledgeCumulativeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • negativeAcknowledge

        public void negativeAcknowledge​(org.apache.pulsar.client.api.Message<?> message)
        Specified by:
        negativeAcknowledge in interface org.apache.pulsar.client.api.Consumer<T>
      • doAcknowledgeWithTxn

        protected java.util.concurrent.CompletableFuture<java.lang.Void> doAcknowledgeWithTxn​(java.util.List<org.apache.pulsar.client.api.MessageId> messageIdList,
                                                                                              org.apache.pulsar.common.api.proto.CommandAck.AckType ackType,
                                                                                              java.util.Map<java.lang.String,​java.lang.Long> properties,
                                                                                              TransactionImpl txn)
      • doAcknowledgeWithTxn

        protected java.util.concurrent.CompletableFuture<java.lang.Void> doAcknowledgeWithTxn​(org.apache.pulsar.client.api.MessageId messageId,
                                                                                              org.apache.pulsar.common.api.proto.CommandAck.AckType ackType,
                                                                                              java.util.Map<java.lang.String,​java.lang.Long> properties,
                                                                                              TransactionImpl txn)
      • doAcknowledge

        protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> doAcknowledge​(org.apache.pulsar.client.api.MessageId messageId,
                                                                                                org.apache.pulsar.common.api.proto.CommandAck.AckType ackType,
                                                                                                java.util.Map<java.lang.String,​java.lang.Long> properties,
                                                                                                TransactionImpl txn)
      • doAcknowledge

        protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> doAcknowledge​(java.util.List<org.apache.pulsar.client.api.MessageId> messageIdList,
                                                                                                org.apache.pulsar.common.api.proto.CommandAck.AckType ackType,
                                                                                                java.util.Map<java.lang.String,​java.lang.Long> properties,
                                                                                                TransactionImpl txn)
      • doReconsumeLater

        protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> doReconsumeLater​(org.apache.pulsar.client.api.Message<?> message,
                                                                                                   org.apache.pulsar.common.api.proto.CommandAck.AckType ackType,
                                                                                                   java.util.Map<java.lang.String,​java.lang.String> customProperties,
                                                                                                   long delayTime,
                                                                                                   java.util.concurrent.TimeUnit unit)
      • negativeAcknowledge

        public void negativeAcknowledge​(org.apache.pulsar.client.api.Messages<?> messages)
        Specified by:
        negativeAcknowledge in interface org.apache.pulsar.client.api.Consumer<T>
      • unsubscribe

        public void unsubscribe()
                         throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        unsubscribe in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • unsubscribeAsync

        public abstract java.util.concurrent.CompletableFuture<java.lang.Void> unsubscribeAsync()
        Specified by:
        unsubscribeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • close

        public void close()
                   throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • closeAsync

        public abstract java.util.concurrent.CompletableFuture<java.lang.Void> closeAsync()
        Specified by:
        closeAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • getLastMessageId

        public org.apache.pulsar.client.api.MessageId getLastMessageId()
                                                                throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        getLastMessageId in interface org.apache.pulsar.client.api.Consumer<T>
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • getLastMessageIdAsync

        public abstract java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.MessageId> getLastMessageIdAsync()
        Specified by:
        getLastMessageIdAsync in interface org.apache.pulsar.client.api.Consumer<T>
      • getSubType

        protected org.apache.pulsar.common.api.proto.CommandSubscribe.SubType getSubType()
      • getAvailablePermits

        public abstract int getAvailablePermits()
      • numMessagesInQueue

        public abstract int numMessagesInQueue()
      • subscribeFuture

        public java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Consumer<T>> subscribeFuture()
      • getTopic

        public java.lang.String getTopic()
        Specified by:
        getTopic in interface org.apache.pulsar.client.api.Consumer<T>
      • getSubscription

        public java.lang.String getSubscription()
        Specified by:
        getSubscription in interface org.apache.pulsar.client.api.Consumer<T>
      • getConsumerName

        public java.lang.String getConsumerName()
        Specified by:
        getConsumerName in interface org.apache.pulsar.client.api.Consumer<T>
      • redeliverUnacknowledgedMessages

        protected abstract void redeliverUnacknowledgedMessages​(java.util.Set<org.apache.pulsar.client.api.MessageId> messageIds)
        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

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • setMaxReceiverQueueSize

        protected void setMaxReceiverQueueSize​(int newSize)
      • beforeConsume

        protected org.apache.pulsar.client.api.Message<T> beforeConsume​(org.apache.pulsar.client.api.Message<T> message)
      • onAcknowledge

        protected void onAcknowledge​(org.apache.pulsar.client.api.MessageId messageId,
                                     java.lang.Throwable exception)
      • onAcknowledgeCumulative

        protected void onAcknowledgeCumulative​(org.apache.pulsar.client.api.MessageId messageId,
                                               java.lang.Throwable exception)
      • onNegativeAcksSend

        protected void onNegativeAcksSend​(java.util.Set<org.apache.pulsar.client.api.MessageId> messageIds)
      • onAckTimeoutSend

        protected void onAckTimeoutSend​(java.util.Set<org.apache.pulsar.client.api.MessageId> messageIds)
      • onPartitionsChange

        protected void onPartitionsChange​(java.lang.String topicName,
                                          int partitions)
      • canEnqueueMessage

        protected boolean canEnqueueMessage​(org.apache.pulsar.client.api.Message<T> message)
      • enqueueMessageAndCheckBatchReceive

        protected boolean enqueueMessageAndCheckBatchReceive​(org.apache.pulsar.client.api.Message<T> message)
      • hasEnoughMessagesForBatchReceive

        protected boolean hasEnoughMessagesForBatchReceive()
      • notifyPendingBatchReceivedCallBack

        protected void notifyPendingBatchReceivedCallBack()
      • notifyPendingBatchReceivedCallBack

        protected final void notifyPendingBatchReceivedCallBack​(ConsumerBase.OpBatchReceive<T> opBatchReceive)
      • completePendingBatchReceive

        protected void completePendingBatchReceive​(java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Messages<T>> future,
                                                   org.apache.pulsar.client.api.Messages<T> messages)
      • messageProcessed

        protected abstract void messageProcessed​(org.apache.pulsar.client.api.Message<?> msg)
      • tryTriggerListener

        protected void tryTriggerListener()
      • callMessageListener

        protected void callMessageListener​(org.apache.pulsar.client.api.Message<T> msg)
      • peekMessageKey

        protected byte[] peekMessageKey​(org.apache.pulsar.client.api.Message<T> msg)
      • getNewMessagesImpl

        protected MessagesImpl<T> getNewMessagesImpl()
      • hasPendingBatchReceive

        protected boolean hasPendingBatchReceive()
      • resetIncomingMessageSize

        protected void resetIncomingMessageSize()
      • decreaseIncomingMessageSize

        protected void decreaseIncomingMessageSize​(org.apache.pulsar.client.api.Message<?> message)
      • getIncomingMessageSize

        public long getIncomingMessageSize()
      • getTotalIncomingMessages

        public int getTotalIncomingMessages()
      • clearIncomingMessages

        protected void clearIncomingMessages()
      • isValidConsumerEpoch

        protected boolean isValidConsumerEpoch​(MessageImpl<T> message)
      • hasBatchReceiveTimeout

        public boolean hasBatchReceiveTimeout()
      • 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​(java.util.function.UnaryOperator<org.apache.pulsar.client.impl.HandlerState.State> updater)