Class UniformStickyPartitioner

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, Partitioner, Configurable

    public class UniformStickyPartitioner
    extends java.lang.Object
    implements Partitioner
    The partitioning strategy:
    • If a partition is specified in the record, use it
    • Otherwise choose the sticky partition that changes when the batch is full. NOTE: In constrast to the DefaultPartitioner, the record key is NOT used as part of the partitioning strategy in this partitioner. Records with the same key are not guaranteed to be sent to the same partition. See KIP-480 for details about sticky partitioning.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      This is called when partitioner is closed.
      void configure​(java.util.Map<java.lang.String,​?> configs)
      Configure this class with the given key-value pairs
      void onNewBatch​(java.lang.String topic, Cluster cluster, int prevPartition)
      If a batch completed for the current sticky partition, change the sticky partition.
      int partition​(java.lang.String topic, java.lang.Object key, byte[] keyBytes, java.lang.Object value, byte[] valueBytes, Cluster cluster)
      Compute the partition for the given record.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • UniformStickyPartitioner

        public UniformStickyPartitioner()
    • Method Detail

      • configure

        public void configure​(java.util.Map<java.lang.String,​?> configs)
        Description copied from interface: Configurable
        Configure this class with the given key-value pairs
        Specified by:
        configure in interface Configurable
      • partition

        public int partition​(java.lang.String topic,
                             java.lang.Object key,
                             byte[] keyBytes,
                             java.lang.Object value,
                             byte[] valueBytes,
                             Cluster cluster)
        Compute the partition for the given record.
        Specified by:
        partition in interface Partitioner
        Parameters:
        topic - The topic name
        key - The key to partition on (or null if no key)
        keyBytes - serialized key to partition on (or null if no key)
        value - The value to partition on or null
        valueBytes - serialized value to partition on or null
        cluster - The current cluster metadata
      • close

        public void close()
        Description copied from interface: Partitioner
        This is called when partitioner is closed.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface Partitioner
      • onNewBatch

        public void onNewBatch​(java.lang.String topic,
                               Cluster cluster,
                               int prevPartition)
        If a batch completed for the current sticky partition, change the sticky partition. Alternately, if no sticky partition has been determined, set one.
        Specified by:
        onNewBatch in interface Partitioner
        Parameters:
        topic - The topic name
        cluster - The current cluster metadata
        prevPartition - The partition previously selected for the record that triggered a new batch