Pierwszy kwartał 2025 zaowocował dla developerów nową wersją Apache Kafki 4.0. Oferuje ona wiele zmian, które wpłyną na jej efektywność w kontekście przetwarzania dużych wolumenów danych. Poniżej lista zmian z moją interpretacją, które tłumaczą, jakie nowości oferuje Kafka.
Kluczowe zmiany w Apache Kafka 4
KRaft domyślnie — brak ZooKeepera
Apache Kafka 4.0 nie potrzebuje już osobnego ZooKeepera. Wszystko, co wcześniej robił ZooKeeper, jest wbudowane w samą Kafkę. Dzięki temu klaster jest prostszy w utrzymaniu i ma mniej elementów, które mogą się popsuć.
KIP-848 (GA) — nowy protokół grup konsumenckich; rebalans bez „stop-the-world”
Do tej pory, gdy dołączał nowy konsument albo ktoś się odłączał, cała grupa zatrzymywała przetwarzanie, żeby rozdzielić zadania na nowo. Teraz Kafka potrafi to robić „w locie” – bez zatrzymywania wszystkiego. Efekt: mniej przerw, płynniejszy streaming.
Queues / Share Groups (EA) — oparte o KIP-932
Pojawił się nowy tryb pracy, w którym Kafka działa bardziej jak klasyczna kolejka. Zamiast wysyłać te same dane do całej grupy, rozdziela je tak, żeby każde zadanie dostał tylko jeden konsument. Przydaje się to w scenariuszach typu „work queue” – kilku pracowników, a każde zadanie wykonuje tylko jeden.
Lepsza obserwowalność i utrzymanie
Dodano więcej metryk, poprawiono logi i wyczyszczono stare ustawienia. Dzięki temu łatwiej jest zrozumieć, co dzieje się w klastrze, i szybciej znaleźć problemy.
Wymagania: brokery/Connect na Java 17+; klienci/Streams nadal 11+
Serwer Kafka i Connect muszą działać na Javie 17 lub nowszej. Klienci i Kafka Streams mogą wciąż pracować na Javie 11, więc nie trzeba od razu podnosić wersji Javy w aplikacjach użytkowników.
Co zmienia Kafka 4 dla programistów Java/Spring Boot?
- Jeśli chcesz korzystać z nowych funkcji Kafka 4.0 w aplikacji spring-bootowej, musisz mieć zależność Spring for Apache Kafka co najmniej w wersji 4.0.
- Na Spring Boot 3.x możesz dalej używać spring-kafka 3.3.x – dogada się z brokerem Kafka 4.0, ale bez nowych funkcji.
- Do dev/testa odpalaj brokery w trybie KRaft (obrazy 4.0), bo ZooKeeper nie jest już potrzebny.
- Mając klienta Kafka 4.0 i broker 4.0, możesz włączyć nowy protokół KIP-848 – wystarczy dopisać właściwość w konfiguracji:
# włączenie nowego protokołu KIP‑848 po stronie konsumenta spring.kafka.consumer.properties.group.protocol=consumer
Prosta integracja konsumenta w Spring Boot
# opcjonalna konfiguracja klienta
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=demo
spring.kafka.consumer.auto-offset-reset=earliest
// przykładowy listener Spring
@Component
class GreetingListener {
@KafkaListener(topics = "greetings")
void on(String payload){
System.out.println(">> " + payload);
}
}
Uruchomienie Apache Kafka 4.0 na Dockerze
docker run -it --rm -p 9092:9092 \ -e KAFKA_CFG_PROCESS_ROLES=broker,controller \ -e KAFKA_CFG_NODE_ID=1 \ -e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@localhost:9093 \ -e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 \ -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \ apache/kafka:4.0.0
Natomiast jeśli chcesz użyć Docker Compose do uruchomienia Kafki z konfiguracją, która umożliwia integrację zarówno wewnątrz, jak i na zewnątrz sieci – z dodatkowo uruchomionym Kafka-UI, narzędziem pozwalającym wizualnie sprawdzić, co aktualnie znajduje się na Kafka (łącznie z tematami) – to tutaj udostępniam mój plik docker-compose:
Projekt z Apache Kafka!
Na ostatnim moim livestreamie z Apache Kafka tworzyliśmy interaktywną mapę sentymentów, która na bieżąco pobiera dane z kanałów programistycznych i wykorzystuje AI do analizy nastrojów. Elastycznie połączyliśmy Apache Kafka ze Spring Boot oraz Leafletem do wyświetlania widoku mapy. Wszystko po to, żeby stworzyć coś efektywnego, pokazać, jak można zbudować własny, ciekawy projekt, łącząc technologie i wykorzystując podejście event-driven w nowoczesnych mikroserwisach.

Zapis z nagrania jest dostępny 👉 https://eduflow.pl/kafka-4-spring-boot-integracja-powtorka
Byłem też proszony o udostępnienie Frontu z tej appki, więc proszę:
Zobacz listę szkoleń

