Confluent Cloud - Komplettes Setup mit Spring Boot (inkl. Testdaten) in weniger als 5 Minuten

image

Wir beraten Anbieter-neutral und finden mit Ihnen das beste Setup und Angebot für Ihre Streaming basierte Umgebung auf Basis Ihrer Anforderungen.

Ein Angebot mit beeindruckeneden Möglichkeiten im Kafka Umfeld ist Confluent Cloud

In diesem kurzen Blogeintrag möchten wir Ihnen Schritt für Schritt aufzeigen, wie ein einfaches Setup mit Spring Boot und Confluent Cloud aufgesetzt werden kann und welche Möglichkeiten Sie damit haben.

Das Setup dauert nicht länger als 5 Minuten.

Cluster Setup

Zunächst erstellen wir uns einen einfachen Cluster in der Basis-Konfiguration. Als Cloudprovider wählen wir AWS in der Region Frankfurt.

Confluent erlaubt es die Zahlungsdaten zu überspringen so dass wir einfach mit dem automatisch bereitgestellten Testing-Budget arbeiten können.

Confluent Cloud Cluster Setup
Confluent Cloud Cluster Setup

Für den Zugriff auf den Cluster benötigen wir einen API Key den wir uns direkt in der Oberfläche erstellen.

Confluent Cloud Cluster API Key
Cluster API Key

Spring Boot Setup

Unser Client ist ein einfacher Spring Boot Client den wir mit Spring Boot Initializr initialisieren.

Wir konfigurieren:

  • Spring Web
  • Spring for Kafka
  • Spring Actuator

als Pakete.

Spring Boot Initializr
Spring Boot Initializr

WIr importieren das Projekt anschließend in IntelliJ und führen es testweise aus.

Spring Boot IntellJ
Spring Boot IntellJ

Für das Setup kopieren wir die Konfiguration aus der Confluent-Cloud Oberfläche und nehmen ein paar kleinere Anpassungen vor. Beispielsweise müssen wir damit die AutoConfiguration greift die spring.kafka.bootstrap-servers Property korrekt konfigurieren.

Confluent stellt diese Property als spring.kafka.properties.bootstrap.servers bereit.

# Required connection configs for Kafka producer, consumer, and admin spring.kafka.properties.sasl.mechanism=PLAIN spring.kafka.bootstrap-servers=<url> spring.kafka.properties.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username='<key-key>' password='<api-secret>'; spring.kafka.properties.security.protocol=SASL_SSL # Best practice for higher availability in Apache Kafka clients prior to 3.0 spring.kafka.properties.session.timeout.ms=45000 # Required connection configs for Confluent Cloud Schema Registry spring.kafka.properties.basic.auth.credentials.source=USER_INFO spring.kafka.properties.basic.auth.user.info={{ <key-key> }}:{{ <api-secret> }} spring.kafka.properties.schema.registry.url=https://psrc-do01d.eu-central-1.aws.confluent.cloud
Spring Boot Setup
Spring Boot Setup

Anschließend reicht es einen einfachen Kafka Consumer zu implementieren und als Spring Component bereitzustellen.

@Component @KafkaListener(groupId = "test", topics = ["test-topic"]) class KafkaConsumer { @KafkaHandler fun consume(message: String) { println(message) } }

Topic Konfiguration

Wir legen im nächsten Schritt über die Confluent Oberfläche das fehlende Topic an und schicken manuell ein Test Record.

Topic anlegen
Topic anlegen

Test Data Source Connector

Ein großer Vorteil bei der Verwendung von Confluent ist die integrierte Nutzung des gesamten Kafka Ökosystems. Um beliebig viele Testdaten für unser Topic zu generieren können wir einfach nur einen Data-Gen Source Connector mit dem Topic verknüpfen und die Daten fangen sofort an zu fließen.

Source Connector
Test Daten generieren über den DataGen Source Connector

Technisch arbeitet hier ein Kafka Connect Cluster und wir konfigurieren einen Connector dafür.

Fazit

Es ist kinderleicht eine Kafka Umgebung mit Confluent Cloud aufzusetzen um erste Experimente damit zu wagen.

Das Spring Boot Projekt befindet sich hier auf github.

Im nächsten Artikel betrachten wir die Schema Registry und Avro in Spring Boot.

Neugierig geworden? Mit unserer Expertise im Bereich Kafka, Kotlin und Spring bieten wir die Möglichkeit ihre Entwicklung zu beschleunigen und produktiver zu machen. In unserem kostenlosen Kennenlern-Call haben Sie zudem die Möglichkeit, kostenlos erste Fragen zu platzieren.