Ich habe die unten genannten verschiedenen Modelle, wo ich Kafka-Produzent erstellen und verschiedene Methoden aufrufen, aber nicht sicher, was der richtige Ansatz ist, es zu programmieren, so dass der Fluss nicht brechen sollte und die Leistung nicht beeinträchtigt werden sollte. Freundlich helfen.Was ist die richtige Reihenfolge beim Erstellen von Kafka Producer und Aufruf der Methoden send(), flush() und close()?
Modell 1:
for(int i=1; i < 100; i++){
Producer<String, String> producer = new KafkaProducer<String, String>(props);
ProducerRecord<String, String> data = new ProducerRecord<String, String>(
topicName,
String.valueOf(i)
);
producer.send(data);
producer.close();
}
Modell 2:
Producer<String, String> producer = new KafkaProducer<String, String>(props);
for(int i=1; i < 100; i++) {
ProducerRecord<String, String> data = new ProducerRecord<String, String>(
topicName,
String.valueOf(i)
);
producer.send(data);
producer.close();
}
Modell 3:
Producer<String, String> producer = new KafkaProducer<String, String>(props);
for(int i=1; i < 100; i++){
ProducerRecord<String, String> data = new ProducerRecord<String, String>(
topicName,
String.valueOf(i)
);
producer.send(data);
}
producer.close();
Modell 4:
for(int i=1; i < 100; i++){
Producer<String, String> producer = new KafkaProducer<String, String>(props);
ProducerRecord<String, String> data = new ProducerRecord<String, String>(
topicName,
String.valueOf(i)
);
producer.send(data);
producer.flush();
producer.close();
}
Modell 5:
Producer<String, String> producer = new KafkaProducer<String, String>(props);
for(int i=1; i < 100; i++){
ProducerRecord<String, String> data = new ProducerRecord<String, String>(
topicName,
String.valueOf(i)
);
producer.send(data);
producer.flush();
producer.close();
}
Modell 6:
Producer<String, String> producer = new KafkaProducer<String, String>(props);
for(int i=1; i < 100; i++){
ProducerRecord<String, String> data = new ProducerRecord<String, String>(
topicName,
String.valueOf(i)
);
producer.send(data);
producer.flush();
}
producer.close();
* so dass der Fluss spülen sollte nicht brechen und Leistung sollte nicht * Weder betroffen sind wir. Sie müssen versuchen, die zu finden, die Ihren Bewertungskriterien am besten entspricht. –
@ElliottFrisch Ich habe alle Modelle, die ich hier vorgestellt habe, versucht, einige Modelle laufen normal und Rest der Modelle zurückgegeben IllegalStateException, so Frage in meinem Gehirn entstehen, um diesen Zweifel zu klären. Ich bin mir auch nicht sicher, ob es irgendwelche Leistungseffekte für die Modelle geben wird, die reibungslos funktionieren, da ich nur eine begrenzte Menge an Daten zur Verfügung habe. – mannedear