Kafka Tüketicileri Oluşturma
Kafka konularındaki iletilere abone olan ve bunları işleyen Spring Kafka tüketicileri geliştirin.
Kafka Tüketicileri Oluşturma, CoddyKit'te ücretsiz bir Spring Boot 4 Microservices & REST APIs dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Spring Boot 4 Microservices & REST APIs öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Spring Boot 4 Microservices & REST APIs kursu toplamda 3 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
Kafka Consumers: The Listeners
In event-driven architectures, Kafka Consumers are the components responsible for reading messages (records) from Kafka topics. Think of them as listeners waiting for new events!
They subscribe to one or more topics and process the incoming data, enabling different parts of your application or other services to react to events.
Spring Boot & Kafka Config
To build a Kafka consumer in Spring Boot, first, you need the spring-kafka dependency. Add it to your pom.xml:
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>Next, configure your Kafka broker details in application.properties. This tells your Spring Boot app where to find the Kafka server.
spring.kafka.bootstrap-servers=localhost:9092Meet @KafkaListener
Spring for Apache Kafka provides the powerful @KafkaListener annotation. This annotation marks a method to be a Kafka listener, meaning it will automatically consume messages from specified topics.
topics: The Kafka topic(s) to listen to.groupId: Identifies the consumer group. Essential for scaling.
It handles all the low-level Kafka API details for you!
Your First Kafka Listener
Let's create a simple consumer that listens to a topic named my-first-topic and prints any incoming string messages to the console.
Notice the groupId. All consumers with the same groupId are part of a consumer group.
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);
}
}Understanding Deserialization
Kafka messages are stored as byte arrays. When a consumer reads a message, it needs to convert these bytes back into a usable object (like a String or a custom Java object).
This process is called deserialization. You configure deserializers in application.properties:
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializerThe choice of deserializer depends on how the producer serialized the message.
Consumer Groups for Scale
Consumer groups are key to Kafka's scalability. Multiple consumer instances can belong to the same group, sharing the workload of consuming messages from a topic.
- Each message in a topic partition is delivered to only one consumer instance within a group.
- If you have more consumers than partitions, some consumers will be idle.
- If a consumer fails, another consumer in the same group automatically takes over its partitions.
This allows for both high availability and horizontal scaling.
Listening for JSON Data
Often, you'll send complex data as JSON. To consume JSON, you'll need to define a Java class (POJO) that matches the JSON structure and use Spring Kafka's JsonDeserializer.
Add spring.kafka.consumer.value-deserializer=org.springframework.kafka.support.serializer.JsonDeserializer to your config.
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);
}
}Graceful Error Handling
What happens if a message is malformed or your processing logic throws an error? Consumers need robust error handling.
For simple errors, a try-catch block within your listener method is effective. For more advanced scenarios, Spring Kafka offers error handlers:
DefaultErrorHandler: Retries messages with backoff.DeadLetterPublishingRecoverer: Sends failed messages to a dead-letter topic.
These prevent a single bad message from stopping your entire consumer.
Peeking at Message Metadata
Sometimes, you need more than just the message payload. Kafka messages come with useful metadata, such as the topic name, partition, and offset.
You can access this metadata directly in your @KafkaListener method using annotations like @Header or by accepting a ConsumerRecord object.
@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);
}Quick Check: Kafka Consumers
Which of the following is the primary annotation used in Spring Kafka to mark a method as a message listener for a specific topic?
Recap: Building Kafka Consumers
Great job! You've learned how to build Spring Kafka consumers to process messages from topics.
- We set up Spring Kafka and used
@KafkaListenerto create message-consuming methods. - We explored deserialization and how to consume both simple strings and complex JSON objects.
- You also understand the importance of consumer groups for scaling and handling errors.
Next up, we'll dive deeper into integrating producers and consumers to build full event-driven microservices!
Sıkça Sorulan Sorular
“Kafka Tüketicileri Oluşturma” dersi ücretsiz mi?
Evet — “Kafka Tüketicileri Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Spring Boot 4 Microservices & REST APIs kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Spring Boot 4 Microservices & REST APIs kursu toplamda 3 dersten oluşur.
“Kafka Tüketicileri Oluşturma” dersinde ne öğreneceğim?
Kafka konularındaki iletilere abone olan ve bunları işleyen Spring Kafka tüketicileri geliştirin. Spring Boot 4 Microservices & REST APIs ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Spring Boot 4 Microservices & REST APIs öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Spring Boot 4 Microservices & REST APIs, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.
“Kafka Tüketicileri Oluşturma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Spring Boot 4 Microservices & REST APIs dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Spring Boot 4 Microservices & REST APIs dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Kafka Üreticilerine Giriş
- Kafka Tüketicileri Oluşturma
- Olay Odaklı Mikro Hizmet Entegrasyonu