Package org.apache.pulsar.client.impl
Class MultiTopicsConsumerImpl<T>
- java.lang.Object
-
- org.apache.pulsar.client.impl.ConsumerBase<T>
-
- org.apache.pulsar.client.impl.MultiTopicsConsumerImpl<T>
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,org.apache.pulsar.client.api.Consumer<T>
- Direct Known Subclasses:
PatternMultiTopicsConsumerImpl
public class MultiTopicsConsumerImpl<T> extends ConsumerBase<T>
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.pulsar.client.impl.ConsumerBase
ConsumerBase.OpBatchReceive<T>
-
-
Field Summary
Fields Modifier and Type Field Description protected PulsarClientImplclientstatic java.lang.StringDUMMY_TOPIC_NAME_PREFIXprotected java.util.concurrent.ConcurrentHashMap<java.lang.String,java.lang.Integer>partitionedTopicsprotected java.lang.Stringtopic-
Fields inherited from class org.apache.pulsar.client.impl.ConsumerBase
batchReceivePolicy, batchReceiveTimeout, conf, consumerEventListener, consumerName, executorProvider, externalPinnedExecutor, incomingMessagesSize, interceptors, internalPinnedExecutor, listener, maxReceiverQueueSize, pendingBatchReceives, pendingReceives, reentrantLock, schema, subscribeFuture, subscription, unAckedChunkedMessageIdSequenceMap
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleanchangeToConnecting()protected booleanchangeToReadyState()protected booleanchangeToRegisteringSchemaState()java.util.concurrent.CompletableFuture<java.lang.Void>closeAsync()protected voidcompleteOpBatchReceive(ConsumerBase.OpBatchReceive<T> op)static <T> MultiTopicsConsumerImpl<T>createPartitionedConsumer(PulsarClientImpl client, ConsumerConfigurationData<T> conf, ExecutorProvider executorProvider, java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Consumer<T>> subscribeFuture, int numPartitions, org.apache.pulsar.client.api.Schema<T> schema, ConsumerInterceptors<T> interceptors)protected 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 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 txnImpl)protected 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.Long> properties, long delayTime, java.util.concurrent.TimeUnit unit)protected org.apache.pulsar.client.impl.HandlerState.StategetAndUpdateState(java.util.function.UnaryOperator<org.apache.pulsar.client.impl.HandlerState.State> updater)intgetAvailablePermits()PulsarClientImplgetClient()java.util.List<ConsumerImpl<T>>getConsumers()longgetLastDisconnectedTimestamp()java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.MessageId>getLastMessageIdAsync()java.util.List<java.lang.String>getPartitionedTopics()java.util.List<java.lang.String>getPartitions()io.netty.util.TimeoutgetPartitionsAutoUpdateTimeout()protected org.apache.pulsar.client.impl.HandlerState.StategetState()org.apache.pulsar.client.api.ConsumerStatsgetStats()UnAckedMessageTrackergetUnAckedMessageTracker()booleanhasMessageAvailable()java.util.concurrent.CompletableFuture<java.lang.Boolean>hasMessageAvailableAsync()booleanhasReachedEndOfTopic()protected org.apache.pulsar.client.api.Messages<T>internalBatchReceive()protected java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Messages<T>>internalBatchReceiveAsync()protected org.apache.pulsar.client.api.Message<T>internalReceive()protected org.apache.pulsar.client.api.Message<T>internalReceive(int timeout, java.util.concurrent.TimeUnit unit)protected java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Message<T>>internalReceiveAsync()booleanisConnected()static booleanisIllegalMultiTopicsMessageId(org.apache.pulsar.client.api.MessageId messageId)protected voidmessageProcessed(org.apache.pulsar.client.api.Message<?> msg)voidnegativeAcknowledge(org.apache.pulsar.client.api.MessageId messageId)intnumMessagesInQueue()voidpause()voidredeliverUnacknowledgedMessages()voidredeliverUnacknowledgedMessages(java.util.Set<org.apache.pulsar.client.api.MessageId> messageIds)Redelivers the given unacknowledged messages.java.util.concurrent.CompletableFuture<java.lang.Void>removeConsumerAsync(java.lang.String topicName)voidresume()voidseek(long timestamp)voidseek(java.util.function.Function<java.lang.String,java.lang.Object> function)voidseek(org.apache.pulsar.client.api.MessageId messageId)java.util.concurrent.CompletableFuture<java.lang.Void>seekAsync(long timestamp)java.util.concurrent.CompletableFuture<java.lang.Void>seekAsync(java.util.function.Function<java.lang.String,java.lang.Object> function)java.util.concurrent.CompletableFuture<java.lang.Void>seekAsync(org.apache.pulsar.client.api.MessageId messageId)protected voidsetState(org.apache.pulsar.client.impl.HandlerState.State s)java.util.concurrent.CompletableFuture<java.lang.Void>subscribeAsync(java.lang.String topicName, boolean createTopicIfDoesNotExist)voidtryAcknowledgeMessage(org.apache.pulsar.client.api.Message<T> msg)java.util.concurrent.CompletableFuture<java.lang.Void>unsubscribeAsync()java.util.concurrent.CompletableFuture<java.lang.Void>unsubscribeAsync(java.lang.String topicName)-
Methods inherited from class org.apache.pulsar.client.impl.ConsumerBase
acknowledge, acknowledge, acknowledge, acknowledge, acknowledgeAsync, acknowledgeAsync, acknowledgeAsync, acknowledgeAsync, acknowledgeAsync, acknowledgeCumulative, acknowledgeCumulative, acknowledgeCumulativeAsync, acknowledgeCumulativeAsync, acknowledgeCumulativeAsync, batchReceive, batchReceiveAsync, beforeConsume, callMessageListener, canEnqueueMessage, clearIncomingMessages, close, completePendingBatchReceive, completePendingReceive, decreaseIncomingMessageSize, doAcknowledgeWithTxn, doAcknowledgeWithTxn, enqueueMessageAndCheckBatchReceive, failPendingReceive, getConsumerName, getIncomingMessageSize, getLastMessageId, getNewMessagesImpl, getSubscription, getSubType, getTopic, getTotalIncomingMessages, hasBatchReceiveTimeout, hasEnoughMessagesForBatchReceive, hasNextPendingReceive, hasPendingBatchReceive, negativeAcknowledge, negativeAcknowledge, nextPendingReceive, notifyPendingBatchReceivedCallBack, notifyPendingBatchReceivedCallBack, onAcknowledge, onAcknowledgeCumulative, onAckTimeoutSend, onNegativeAcksSend, onPartitionsChange, peekMessageKey, receive, receive, receiveAsync, reconsumeLater, reconsumeLater, reconsumeLaterAsync, reconsumeLaterAsync, reconsumeLaterCumulative, reconsumeLaterCumulativeAsync, resetIncomingMessageSize, setMaxReceiverQueueSize, subscribeFuture, toString, triggerBatchReceiveTimeoutTask, tryTriggerListener, unsubscribe
-
-
-
-
Field Detail
-
DUMMY_TOPIC_NAME_PREFIX
public static final java.lang.String DUMMY_TOPIC_NAME_PREFIX
- See Also:
- Constant Field Values
-
partitionedTopics
protected final java.util.concurrent.ConcurrentHashMap<java.lang.String,java.lang.Integer> partitionedTopics
-
client
protected final PulsarClientImpl client
-
topic
protected final java.lang.String topic
-
-
Method Detail
-
messageProcessed
protected void messageProcessed(org.apache.pulsar.client.api.Message<?> msg)
- Specified by:
messageProcessedin 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
-
internalReceive
protected org.apache.pulsar.client.api.Message<T> internalReceive(int timeout, java.util.concurrent.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
protected java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Messages<T>> internalBatchReceiveAsync()
- Specified by:
internalBatchReceiveAsyncin classConsumerBase<T>
-
internalReceiveAsync
protected java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Message<T>> internalReceiveAsync()
- Specified by:
internalReceiveAsyncin classConsumerBase<T>
-
doAcknowledge
protected 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 txnImpl)- Specified by:
doAcknowledgein classConsumerBase<T>
-
doAcknowledge
protected 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)- Specified by:
doAcknowledgein classConsumerBase<T>
-
doReconsumeLater
protected 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.Long> properties, long delayTime, java.util.concurrent.TimeUnit unit)- Specified by:
doReconsumeLaterin classConsumerBase<T>
-
negativeAcknowledge
public void negativeAcknowledge(org.apache.pulsar.client.api.MessageId messageId)
-
unsubscribeAsync
public java.util.concurrent.CompletableFuture<java.lang.Void> unsubscribeAsync()
- Specified by:
unsubscribeAsyncin interfaceorg.apache.pulsar.client.api.Consumer<T>- Specified by:
unsubscribeAsyncin classConsumerBase<T>
-
closeAsync
public java.util.concurrent.CompletableFuture<java.lang.Void> closeAsync()
- Specified by:
closeAsyncin interfaceorg.apache.pulsar.client.api.Consumer<T>- Specified by:
closeAsyncin classConsumerBase<T>
-
isConnected
public boolean isConnected()
-
redeliverUnacknowledgedMessages
public void redeliverUnacknowledgedMessages()
-
redeliverUnacknowledgedMessages
public void redeliverUnacknowledgedMessages(java.util.Set<org.apache.pulsar.client.api.MessageId> messageIds)
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>
-
completeOpBatchReceive
protected void completeOpBatchReceive(ConsumerBase.OpBatchReceive<T> op)
- Specified by:
completeOpBatchReceivein classConsumerBase<T>
-
seek
public void seek(org.apache.pulsar.client.api.MessageId messageId) throws org.apache.pulsar.client.api.PulsarClientException- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
seek
public void seek(long timestamp) throws org.apache.pulsar.client.api.PulsarClientException- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
seek
public void seek(java.util.function.Function<java.lang.String,java.lang.Object> function) throws org.apache.pulsar.client.api.PulsarClientException- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
seekAsync
public java.util.concurrent.CompletableFuture<java.lang.Void> seekAsync(java.util.function.Function<java.lang.String,java.lang.Object> function)
-
seekAsync
public java.util.concurrent.CompletableFuture<java.lang.Void> seekAsync(org.apache.pulsar.client.api.MessageId messageId)
-
seekAsync
public java.util.concurrent.CompletableFuture<java.lang.Void> seekAsync(long timestamp)
-
getAvailablePermits
public int getAvailablePermits()
- Specified by:
getAvailablePermitsin classConsumerBase<T>
-
hasReachedEndOfTopic
public boolean hasReachedEndOfTopic()
-
hasMessageAvailable
public boolean hasMessageAvailable() throws org.apache.pulsar.client.api.PulsarClientException- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
hasMessageAvailableAsync
public java.util.concurrent.CompletableFuture<java.lang.Boolean> hasMessageAvailableAsync()
-
numMessagesInQueue
public int numMessagesInQueue()
- Specified by:
numMessagesInQueuein classConsumerBase<T>
-
getStats
public org.apache.pulsar.client.api.ConsumerStats getStats()
-
getUnAckedMessageTracker
public UnAckedMessageTracker getUnAckedMessageTracker()
-
subscribeAsync
public java.util.concurrent.CompletableFuture<java.lang.Void> subscribeAsync(java.lang.String topicName, boolean createTopicIfDoesNotExist)
-
createPartitionedConsumer
public static <T> MultiTopicsConsumerImpl<T> createPartitionedConsumer(PulsarClientImpl client, ConsumerConfigurationData<T> conf, ExecutorProvider executorProvider, java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Consumer<T>> subscribeFuture, int numPartitions, org.apache.pulsar.client.api.Schema<T> schema, ConsumerInterceptors<T> interceptors)
-
unsubscribeAsync
public java.util.concurrent.CompletableFuture<java.lang.Void> unsubscribeAsync(java.lang.String topicName)
-
removeConsumerAsync
public java.util.concurrent.CompletableFuture<java.lang.Void> removeConsumerAsync(java.lang.String topicName)
-
getPartitionedTopics
public java.util.List<java.lang.String> getPartitionedTopics()
-
getPartitions
public java.util.List<java.lang.String> getPartitions()
-
getConsumers
public java.util.List<ConsumerImpl<T>> getConsumers()
-
pause
public void pause()
-
resume
public void resume()
-
getLastDisconnectedTimestamp
public long getLastDisconnectedTimestamp()
-
getPartitionsAutoUpdateTimeout
public io.netty.util.Timeout getPartitionsAutoUpdateTimeout()
-
getLastMessageIdAsync
public java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.MessageId> getLastMessageIdAsync()
- Specified by:
getLastMessageIdAsyncin interfaceorg.apache.pulsar.client.api.Consumer<T>- Specified by:
getLastMessageIdAsyncin classConsumerBase<T>
-
isIllegalMultiTopicsMessageId
public static boolean isIllegalMultiTopicsMessageId(org.apache.pulsar.client.api.MessageId messageId)
-
tryAcknowledgeMessage
public void tryAcknowledgeMessage(org.apache.pulsar.client.api.Message<T> msg)
-
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)
-
getClient
public PulsarClientImpl getClient()
-
-