Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät · Oppitunti

Kafka-kuluttajien rakentaminen

Kehittäkää Spring Kafka -kuluttajia, jotka tilaavat Kafka-aiheita ja käsittelevät niistä saapuvia viestejä.

Oppitunti 2/311 vaihetta

Kafka-kuluttajien rakentaminen on ilmainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti CoddyKitissä. Tämä on oppitunti 2/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 3 oppituntia.

Kafka-kuluttajat: kuuntelijat

Tapahtumapohjaisissa arkkitehtuureissa Kafka-kuluttajat ovat komponentteja, jotka vastaavat viestien (tietueiden) lukemisesta Kafka-aiheista. Voit ajatella niitä kuuntelijoina, jotka odottavat uusia tapahtumia!

Ne tilaavat yhden tai useamman aiheen ja käsittelevät saapuvaa dataa, jolloin sovelluksen eri osat tai muut palvelut voivat reagoida tapahtumiin.

Spring Bootin ja Kafkan määritys

Jotta voit rakentaa Kafka-kuluttajan Spring Bootilla, tarvitset ensin spring-kafka-riippuvuuden. Lisää se pom.xml-tiedostoon:

<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency>

Määritä seuraavaksi Kafka-välittäjän tiedot tiedostossa application.properties. Näin Spring Boot -sovellukselle kerrotaan, mistä Kafka-palvelin löytyy.

spring.kafka.bootstrap-servers=localhost:9092

Tutustu @KafkaListener-annotaatioon

Spring for Apache Kafka tarjoaa tehokkaan @KafkaListener-annotaation. Tämä annotaatio merkitsee metodin Kafka-kuuntelijaksi, mikä tarkoittaa, että se kuluttaa automaattisesti viestejä määritetyistä aiheista.

  • topics: Kuunneltavat Kafka-aiheet.
  • groupId: Tunnistaa kuluttajaryhmän. Välttämätön skaalautumisen kannalta.

Se käsittelee kaikki Kafkan matalan tason API-yksityiskohdat puolestasi!

Ensimmäinen Kafka-kuuntelijasi

Luodaan yksinkertainen kuluttaja, joka kuuntelee aihetta my-first-topic ja tulostaa kaikki saapuvat merkkijonoviestit konsoliin.

Huomaa groupId. Kaikki kuluttajat, joilla on sama groupId, kuuluvat samaan kuluttajaryhmään.

package com.coddykit.kafka;

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

@SpringBootApplication
@EnableKafka
public class KafkaConsumerApp {
  public static void main(String[] args) {
    SpringApplication.run(KafkaConsumerApp.class, args);
  }
}

@Component
class SimpleKafkaListener {

  @KafkaListener(topics = "my-first-topic", groupId = "my-group-id")
  public void listen(String message) {
    System.out.println("Received Message: " + message);
  }
}

Deserialisoinnin ymmärtäminen

Kafka-viestit tallennetaan tavutaulukkoina. Kun kuluttaja lukee viestin, sen on muunnettava tavut takaisin käyttökelpoiseksi olioksi, kuten merkkijonoksi tai mukautetuksi Java-olioksi.

Tätä prosessia kutsutaan deserialisoinniksi. Deserialisoijat määritetään tiedostossa application.properties:

spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer

Deserialisoijan valinta riippuu siitä, miten tuottaja serialisoi viestin.

Kuluttajaryhmät skaalautumista varten

Kuluttajaryhmät ovat keskeisiä Kafkan skaalautuvuuden kannalta. Samaan ryhmään voi kuulua useita kuluttajainstansseja, jotka jakavat aiheesta kulutettavien viestien käsittelykuorman.

  • Aiheen osion jokainen viesti toimitetaan vain yhdelle kuluttajainstanssille ryhmän sisällä.
  • Jos kuluttajia on enemmän kuin osioita, osa kuluttajista on käyttämättöminä.
  • Jos kuluttaja lakkaa toimimasta, toinen saman ryhmän kuluttaja ottaa automaattisesti sen osiot vastuulleen.

Tämä mahdollistaa sekä korkean käytettävyyden että horisontaalisen skaalautumisen.

JSON-datan kuunteleminen

Usein monimutkaiset tiedot lähetetään JSON-muodossa. JSON-datan kuluttamista varten sinun on määritettävä Java-luokka (POJO), joka vastaa JSON-rakennetta, ja käytettävä Spring Kafkan JsonDeserializer-luokkaa.

Lisää määrityksiisi spring.kafka.consumer.value-deserializer=org.springframework.kafka.support.serializer.JsonDeserializer.

package com.coddykit.kafka;

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

// Define a simple DTO matching the JSON structure
class MyEvent {
  private String name;
  private int value;

  // Default constructor required for deserialization
  public MyEvent() {}

  public MyEvent(String name, int value) {
    this.name = name;
    this.value = value;
  }

  public String getName() { return name; }
  public void setName(String name) { this.name = name; }
  public int getValue() { return value; }
  public void setValue(int value) { this.value = value; }

  @Override
  public String toString() {
    return "MyEvent{" +
           "name='" + name + '\'' +
           ", value=" + value +
           '}';
  }
}

@SpringBootApplication
@EnableKafka
public class KafkaJsonConsumerApp {
  public static void main(String[] args) {
    SpringApplication.run(KafkaJsonConsumerApp.class, args);
  }
}

@Component
class JsonKafkaListener {

  @KafkaListener(topics = "my-json-topic", groupId = "json-group")
  public void listenJson(MyEvent event) {
    System.out.println("Received JSON Event: " + event);
  }
}

Hallittu virheenkäsittely

Mitä tapahtuu, jos viesti on virheellisesti muodostettu tai käsittelylogiikka aiheuttaa virheen? Kuluttajat tarvitsevat vankan virheenkäsittelyn.

Yksinkertaisten virheiden tapauksessa kuuntelijamenetelmän sisäinen try-catch-lohko on tehokas ratkaisu. Edistyneempiin tilanteisiin Spring Kafka tarjoaa virheenkäsittelijöitä:

  • DefaultErrorHandler: Yrittää käsitellä viestit uudelleen viiveellä.
  • DeadLetterPublishingRecoverer: Lähettää epäonnistuneet viestit hylättyjen viestien aiheeseen.

Näin yksittäinen virheellinen viesti ei pysäytä koko kuluttajaa.

Viestin metatietojen tarkastelu

Joskus tarvitsette muutakin kuin pelkän viestin hyötykuorman. Kafka-viestien mukana tulee hyödyllisiä metatietoja, kuten aiheen nimi, osio ja siirtymä.

Voitte käyttää näitä metatietoja suoraan @KafkaListener-menetelmässä käyttämällä esimerkiksi @Header-annotaatioita tai vastaanottamalla ConsumerRecord-objektin.

@KafkaListener(topics = "my-topic", groupId = "my-group") public void listenWithInfo( String message, @Header(org.springframework.kafka.support.KafkaHeaders.RECEIVED_TOPIC) String topic, @Header(org.springframework.kafka.support.KafkaHeaders.RECEIVED_PARTITION_ID) int partition ) { System.out.println("From topic " + topic + ", partition " + partition + ": " + message); }

Pikatarkistus: Kafka-kuluttajat

Mikä seuraavista annotaatioista merkitsee Spring Kafkassa menetelmän tietyn aiheen viestien kuuntelijaksi?

Kertaus: Kafka-kuluttajien rakentaminen

Hienoa työtä! Olette oppineet rakentamaan Spring Kafka -kuluttajia, jotka käsittelevät aiheista tulevia viestejä.

  • Määritimme Spring Kafkan asetukset ja käytimme @KafkaListener-annotaatiota viestejä kuluttavien menetelmien luomiseen.
  • Tutustuimme deserialisointiin sekä yksinkertaisten merkkijonojen että monimutkaisten JSON-objektien kuluttamiseen.
  • Ymmärrätte nyt myös kuluttajaryhmien merkityksen skaalauksessa ja virheiden käsittelyssä.

Seuraavaksi perehdymme tarkemmin tuottajien ja kuluttajien integrointiin täysimittaisten tapahtumapohjaisten mikropalvelujen rakentamiseksi!

Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
24
Oppitunnit
93

Usein kysytyt kysymykset

Onko oppitunti ”Kafka-kuluttajien rakentaminen” ilmainen?

Kyllä – oppitunnin ”Kafka-kuluttajien rakentaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssin, päivitä CoddyKit PROhon. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 3 oppituntia.

Mitä opin oppitunnilla ”Kafka-kuluttajien rakentaminen”?

Kehittäkää Spring Kafka -kuluttajia, jotka tilaavat Kafka-aiheita ja käsittelevät niistä saapuvia viestejä. Harjoittelet Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/3.

Kuinka kauan ”Kafka-kuluttajien rakentaminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunnilla?

Kyllä. Jokainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Johdatus Kafka-tuottajiin
  2. Kafka-kuluttajien rakentaminen
  3. Tapahtumapohjainen mikropalveluintegraatio
← Takaisin: Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät