Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka) · Les

Deserialisatie en berichtconversie

Configureer deserializers voor verschillende berichtindelingen, zoals String, JSON en aangepaste objecten, en verwerk berichtconversie binnen uw listeners.

Les 3 van 411 stappen

Deserialisatie en berichtconversie is een gratis Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka)-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka). Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka) bevat in totaal 4 lessen.

De onbewerkte berichten van Kafka

Kafka maakt zich geen zorgen over de indeling van je gegevens. Elk bericht wordt behandeld als een onbewerkte array met bytes. Zo worden berichten opgeslagen en verzonden.

Wanneer een producent een bericht verstuurt, wordt het eerst omgezet in bytes. Wanneer een consument dat bericht ontvangt, bestaat het nog steeds alleen uit een reeks bytes.

Dankzij deze flexibiliteit kan Kafka elk gegevenstype verwerken, maar consumenten hebben wel een manier nodig om die bytes weer naar een bruikbaar formaat te interpreteren.

Van bytes naar objecten: deserialisatie

Om Kafka-berichten in je Java-toepassing te kunnen begrijpen, moet je deze onbewerkte bytes weer omzetten in betekenisvolle Java-objecten. Dit belangrijke proces heet deserialisatie.

Een deserializer is een specifiek onderdeel dat weet hoe het een byte-array moet lezen en daaruit een Java-object moet reconstrueren. Je kunt het zien als het omgekeerde van serialisatie.

Zonder de juiste deserialisatie zou je consument alleen byte[] zien, wat niet erg nuttig is voor de logica van je toepassing.

Standaarddeserialisatie van strings

Spring for Apache Kafka biedt zinvolle standaardinstellingen waarmee je snel kunt beginnen. Als je niets anders opgeeft, gaat het ervan uit dat je berichtsleutels en -waarden eenvoudige strings zijn.

Achter de schermen gebruikt het org.apache.kafka.common.serialization.StringDeserializer om berichtbytes om te zetten in Java-String-objecten.

Dit werkt uitstekend voor platte tekst, maar de meeste toepassingen in de praktijk moeten vaak meer gestructureerde gegevens verwerken.

Code: eenvoudige String-consument

Hier zie je een eenvoudige Spring Boot-toepassing met een Kafka-listener die eenvoudige stringberichten consumeert. Let op het type String in de signatuur van de listenermethode.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

@SpringBootApplication
public class SimpleConsumerApp {
  public static void main(String[] args) {
    SpringApplication.run(SimpleConsumerApp.class, args);
    System.out.println("String consumer app started, listening on my-string-topic...");
  }

  @Component
  static class MyStringListener {
    @KafkaListener(topics = "my-string-topic", groupId = "string-group")
    public void listen(String message) {
      System.out.println("Received String: " + message);
    }
  }
}

Deserializers expliciet configureren

Je kunt expliciet configureren welke deserializers je wilt gebruiken in je bestand application.properties of application.yml. Hiermee geef je Spring Kafka aan welke klassen moeten worden gebruikt om zowel de sleutel als de waarde van het bericht om te zetten.

  • spring.kafka.consumer.key-deserializer
  • spring.kafka.consumer.value-deserializer

Voor ons standaardvoorbeeld met strings stel je deze in op org.apache.kafka.common.serialization.StringDeserializer.

Werken met JSON-gegevens

JSON (JavaScript Object Notation) is een veelgebruikt formaat voor het uitwisselen van gestructureerde gegevens. Kafka-berichten bevatten vaak gegevens in JSON-formaat.

Om JSON-berichten effectief in je Java-toepassing te gebruiken, moet je de binnenkomende JSON-string (of bytes) omzetten in een Java-object, meestal een Plain Old Java Object (POJO).

Dankzij deze koppeling kun je gegevensvelden rechtstreeks openen, zoals myObject.getId() of myObject.getName(), in plaats van JSON handmatig te parseren.

Spring's JsonDeserializer

Spring for Apache Kafka biedt een krachtige org.springframework.kafka.support.serializer.JsonDeserializer om het verwerken van JSON-berichten eenvoudiger te maken.

Deze deserializer gebruikt de populaire Jackson-bibliotheek om binnenkomende JSON-bytes automatisch toe te wijzen aan de Java-POJO-klasse die je opgeeft.

Je hoeft alleen te configureren welk POJO-type je verwacht; de complexe omzetting wordt vervolgens voor je afgehandeld.

Code: een Event-POJO definiëren

Laten we eerst een eenvoudige Java-POJO definiëren die onze binnenkomende JSON-gegevens vertegenwoordigt. De eigenschappen van deze POJO moeten overeenkomen met de velden in je JSON-berichten.

package com.coddykit;

// MyEvent.java
public class MyEvent {
    private String id;
    private String description;

    // Default constructor is crucial for deserialization
    public MyEvent() {}

    public MyEvent(String id, String description) {
        this.id = id;
        this.description = description;
    }

    // Getters and Setters (omitted for brevity, but needed)
    public String getId() { return id; }
    public void setId(String id) { this.id = id; }
    public String getDescription() { return description; }
    public void setDescription(String description) { this.description = description; }

    @Override
    public String toString() {
        return "MyEvent{id='" + id + "', description='" + description + "'}";
    }
}

Code: JSON-berichten consumeren

Laten we nu onze consument bijwerken zodat deze de JsonDeserializer gebruikt en luistert naar MyEvent-objecten. Vergeet niet dat je de deserializer ook in je application.properties moet configureren.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;
import com.coddykit.MyEvent; // Import your POJO

@SpringBootApplication
public class JsonConsumerApp {
  public static void main(String[] args) {
    SpringApplication.run(JsonConsumerApp.class, args);
    System.out.println("JSON consumer app started, listening on my-json-topic...");
  }

  @Component
  static class MyJsonListener {
    @KafkaListener(topics = "my-json-topic", groupId = "json-group")
    public void listen(MyEvent event) {
      System.out.println("Received JSON Event: " + event.toString());
    }
  }
}
// Required application.properties configuration:
// spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
// spring.kafka.consumer.value-deserializer=org.springframework.kafka.support.serializer.JsonDeserializer
// spring.kafka.properties.spring.json.value.default.type=com.coddykit.MyEvent

Quiz over deserialisatieconfiguratie

Stel dat een Spring Boot Kafka-consumententoepassing berichten moet verwerken waarvan de waarde een JSON-weergave is van een Product-object, gedefinieerd in com.example.Product. Welke configuratie is essentieel in application.properties voor deze opstelling?

Samenvatting van deserialisatie

Goed gedaan! In deze les heb je geleerd dat Kafka-berichten onbewerkte bytes zijn en dat je deserialisatie nodig hebt om ze in Java-toepassingen te gebruiken.

  • Spring Kafka gebruikt standaard StringDeserializer voor eenvoudige tekstberichten.
  • Je kunt specifieke deserializers voor sleutels en waarden configureren met application.properties.
  • De JsonDeserializer vereenvoudigt het automatisch toewijzen van JSON-berichten aan Java-POJO's.

Inzicht in deserialisatie is essentieel voor het bouwen van robuuste Kafka-consumenten die verschillende gegevensindelingen effectief kunnen verwerken.

Gratis beginnen

Leer Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka) met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Deserialisatie en berichtconversie” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka), waaronder “Deserialisatie en berichtconversie”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka) bevat in totaal 4 lessen.

Wat leer ik in “Deserialisatie en berichtconversie”?

Configureer deserializers voor verschillende berichtindelingen, zoals String, JSON en aangepaste objecten, en verwerk berichtconversie binnen uw listeners. Je oefent met Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka) door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka) te beginnen?

Ervaring vooraf is niet nodig. Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka) op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Deserialisatie en berichtconversie”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka)?

Ja. Elke les over Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka) bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Kafka-listenercontainers bouwen
  2. Consumergroepen beheren
  3. Deserialisatie en berichtconversie
  4. Batchverbruik en acknowledgmentmodi
← Terug naar Geavanceerd Spring Boot 4: gebeurtenisgestuurde architectuur (Kafka)