The KafkaProducer have a method partitionsFor() that fetches the metadata. So something like this can be used to force load the metadata with max.block.ms=0
while(!gotMetadata) { try { producer.partitionsFor(topic); gotMetadata=true; } catch (TimeoutException e) { logger.info(String.format("KafkaProducer for topic %s is waiting for metadata...", topic)); try { Thread.sleep(100); } catch (InterruptedException ignored) { } } }