THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||
---|---|---|
| ||
package org.apache.kafka.clients.producer;
public interface Partitioner extends Configurable {
/**
* This is called after partitioner is registered.
*/
public void init();
/**
* Configure partitioner class with given key,value pairs from partitioner.metadata config.
*/
@override
public void configure(Map<String, ?> configs);
/**
* Compute the partition for the given record.
*
* @param topic The topic name
* @param key The key to partition on (or null if no key)
* @param keyBytes The serialized key to partition on( or null if no key)
* @param value The value to partition on
* @param valueBytes The serialized value to partition on
* @param partition The partition to use (or null if none)
* @param cluster The current cluster metadata
*/
public int partition(String topic, Object key, byte[] key, Object value, byte[] value, Cluster cluster);
/**
* This is called when partitioner is closed.
*/
public void close();
} |
...
- Add a new partitioner interface .
- Move existing partitioner code to DefaultPartitioner .
- If Users provide partition id than it will take precedence over partitioner.class .If partition id is null than only partitioner.class partition() method called to compute partition for given Record.
- Introduce new producer config called "partitioner.class" and "partitioner.metadata". By default "partitioner.class" points to org.apache.kafka.clients.producer.DefaultPartitioner
...