You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@kafka.apache.org by Kuttaiah Robin <ku...@gmail.com> on 2022/06/03 14:45:34 UTC
Kafka producer fails with expiring 2 record(s) for myTopic-1:120004 ms has passed since batch creation
0
<https://stackoverflow.com/posts/72491139/timeline>
I have an issue with kafka producer in production where I see below error.
*"Publish failed, Expiring 2 record(s) for myTopic-1:120004 ms has passed
since batch creation[[ org.apache.kafka.common.errors.TimeoutException:
Expiring 2 record(s) for myTopic-1:120004 ms has passed since batch
creation"*
Kafka brokers are of confluent 5.3.2 version and the kafka-client is apache
2.3.1. Producer config which are explicitly specified in my code are below
and remaining are defaults.
batch.size = 102400 linger.ms = 100 compression.type = lz4 ack = all
*Sample Java Code*
ProducerRecord<String, String> rec = new ProducerRecord<String,
String>("myTopic,1,"myKey","json-payload-here");
producer.send(rec, new ProducerCallback(jsonPayload));
private class ProducerCallback implements Callback {
private String _ME ="onCompletion";
private String jsonPayload;
public ProducerCallback(String jsonPayload) {
this.jsonPayload = jsonPayload;
}
@Override
public void onCompletion(RecordMetadata recordMetadata, Exception e) {
if (e == null) {
LOG.logp(Level.FINEST, _CL, _ME, "Published kafka event "+jsonPayload);
} else {
//Note: Exception is logged here.
LOG.log(Level.SEVERE, "Publish failed, "+e.getMessage(), e);
}
}
}
*Couple of questions*
1. Load is not heavy in production and its moderate as of now and might
be heavy in later stages. Am I missing some producer config to rectify
above issue?
2. Assuming 2 records has been expired in the batch, Is there a way I
can get those expired records in java so that I can get payload and key to
republish them?
Thanks, appreciate your help in advance.