Class 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
    • Field Detail

      • 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

      • getClientClock

        public java.time.Clock getClientClock()
      • newProducer

        public org.apache.pulsar.client.api.ProducerBuilder<byte[]> newProducer()
        Specified by:
        newProducer in interface org.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:
        newProducer in interface org.apache.pulsar.client.api.PulsarClient
      • newConsumer

        public org.apache.pulsar.client.api.ConsumerBuilder<byte[]> newConsumer()
        Specified by:
        newConsumer in interface org.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:
        newConsumer in interface org.apache.pulsar.client.api.PulsarClient
      • newReader

        public org.apache.pulsar.client.api.ReaderBuilder<byte[]> newReader()
        Specified by:
        newReader in interface org.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:
        newReader in interface org.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 name
        conf - producer configuration
        schema - topic schema
        interceptors - producer interceptors
        producerCreatedFuture - future for signaling completion of async producer creation
        metadata - 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 name
        partitionIndex - partition index of a partitioned topic. the value -1 is used for non-partitioned topics.
        conf - producer configuration
        schema - topic schema
        interceptors - producer interceptors
        producerCreatedFuture - 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:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface org.apache.pulsar.client.api.PulsarClient
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • closeAsync

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

        public void shutdown()
                      throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        shutdown in interface org.apache.pulsar.client.api.PulsarClient
        Throws:
        org.apache.pulsar.client.api.PulsarClientException
      • isClosed

        public boolean isClosed()
        Specified by:
        isClosed in interface org.apache.pulsar.client.api.PulsarClient
      • updateServiceUrl

        public void updateServiceUrl​(java.lang.String serviceUrl)
                              throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        updateServiceUrl in interface org.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
      • newRequestId

        public long newRequestId()
      • eventLoopGroup

        public io.netty.channel.EventLoopGroup eventLoopGroup()
      • 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:
        getPartitionsForTopic in interface org.apache.pulsar.client.api.PulsarClient
      • getSchemaProviderLoadingCache

        public com.google.common.cache.LoadingCache<java.lang.String,​org.apache.pulsar.client.api.schema.SchemaInfoProvider> getSchemaProviderLoadingCache()
      • 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()
      • newTransaction

        public org.apache.pulsar.client.api.transaction.TransactionBuilder newTransaction()
                                                                                   throws org.apache.pulsar.client.api.PulsarClientException
        Specified by:
        newTransaction in interface org.apache.pulsar.client.api.PulsarClient
        Throws:
        org.apache.pulsar.client.api.PulsarClientException