Kafka-kuluttajien rakentaminen
Kehittäkää Spring Kafka -kuluttajia, jotka tilaavat Kafka-aiheita ja käsittelevät niistä saapuvia viestejä.
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:9092Tutustu @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.StringDeserializerDeserialisoijan 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!
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
- Johdatus Kafka-tuottajiin
- Kafka-kuluttajien rakentaminen
- Tapahtumapohjainen mikropalveluintegraatio