@Override
public Writer<Pair<byte[], byte[]>> openWriter(int partitionId) {
String cacheKey = brokers;
Producer<byte[], byte[]> producer = PRODUCERS.get(cacheKey);
if (producer == null) {
final Producer<byte[], byte[]> p = KafkaUtils.newProducer(brokers, config);
final Producer<byte[], byte[]> p1 = PRODUCERS.putIfAbsent(cacheKey, p);
if (p1 == null) {
producer = p;
} else {
producer = p1;
p.close();
}
}
final List<PartitionInfo> partitions = producer.partitionsFor(topic);
return new ProducerWriter(producer, topic, partitionId % partitions.size());
}