Die neue Kafka-Version (0.11) unterstützt genau einmal Semantik.Bedeutung von sendOffsetsToTransaction in Kafka 0.11
Ich habe wie dieses einen Produzenten Setup mit KAFKA Transaktionscode in Java bekam.
producer.initTransactions();
try {
producer.beginTransaction();
for (ProducerRecord<String, String> record : payload) {
producer.send(record);
}
Map<TopicPartition, OffsetAndMetadata> groupCommit = new HashMap<TopicPartition, OffsetAndMetadata>() {
{
put(new TopicPartition(TOPIC, 0), new OffsetAndMetadata(42L, null));
}
};
producer.sendOffsetsToTransaction(groupCommit, "groupId");
producer.commitTransaction();
} catch (ProducerFencedException e) {
producer.close();
} catch (KafkaException e) {
producer.abortTransaction();
}
Ich bin mir nicht ganz sicher, wie die sendOffsetsToTransaction verwenden und den den beabsichtigten Anwendungsfall davon. AFAIK, Consumer Groups ist eine Multithread-Lesefunktion auf Konsumentenseite.
javadoc sagt
"Sendet eine Liste der verbrauchten Offsets an den Verbraucher Gruppenkoordinator und markiert auch jene Offsets im Rahmen der aktuellen Transaktion. Werden diese Offsets nur verbraucht angesehen werden, wenn die Transaktion erfolgreich begangen wird. Diese Diese Methode sollte verwendet werden, wenn Sie im Batch konsumieren und Nachrichten gemeinsam erstellen müssen, normalerweise in einem consume-transform-produce-Muster. "
Wie würde produzieren eine Liste der konsumierten Offsets pflegen? Was ist der Sinn?