Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) · Lektion

Anpassa producentkonfigurationer

Utforska olika producentkonfigurationer, såsom acks, batchstorlek, linger.ms och retries, för att optimera prestanda och tillförlitlighet.

Lektion 3 av 411 steg

Anpassa producentkonfigurationer är en gratis lektion i Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka), och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) innehåller totalt 4 lektioner.

Varför anpassa producentinställningarna?

När du skickar meddelanden till Kafka är standardinställningarna inte alltid optimala. Att anpassa producentens konfiguration är viktigt för att optimera den efter specifika behov.

Du kan finjustera producenten för bättre prestanda, ökad tillförlitlighet eller optimerad genomströmning, beroende på applikationens krav.

Konfigurera i Spring Boot

I Spring Boot definieras Kafka-producentens egenskaper vanligtvis i filen application.yml (eller .properties).

Alla producentrelaterade inställningar börjar vanligtvis med prefixet spring.kafka.producer. Spring Boot använder automatiskt dessa för att konfigurera din KafkaTemplate.

spring:
  kafka:
    bootstrap-servers: localhost:9092
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
      # Custom configurations go here

Bekräftelser (`acks`)

Egenskapen acks (bekräftelser) avgör hur beständiga meddelanden som skickas av producenten är. Den styr hur många repliker som måste bekräfta skrivningen innan producenten betraktar meddelandet som skickat.

  • acks=0: Producenten väntar inte på någon bekräftelse. Snabbast, men med lägst beständighet (meddelanden kan gå förlorade).
  • acks=1: Producenten väntar på att ledarrepliken ska bekräfta skrivningen. En bra balans mellan beständighet och hastighet.
  • acks=all: Producenten väntar på att alla synkroniserade repliker ska bekräfta. Högst beständighet, men långsammast.

Ställa in `acks=all`

För kritiska meddelanden där dataförlust inte kan accepteras brukar du ställa in acks på all. Det säkerställer att meddelandet har replikerats säkert innan producenten går vidare.

Kom ihåg att högre beständighet ofta innebär något högre latens.

spring:
  kafka:
    producer:
      acks: all # Ensures high durability
      # Other producer configs

Batchbearbetning: `batch.size` och `linger.ms`

För att förbättra genomströmningen skickar Kafka-producenter inte varje meddelande separat. I stället samlar de flera meddelanden i batchar.

  • batch.size: Den maximala mängd data (i byte) som samlas in innan en batch skickas. Standardvärdet är 16 KB.
  • linger.ms: Den maximala tid (i millisekunder) som producenten väntar på att fler meddelanden ska samlas i en batch. Standardvärdet är 0 ms (skicka omedelbart).

Dessa två egenskaper fungerar tillsammans: en batch skickas när antingen batch.size har uppnåtts ELLER linger.ms har löpt ut.

Optimera batchinställningar

Justering av batch.size och linger.ms kan påverka prestandan avsevärt. Större batchar och längre väntetider kan öka genomströmningen, men också medföra något högre latens för enskilda meddelanden.

Så här kan du konfigurera dem för bättre batchbearbetning:

spring:
  kafka:
    producer:
      batch-size: 32768 # 32 KB (larger batch)
      linger-ms: 50     # Wait up to 50ms (longer wait)
      # Other producer configs

Nya försök (`retries`)

Vad händer om ett meddelande inte kan skickas på grund av ett tillfälligt nätverksproblem eller att en broker tillfälligt inte är tillgänglig?

Egenskapen retries anger hur många gånger producenten ska försöka skicka ett meddelande igen när det första försöket misslyckades på grund av ett potentiellt återställningsbart fel. Detta förbättrar meddelandeleveransens tillförlitlighet avsevärt.

Ställa in `retries`

Genom att ange ett rimligt antal nya försök ökar du chansen att meddelandena till slut når Kafka, även om tillfälliga problem uppstår.

Det kombineras ofta med delivery.timeout.ms, som anger den totala tid en producent väntar på att ett meddelande ska levereras, inklusive nya försök.

spring:
  kafka:
    producer:
      retries: 5 # Try up to 5 times on failure
      delivery-timeout-ms: 120000 # 2 minutes total timeout
      # Other producer configs

Anpassad producent i praktiken

Spring Boot hanterar den underliggande Kafka-klientkonfigurationen utifrån din application.yml, men låt oss se hur dessa egenskaper anges direkt i en Java Kafka-producent. Det gör det lättare att förstå den grundläggande mekanismen.

Det här exemplet konfigurerar och använder uttryckligen en Kafka-producent:

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.Properties;

public class CustomProducerDemo {
    public static void main(String[] args) {
        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");

        // Custom configurations we discussed
        props.put("acks", "all");
        props.put("batch.size", 32768);
        props.put("linger.ms", 50);
        props.put("retries", 5);

        try (KafkaProducer<String, String> producer = new KafkaProducer<>(props)) {
            producer.send(new ProducerRecord<>("custom-topic", "key1", "Hello from CoddyKit!"));
            producer.send(new ProducerRecord<>("custom-topic", "key2", "Another custom message!"));
            producer.flush(); // Ensure all buffered records are sent
            System.out.println("Messages sent with custom configurations.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Testa dina kunskaper

Du har lärt dig om flera viktiga producentkonfigurationer. Låt oss testa dina kunskaper!

Repetition: Anpassa producenter

Bra jobbat! Du har undersökt hur du kan anpassa dina Kafka-producenter efter olika behov:

  • acks: Styr meddelandenas beständighet.
  • batch.size och linger.ms: Optimerar genomströmningen genom att samla meddelanden i batchar.
  • retries: Förbättrar tillförlitligheten genom att skicka misslyckade meddelanden igen.

Genom att förstå och justera dessa egenskaper kan du anpassa dina Spring Boot-Kafka-applikationer efter specifika mål för prestanda och tillförlitlighet. Härnäst går vi igenom hur man implementerar Kafka-konsumenter!

Gratis att börja

Lär dig Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Anpassa producentkonfigurationer” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka), inklusive ”Anpassa producentkonfigurationer”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) innehåller totalt 4 lektioner.

Vad lär jag mig i ”Anpassa producentkonfigurationer”?

Utforska olika producentkonfigurationer, såsom acks, batchstorlek, linger.ms och retries, för att optimera prestanda och tillförlitlighet. Ni övar på Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka)?

Du behöver inga förkunskaper. Utbildningen i Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka) på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Anpassa producentkonfigurationer”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka)-lektionen?

Ja. Varje Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka)-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Integrera Spring Kafka Starter
  2. Skicka meddelanden med KafkaTemplate
  3. Anpassa producentkonfigurationer
  4. Hantera callbacks och bekräftelser vid producentanrop
← Tillbaka till Avancerad Spring Boot 4: händelsestyrd arkitektur (Kafka)