Kafka Client Java: Vollständiges Tutorial mit Code-Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in den Apache Kafka Client für Java

Apache Kafka ist eine verteilte Event-Streaming-Plattform, die es ermöglicht, Datenströme in Echtzeit zu veröffentlichen, zu speichern und zu verarbeiten. Die Bibliothek Kafka Client für Java ist der offizielle Client, der eine API für die Interaktion mit Kafka-Brokern bereitstellt. Sie ermöglicht Java-Anwendungen, als Producer (Nachrichten senden) und Consumer (Nachrichten lesen) zu agieren sowie Metadaten und administrative Aufgaben zu verwalten.

Diese Bibliothek ist unverzichtbar für den Aufbau von Microservice-Architekturen, Logverarbeitungssystemen, ETL-Pipelines, Echtzeit-Analyseplattformen und allen anderen Szenarien, die eine zuverlässige, skalierbare und ausfallsichere Datenübertragung zwischen Komponenten erfordern.

Installation des Kafka Clients für Java

Der Kafka Client für Java wird über das Maven Central Repository vertrieben. Um die Bibliothek in Ihr Projekt einzubinden, müssen Sie die Abhängigkeit in der Datei pom.xml (für Maven) oder build.gradle (für Gradle) angeben.

Maven

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>3.6.0</version> <!-- Aktuelle Version verwenden -->
</dependency>

Gradle

implementation 'org.apache.kafka:kafka-clients:3.6.0'

Nachdem Sie die Abhängigkeit hinzugefügt und das Projekt aktualisiert haben, stehen alle Klassen der Bibliothek für den Import zur Verfügung.

Schnellstart: Producer und Consumer

Betrachten wir ein minimales Beispiel zum Senden und Empfangen einer Nachricht.

Producer (Sender)

import org.apache.kafka.clients.producer.*;
import java.util.Properties;

public class SimpleProducer {
    public static void main(String[] args) {
        // 1. Eigenschaften konfigurieren
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        // 2. Producer erstellen
        Producer<String, String> producer = new KafkaProducer<>(props);

        // 3. Nachricht senden
        ProducerRecord<String, String> record = new ProducerRecord<>("my-topic", "key1", "Hallo, Kafka!");
        producer.send(record);

        // 4. Producer schließen
        producer.close();
    }
}

Consumer (Empfänger)

import org.apache.kafka.clients.consumer.*;
import java.time.Duration;
import java.util.Collections;
import java.util.Properties;

public class SimpleConsumer {
    public static void main(String[] args) {
        // 1. Eigenschaften konfigurieren
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("group.id", "my-group");
        props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("auto.offset.reset", "earliest");

        // 2. Consumer erstellen
        Consumer<String, String> consumer = new KafkaConsumer<>(props);

        // 3. Auf Topic abonnieren
        consumer.subscribe(Collections.singletonList("my-topic"));

        // 4. Nachrichten lesen
        while (true) {
            ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
            for (ConsumerRecord<String, String> record : records) {
                System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
            }
        }
    }
}

Wichtige Methoden und Funktionen der Bibliothek

Betrachten wir die wichtigsten Methoden, die bei der Arbeit mit dem Kafka Client verwendet werden.

1.

Empfehlungen