io.vertx.kafka.client.producer

## Interface KafkaProducer<K,V>

- All Superinterfaces:
    StreamBase, WriteStream<KafkaProducerRecord<K,V>>

      public interface KafkaProducer<K,V>
      extends WriteStream<KafkaProducerRecord<K,V>>

  Vert.x Kafka producer.

  The `WriteStream.write(Object)` provides global control over writing a record.

- - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `KafkaWriteStream<K,V>` | `asStream()`
    `void` | `close()` Close the producer
    `void` | `close(Handler<AsyncResult<Void>> completionHandler)` Close the producer
    `void` | `close(long timeout, Handler<AsyncResult<Void>> completionHandler)` Close the producer
    `static <K,V> KafkaProducer<K,V>` | `create(Vertx vertx, Map<String,String> config)` Create a new KafkaProducer instance
    `static <K,V> KafkaProducer<K,V>` | `create(Vertx vertx, Map<String,String> config, Class<K> keyType, Class<V> valueType)` Create a new KafkaProducer instance
    `static <K,V> KafkaProducer<K,V>` | `create(Vertx vertx, org.apache.kafka.clients.producer.Producer<K,V> producer)` Create a new KafkaProducer instance from a native `Producer`.
    `static <K,V> KafkaProducer<K,V>` | `create(Vertx vertx, Properties config)` Create a new KafkaProducer instance
    `static <K,V> KafkaProducer<K,V>` | `create(Vertx vertx, Properties config, Class<K> keyType, Class<V> valueType)` Create a new KafkaProducer instance
    `static <K,V> KafkaProducer<K,V>` | `createShared(Vertx vertx, String name, Map<String,String> config)` Get or create a KafkaProducer instance which shares its stream with any other KafkaProducer created with the same `name`
    `static <K,V> KafkaProducer<K,V>` | `createShared(Vertx vertx, String name, Map<String,String> config, Class<K> keyType, Class<V> valueType)` Get or create a KafkaProducer instance which shares its stream with any other KafkaProducer created with the same `name`
    `static <K,V> KafkaProducer<K,V>` | `createShared(Vertx vertx, String name, Properties config)` Get or create a KafkaProducer instance which shares its stream with any other KafkaProducer created with the same `name`
    `static <K,V> KafkaProducer<K,V>` | `createShared(Vertx vertx, String name, Properties config, Class<K> keyType, Class<V> valueType)` Get or create a KafkaProducer instance which shares its stream with any other KafkaProducer created with the same `name`
    `KafkaProducer<K,V>` | `drainHandler(Handler<Void> handler)` Set a drain handler on the stream.
    `void` | `end()` Ends the stream.
    `void` | `end(KafkaProducerRecord<K,V> kafkaProducerRecord)` Same as `WriteStream.end()` but writes some data to the stream before ending.
    `KafkaProducer<K,V>` | `exceptionHandler(Handler<Throwable> handler)` Set an exception handler on the write stream.
    `KafkaProducer<K,V>` | `flush(Handler<Void> completionHandler)` Invoking this method makes all buffered records immediately available to write
    `KafkaProducer<K,V>` | `partitionsFor(String topic, Handler<AsyncResult<List<PartitionInfo>>> handler)` Get the partition metadata for the give topic.
    `KafkaProducer<K,V>` | `setWriteQueueMaxSize(int i)` Set the maximum size of the write queue to `maxSize`.
    `org.apache.kafka.clients.producer.Producer<K,V>` | `unwrap()`
    `KafkaProducer<K,V>` | `write(KafkaProducerRecord<K,V> kafkaProducerRecord)` Write some data to the stream.
    `KafkaProducer<K,V>` | `write(KafkaProducerRecord<K,V> record, Handler<AsyncResult<RecordMetadata>> handler)` Asynchronously write a record to a topic
    `boolean` | `writeQueueFull()` This will return `true` if there are more bytes in the write queue than the value set using `WriteStream.setWriteQueueMaxSize(int)`

- - ### Method Detail

    - #### createShared

          static <K,V> KafkaProducer<K,V> createShared(Vertx vertx,
                                                       String name,
                                                       Properties config)

      Get or create a KafkaProducer instance which shares its stream with any other KafkaProducer created with the same `name`
      Parameters:
        `vertx` - Vert.x instance to use
        `name` - the producer name to identify it
        `config` - Kafka producer configuration
      Returns:
        an instance of the KafkaProducer

    - #### createShared

          static <K,V> KafkaProducer<K,V> createShared(Vertx vertx,
                                                       String name,
                                                       Map<String,String> config)

      Get or create a KafkaProducer instance which shares its stream with any other KafkaProducer created with the same `name`
      Parameters:
        `vertx` - Vert.x instance to use
        `name` - the producer name to identify it
        `config` - Kafka producer configuration
      Returns:
        an instance of the KafkaProducer

    - #### createShared

          static <K,V> KafkaProducer<K,V> createShared(Vertx vertx,
                                                       String name,
                                                       Map<String,String> config,
                                                       Class<K> keyType,
                                                       Class<V> valueType)

      Get or create a KafkaProducer instance which shares its stream with any other KafkaProducer created with the same `name`
      Parameters:
        `vertx` - Vert.x instance to use
        `name` - the producer name to identify it
        `config` - Kafka producer configuration
        `keyType` - class type for the key serialization
        `valueType` - class type for the value serialization
      Returns:
        an instance of the KafkaProducer

    - #### createShared

          static <K,V> KafkaProducer<K,V> createShared(Vertx vertx,
                                                       String name,
                                                       Properties config,
                                                       Class<K> keyType,
                                                       Class<V> valueType)

      Get or create a KafkaProducer instance which shares its stream with any other KafkaProducer created with the same `name`
      Parameters:
        `vertx` - Vert.x instance to use
        `name` - the producer name to identify it
        `config` - Kafka producer configuration
        `keyType` - class type for the key serialization
        `valueType` - class type for the value serialization
      Returns:
        an instance of the KafkaProducer

    - #### create

          static <K,V> KafkaProducer<K,V> create(Vertx vertx,
                                                 org.apache.kafka.clients.producer.Producer<K,V> producer)

      Create a new KafkaProducer instance from a native `Producer`.
      Parameters:
        `vertx` - Vert.x instance to use
        `producer` - the Kafka producer to wrap
      Returns:
        an instance of the KafkaProducer

    - #### create

          static <K,V> KafkaProducer<K,V> create(Vertx vertx,
                                                 Map<String,String> config)

      Create a new KafkaProducer instance
      Parameters:
        `vertx` - Vert.x instance to use
        `config` - Kafka producer configuration
      Returns:
        an instance of the KafkaProducer

    - #### create

          static <K,V> KafkaProducer<K,V> create(Vertx vertx,
                                                 Map<String,String> config,
                                                 Class<K> keyType,
                                                 Class<V> valueType)

      Create a new KafkaProducer instance
      Parameters:
        `vertx` - Vert.x instance to use
        `config` - Kafka producer configuration
        `keyType` - class type for the key serialization
        `valueType` - class type for the value serialization
      Returns:
        an instance of the KafkaProducer

    - #### create

          static <K,V> KafkaProducer<K,V> create(Vertx vertx,
                                                 Properties config)

      Create a new KafkaProducer instance
      Parameters:
        `vertx` - Vert.x instance to use
        `config` - Kafka producer configuration
      Returns:
        an instance of the KafkaProducer

    - #### create

          static <K,V> KafkaProducer<K,V> create(Vertx vertx,
                                                 Properties config,
                                                 Class<K> keyType,
                                                 Class<V> valueType)

      Create a new KafkaProducer instance
      Parameters:
        `vertx` - Vert.x instance to use
        `config` - Kafka producer configuration
        `keyType` - class type for the key serialization
        `valueType` - class type for the value serialization
      Returns:
        an instance of the KafkaProducer

    - #### exceptionHandler

          KafkaProducer<K,V> exceptionHandler(Handler<Throwable> handler)

      Description copied from interface: `WriteStream`
      Set an exception handler on the write stream.
      Specified by:
        `exceptionHandler` in interface `StreamBase`
      Specified by:
        `exceptionHandler` in interface `WriteStream<KafkaProducerRecord<K,V>>`
      Parameters:
        `handler` - the exception handler
      Returns:
        a reference to this, so the API can be used fluently

    - #### write

          KafkaProducer<K,V> write(KafkaProducerRecord<K,V> kafkaProducerRecord)

      Description copied from interface: `WriteStream`
      Write some data to the stream. The data is put on an internal write queue, and the write actually happens asynchronously. To avoid running out of memory by putting too much on the write queue, check the `WriteStream.writeQueueFull()` method before writing. This is done automatically if using a `Pump`.
      Specified by:
        `write` in interface `WriteStream<KafkaProducerRecord<K,V>>`
      Parameters:
        `kafkaProducerRecord` - the data to write
      Returns:
        a reference to this, so the API can be used fluently

    - #### end

          void end()

      Description copied from interface: `WriteStream`
      Ends the stream.

      Once the stream has ended, it cannot be used any more.

      Specified by:
        `end` in interface `WriteStream<KafkaProducerRecord<K,V>>`

    - #### end

          void end(KafkaProducerRecord<K,V> kafkaProducerRecord)

      Description copied from interface: `WriteStream`
      Same as `WriteStream.end()` but writes some data to the stream before ending.
      Specified by:
        `end` in interface `WriteStream<KafkaProducerRecord<K,V>>`

    - #### setWriteQueueMaxSize

          KafkaProducer<K,V> setWriteQueueMaxSize(int i)

      Description copied from interface: `WriteStream`
      Set the maximum size of the write queue to `maxSize`. You will still be able to write to the stream even if there is more than `maxSize` items in the write queue. This is used as an indicator by classes such as `Pump` to provide flow control.

      The value is defined by the implementation of the stream, e.g in bytes for a `NetSocket`, the number of `Message` for a `MessageProducer`, etc...
      Specified by:
        `setWriteQueueMaxSize` in interface `WriteStream<KafkaProducerRecord<K,V>>`
      Parameters:
        `i` - the max size of the write stream
      Returns:
        a reference to this, so the API can be used fluently

    - #### writeQueueFull

          boolean writeQueueFull()

      Description copied from interface: `WriteStream`
      This will return `true` if there are more bytes in the write queue than the value set using `WriteStream.setWriteQueueMaxSize(int)`
      Specified by:
        `writeQueueFull` in interface `WriteStream<KafkaProducerRecord<K,V>>`
      Returns:
        true if write queue is full

    - #### drainHandler

          KafkaProducer<K,V> drainHandler(Handler<Void> handler)

      Description copied from interface: `WriteStream`
      Set a drain handler on the stream. If the write queue is full, then the handler will be called when the write queue is ready to accept buffers again. See `Pump` for an example of this being used.

      The stream implementation defines when the drain handler, for example it could be when the queue size has been reduced to `maxSize / 2`.
      Specified by:
        `drainHandler` in interface `WriteStream<KafkaProducerRecord<K,V>>`
      Parameters:
        `handler` - the handler
      Returns:
        a reference to this, so the API can be used fluently

    - #### write

          KafkaProducer<K,V> write(KafkaProducerRecord<K,V> record,
                                   Handler<AsyncResult<RecordMetadata>> handler)

      Asynchronously write a record to a topic
      Parameters:
        `record` - record to write
        `handler` - handler called on operation completed
      Returns:
        current KafkaWriteStream instance

    - #### partitionsFor

          KafkaProducer<K,V> partitionsFor(String topic,
                                           Handler<AsyncResult<List<PartitionInfo>>> handler)

      Get the partition metadata for the give topic.
      Parameters:
        `topic` - topic partition for which getting partitions info
        `handler` - handler called on operation completed
      Returns:
        current KafkaProducer instance

    - #### flush

          KafkaProducer<K,V> flush(Handler<Void> completionHandler)

      Invoking this method makes all buffered records immediately available to write
      Parameters:
        `completionHandler` - handler called on operation completed
      Returns:
        current KafkaProducer instance

    - #### close

          void close()

      Close the producer

    - #### close

          void close(Handler<AsyncResult<Void>> completionHandler)

      Close the producer
      Parameters:
        `completionHandler` - handler called on operation completed

    - #### close

          void close(long timeout,
                     Handler<AsyncResult<Void>> completionHandler)

      Close the producer
      Parameters:
        `timeout` - timeout to wait for closing
        `completionHandler` - handler called on operation completed

    - #### asStream

          KafkaWriteStream<K,V> asStream()

      Returns:
        underlying `KafkaWriteStream` instance

    - #### unwrap

          org.apache.kafka.clients.producer.Producer<K,V> unwrap()

      Returns:
        the underlying producer

Copyright © 2017. All rights reserved.