Package org.apache.pulsar.client.impl
Class PulsarClientImpl
- java.lang.Object
-
- org.apache.pulsar.client.impl.PulsarClientImpl
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,org.apache.pulsar.client.api.PulsarClient
public class PulsarClientImpl extends java.lang.Object implements org.apache.pulsar.client.api.PulsarClient
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classPulsarClientImpl.State
-
Field Summary
Fields Modifier and Type Field Description protected ClientConfigurationDataconfprotected io.netty.channel.EventLoopGroupeventLoopGroup
-
Constructor Summary
Constructors Constructor Description PulsarClientImpl(ClientConfigurationData conf)PulsarClientImpl(ClientConfigurationData conf, io.netty.channel.EventLoopGroup eventLoopGroup)PulsarClientImpl(ClientConfigurationData conf, io.netty.channel.EventLoopGroup eventLoopGroup, ConnectionPool cnxPool)PulsarClientImpl(ClientConfigurationData conf, io.netty.channel.EventLoopGroup eventLoopGroup, ConnectionPool cnxPool, io.netty.util.Timer timer)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()java.util.concurrent.CompletableFuture<java.lang.Void>closeAsync()protected <T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Reader<T>>createMultiTopicReaderAsync(ReaderConfigurationData<T> conf, org.apache.pulsar.client.api.Schema<T> schema)java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Producer<byte[]>>createProducerAsync(ProducerConfigurationData conf)<T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Producer<T>>createProducerAsync(ProducerConfigurationData conf, org.apache.pulsar.client.api.Schema<T> schema)<T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Producer<T>>createProducerAsync(ProducerConfigurationData conf, org.apache.pulsar.client.api.Schema<T> schema, ProducerInterceptors interceptors)java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Reader<byte[]>>createReaderAsync(ReaderConfigurationData<byte[]> conf)<T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Reader<T>>createReaderAsync(ReaderConfigurationData<T> conf, org.apache.pulsar.client.api.Schema<T> schema)protected <T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Reader<T>>createSingleTopicReaderAsync(ReaderConfigurationData<T> conf, org.apache.pulsar.client.api.Schema<T> schema)io.netty.channel.EventLoopGroupeventLoopGroup()ExecutorProviderexternalExecutorProvider()java.time.ClockgetClientClock()ConnectionPoolgetCnxPool()ClientConfigurationDatagetConfiguration()java.util.concurrent.CompletableFuture<ClientCnx>getConnection(java.lang.String topic)java.util.concurrent.CompletableFuture<ClientCnx>getConnection(java.net.InetSocketAddress logicalAddress, java.net.InetSocketAddress physicalAddress)java.util.concurrent.ExecutorServicegetInternalExecutorService()LookupServicegetLookup()MemoryLimitControllergetMemoryLimitController()java.util.concurrent.CompletableFuture<java.lang.Integer>getNumberOfPartitions(java.lang.String topic)java.util.concurrent.CompletableFuture<org.apache.pulsar.common.partition.PartitionedTopicMetadata>getPartitionedTopicMetadata(java.lang.String topic)java.util.concurrent.CompletableFuture<java.util.List<java.lang.String>>getPartitionsForTopic(java.lang.String topic)ScheduledExecutorProvidergetScheduledExecutorProvider()java.util.concurrent.CompletableFuture<java.util.Optional<org.apache.pulsar.common.schema.SchemaInfo>>getSchema(java.lang.String topic)Read the schema information for a given topic.com.google.common.cache.LoadingCache<java.lang.String,org.apache.pulsar.client.api.schema.SchemaInfoProvider>getSchemaProviderLoadingCache()java.util.concurrent.atomic.AtomicReference<PulsarClientImpl.State>getState()booleanisClosed()org.apache.pulsar.client.api.ConsumerBuilder<byte[]>newConsumer()<T> org.apache.pulsar.client.api.ConsumerBuilder<T>newConsumer(org.apache.pulsar.client.api.Schema<T> schema)protected <T> PartitionedProducerImpl<T>newPartitionedProducerImpl(java.lang.String topic, ProducerConfigurationData conf, org.apache.pulsar.client.api.Schema<T> schema, ProducerInterceptors interceptors, java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Producer<T>> producerCreatedFuture, org.apache.pulsar.common.partition.PartitionedTopicMetadata metadata)Factory method for creating PartitionedProducerImpl instance.org.apache.pulsar.client.api.ProducerBuilder<byte[]>newProducer()<T> org.apache.pulsar.client.api.ProducerBuilder<T>newProducer(org.apache.pulsar.client.api.Schema<T> schema)protected <T> ProducerImpl<T>newProducerImpl(java.lang.String topic, int partitionIndex, ProducerConfigurationData conf, org.apache.pulsar.client.api.Schema<T> schema, ProducerInterceptors interceptors, java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Producer<T>> producerCreatedFuture)Factory method for creating ProducerImpl instance.org.apache.pulsar.client.api.ReaderBuilder<byte[]>newReader()<T> org.apache.pulsar.client.api.ReaderBuilder<T>newReader(org.apache.pulsar.client.api.Schema<T> schema)longnewRequestId()org.apache.pulsar.client.api.transaction.TransactionBuildernewTransaction()java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Consumer<byte[]>>patternTopicSubscribeAsync(ConsumerConfigurationData<byte[]> conf)protected <T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Schema<T>>preProcessSchemaBeforeSubscribe(PulsarClientImpl pulsarClientImpl, org.apache.pulsar.client.api.Schema<T> schema, java.lang.String topicName)voidreloadLookUp()voidshutdown()java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Consumer<byte[]>>subscribeAsync(ConsumerConfigurationData<byte[]> conf)<T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Consumer<T>>subscribeAsync(ConsumerConfigurationData<T> conf, org.apache.pulsar.client.api.Schema<T> schema, ConsumerInterceptors<T> interceptors)io.netty.util.Timertimer()visible for pulsar-functionsstatic java.util.List<java.lang.String>topicsPatternFilter(java.util.List<java.lang.String> original, java.util.regex.Pattern topicsPattern)voidupdateServiceUrl(java.lang.String serviceUrl)
-
-
-
Field Detail
-
conf
protected final ClientConfigurationData conf
-
eventLoopGroup
protected final io.netty.channel.EventLoopGroup eventLoopGroup
-
-
Constructor Detail
-
PulsarClientImpl
public PulsarClientImpl(ClientConfigurationData conf) throws org.apache.pulsar.client.api.PulsarClientException
- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
PulsarClientImpl
public PulsarClientImpl(ClientConfigurationData conf, io.netty.channel.EventLoopGroup eventLoopGroup) throws org.apache.pulsar.client.api.PulsarClientException
- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
PulsarClientImpl
public PulsarClientImpl(ClientConfigurationData conf, io.netty.channel.EventLoopGroup eventLoopGroup, ConnectionPool cnxPool) throws org.apache.pulsar.client.api.PulsarClientException
- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
PulsarClientImpl
public PulsarClientImpl(ClientConfigurationData conf, io.netty.channel.EventLoopGroup eventLoopGroup, ConnectionPool cnxPool, io.netty.util.Timer timer) throws org.apache.pulsar.client.api.PulsarClientException
- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
-
Method Detail
-
getConfiguration
public ClientConfigurationData getConfiguration()
-
getClientClock
public java.time.Clock getClientClock()
-
getState
public java.util.concurrent.atomic.AtomicReference<PulsarClientImpl.State> getState()
-
newProducer
public org.apache.pulsar.client.api.ProducerBuilder<byte[]> newProducer()
- Specified by:
newProducerin interfaceorg.apache.pulsar.client.api.PulsarClient
-
newProducer
public <T> org.apache.pulsar.client.api.ProducerBuilder<T> newProducer(org.apache.pulsar.client.api.Schema<T> schema)
- Specified by:
newProducerin interfaceorg.apache.pulsar.client.api.PulsarClient
-
newConsumer
public org.apache.pulsar.client.api.ConsumerBuilder<byte[]> newConsumer()
- Specified by:
newConsumerin interfaceorg.apache.pulsar.client.api.PulsarClient
-
newConsumer
public <T> org.apache.pulsar.client.api.ConsumerBuilder<T> newConsumer(org.apache.pulsar.client.api.Schema<T> schema)
- Specified by:
newConsumerin interfaceorg.apache.pulsar.client.api.PulsarClient
-
newReader
public org.apache.pulsar.client.api.ReaderBuilder<byte[]> newReader()
- Specified by:
newReaderin interfaceorg.apache.pulsar.client.api.PulsarClient
-
newReader
public <T> org.apache.pulsar.client.api.ReaderBuilder<T> newReader(org.apache.pulsar.client.api.Schema<T> schema)
- Specified by:
newReaderin interfaceorg.apache.pulsar.client.api.PulsarClient
-
createProducerAsync
public java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Producer<byte[]>> createProducerAsync(ProducerConfigurationData conf)
-
createProducerAsync
public <T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Producer<T>> createProducerAsync(ProducerConfigurationData conf, org.apache.pulsar.client.api.Schema<T> schema)
-
createProducerAsync
public <T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Producer<T>> createProducerAsync(ProducerConfigurationData conf, org.apache.pulsar.client.api.Schema<T> schema, ProducerInterceptors interceptors)
-
newPartitionedProducerImpl
protected <T> PartitionedProducerImpl<T> newPartitionedProducerImpl(java.lang.String topic, ProducerConfigurationData conf, org.apache.pulsar.client.api.Schema<T> schema, ProducerInterceptors interceptors, java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Producer<T>> producerCreatedFuture, org.apache.pulsar.common.partition.PartitionedTopicMetadata metadata)
Factory method for creating PartitionedProducerImpl instance. Allows overriding the PartitionedProducerImpl instance in tests.- Type Parameters:
T- message type class- Parameters:
topic- topic nameconf- producer configurationschema- topic schemainterceptors- producer interceptorsproducerCreatedFuture- future for signaling completion of async producer creationmetadata- partitioned topic metadata- Returns:
- new PartitionedProducerImpl instance
-
newProducerImpl
protected <T> ProducerImpl<T> newProducerImpl(java.lang.String topic, int partitionIndex, ProducerConfigurationData conf, org.apache.pulsar.client.api.Schema<T> schema, ProducerInterceptors interceptors, java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Producer<T>> producerCreatedFuture)
Factory method for creating ProducerImpl instance. Allows overriding the ProducerImpl instance in tests.- Type Parameters:
T- message type class- Parameters:
topic- topic namepartitionIndex- partition index of a partitioned topic. the value -1 is used for non-partitioned topics.conf- producer configurationschema- topic schemainterceptors- producer interceptorsproducerCreatedFuture- future for signaling completion of async producer creation- Returns:
- a producer instance
-
subscribeAsync
public java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Consumer<byte[]>> subscribeAsync(ConsumerConfigurationData<byte[]> conf)
-
subscribeAsync
public <T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Consumer<T>> subscribeAsync(ConsumerConfigurationData<T> conf, org.apache.pulsar.client.api.Schema<T> schema, ConsumerInterceptors<T> interceptors)
-
patternTopicSubscribeAsync
public java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Consumer<byte[]>> patternTopicSubscribeAsync(ConsumerConfigurationData<byte[]> conf)
-
topicsPatternFilter
public static java.util.List<java.lang.String> topicsPatternFilter(java.util.List<java.lang.String> original, java.util.regex.Pattern topicsPattern)
-
createReaderAsync
public java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Reader<byte[]>> createReaderAsync(ReaderConfigurationData<byte[]> conf)
-
createReaderAsync
public <T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Reader<T>> createReaderAsync(ReaderConfigurationData<T> conf, org.apache.pulsar.client.api.Schema<T> schema)
-
createMultiTopicReaderAsync
protected <T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Reader<T>> createMultiTopicReaderAsync(ReaderConfigurationData<T> conf, org.apache.pulsar.client.api.Schema<T> schema)
-
createSingleTopicReaderAsync
protected <T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Reader<T>> createSingleTopicReaderAsync(ReaderConfigurationData<T> conf, org.apache.pulsar.client.api.Schema<T> schema)
-
getSchema
public java.util.concurrent.CompletableFuture<java.util.Optional<org.apache.pulsar.common.schema.SchemaInfo>> getSchema(java.lang.String topic)
Read the schema information for a given topic. If the topic does not exist or it has no schema associated, it will return an empty response
-
close
public void close() throws org.apache.pulsar.client.api.PulsarClientException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Specified by:
closein interfaceorg.apache.pulsar.client.api.PulsarClient- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
closeAsync
public java.util.concurrent.CompletableFuture<java.lang.Void> closeAsync()
- Specified by:
closeAsyncin interfaceorg.apache.pulsar.client.api.PulsarClient
-
shutdown
public void shutdown() throws org.apache.pulsar.client.api.PulsarClientException- Specified by:
shutdownin interfaceorg.apache.pulsar.client.api.PulsarClient- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
isClosed
public boolean isClosed()
- Specified by:
isClosedin interfaceorg.apache.pulsar.client.api.PulsarClient
-
updateServiceUrl
public void updateServiceUrl(java.lang.String serviceUrl) throws org.apache.pulsar.client.api.PulsarClientException- Specified by:
updateServiceUrlin interfaceorg.apache.pulsar.client.api.PulsarClient- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
getConnection
public java.util.concurrent.CompletableFuture<ClientCnx> getConnection(java.lang.String topic)
-
getConnection
public java.util.concurrent.CompletableFuture<ClientCnx> getConnection(java.net.InetSocketAddress logicalAddress, java.net.InetSocketAddress physicalAddress)
-
timer
public io.netty.util.Timer timer()
visible for pulsar-functions
-
externalExecutorProvider
public ExecutorProvider externalExecutorProvider()
-
newRequestId
public long newRequestId()
-
getCnxPool
public ConnectionPool getCnxPool()
-
eventLoopGroup
public io.netty.channel.EventLoopGroup eventLoopGroup()
-
getLookup
public LookupService getLookup()
-
reloadLookUp
public void reloadLookUp() throws org.apache.pulsar.client.api.PulsarClientException- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
getNumberOfPartitions
public java.util.concurrent.CompletableFuture<java.lang.Integer> getNumberOfPartitions(java.lang.String topic)
-
getPartitionedTopicMetadata
public java.util.concurrent.CompletableFuture<org.apache.pulsar.common.partition.PartitionedTopicMetadata> getPartitionedTopicMetadata(java.lang.String topic)
-
getPartitionsForTopic
public java.util.concurrent.CompletableFuture<java.util.List<java.lang.String>> getPartitionsForTopic(java.lang.String topic)
- Specified by:
getPartitionsForTopicin interfaceorg.apache.pulsar.client.api.PulsarClient
-
getSchemaProviderLoadingCache
public com.google.common.cache.LoadingCache<java.lang.String,org.apache.pulsar.client.api.schema.SchemaInfoProvider> getSchemaProviderLoadingCache()
-
getMemoryLimitController
public MemoryLimitController getMemoryLimitController()
-
preProcessSchemaBeforeSubscribe
protected <T> java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.Schema<T>> preProcessSchemaBeforeSubscribe(PulsarClientImpl pulsarClientImpl, org.apache.pulsar.client.api.Schema<T> schema, java.lang.String topicName)
-
getInternalExecutorService
public java.util.concurrent.ExecutorService getInternalExecutorService()
-
getScheduledExecutorProvider
public ScheduledExecutorProvider getScheduledExecutorProvider()
-
newTransaction
public org.apache.pulsar.client.api.transaction.TransactionBuilder newTransaction() throws org.apache.pulsar.client.api.PulsarClientException- Specified by:
newTransactionin interfaceorg.apache.pulsar.client.api.PulsarClient- Throws:
org.apache.pulsar.client.api.PulsarClientException
-
-