Class UniformStickyPartitioner
java.lang.Object
org.apache.kafka.clients.producer.UniformStickyPartitioner
- All Implemented Interfaces:
Closeable,AutoCloseable,Partitioner,Configurable
public class UniformStickyPartitioner extends 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.
-
Constructor Summary
Constructors Constructor Description UniformStickyPartitioner() -
Method Summary
Modifier and Type Method Description voidclose()This is called when partitioner is closed.voidconfigure(Map<String,?> configs)Configure this class with the given key-value pairsvoidonNewBatch(String topic, Cluster cluster, int prevPartition)If a batch completed for the current sticky partition, change the sticky partition.intpartition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster)Compute the partition for the given record.
-
Constructor Details
-
UniformStickyPartitioner
public UniformStickyPartitioner()
-
-
Method Details
-
configure
Description copied from interface:ConfigurableConfigure this class with the given key-value pairs- Specified by:
configurein interfaceConfigurable
-
partition
public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster)Compute the partition for the given record.- Specified by:
partitionin interfacePartitioner- Parameters:
topic- The topic namekey- 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 nullvalueBytes- serialized value to partition on or nullcluster- The current cluster metadata
-
close
public void close()Description copied from interface:PartitionerThis is called when partitioner is closed.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfacePartitioner
-
onNewBatch
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:
onNewBatchin interfacePartitioner- Parameters:
topic- The topic namecluster- The current cluster metadataprevPartition- The partition previously selected for the record that triggered a new batch
-