Skip to content

Instantly share code, notes, and snippets.

@tkstone
Created June 13, 2019 05:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tkstone/4f9b1e2924b01a73e405117655117ad8 to your computer and use it in GitHub Desktop.
Save tkstone/4f9b1e2924b01a73e405117655117ad8 to your computer and use it in GitHub Desktop.
import java.util.List;
import java.util.Map;
import org.apache.kafka.clients.producer.Partitioner;
import org.apache.kafka.common.Cluster;
import org.apache.kafka.common.PartitionInfo;
public class TestPartitioner implements Partitioner{
@Override
public void configure(Map<String, ?> arg0) {
// Do nothing
}
@Override
public void close() {
// Do nothing
}
@Override
public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) {
List<PartitionInfo> partitions = cluster.partitionsForTopic(topic);
int numPartitions = partitions.size();
String strKey = (String)key;
String partitionToken = strKey.substring(0, strKey.indexOf('.')); // dept1 ~ dept5
return partitionToken.hashCode() % numPartitions;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment