KRaft (Kafka Raft) is the new Apache Kafka architecture that eliminates the Zookeeper dependency. Available since Kafka 2.8 and stable since 3.3.
;; Complete setup with KRaft + Kafka UI
(dev/kafka-setup-kraft!)
;; Or with specific topics
(dev/kafka-setup-kraft! ["orders" "payments" "notifications"])
;; Just start without creating topics
(dev/kafka-up-kraft!)
;; Minimalist setup - super fast
(dev/kafka-setup-simple!)
;; Just start Kafka without UI
(dev/kafka-up-simple!)
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Zookeeper │ │ Kafka │ │ Kafka UI │
│ :2181 │◄──►│ :9092 │◄──►│ :8080 │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐
│ Kafka │ │ Kafka UI │
│ :9092 │◄──►│ :8080 │
│ (+ metadata)│ └─────────────┘
└─────────────┘
┌─────────────┐
│ Kafka │
│ :9092 │
│ (+ metadata)│
└─────────────┘
kraft-docker-compose
)services:
kafka:
image: confluentinc/cp-kafka:7.5.0
environment:
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: "broker,controller"
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@localhost:29093"
# ... without Zookeeper
kafka-ui:
# Web interface at localhost:8080
kraft-simple-docker-compose
)services:
kafka:
image: confluentinc/cp-kafka:7.5.0
ports:
- "9092:9092"
environment:
KAFKA_PROCESS_ROLES: "broker,controller"
# ... minimal configuration
;; 1. Quick setup for development
(dev/kafka-setup-kraft!)
;; 2. Use normally
(dev/send-test-messages "my-topic" 5)
(dev/read-test-messages "my-topic")
;; 3. Open UI in browser: http://localhost:8080
;; 4. Stop when finished
(dev/kafka-dev-teardown!)
;; 1. Minimalist setup (no UI)
(dev/kafka-setup-simple!)
;; 2. Test quickly
(dev/setup-dev-topic "test")
(dev/send-test-messages "test" 3)
;; 3. Stop
(dev/kafka-dev-teardown!)
;; View specific logs
(dev/kafka-docker-logs! "kafka")
;; Check if ports are free
;; 9092 (Kafka), 29093 (Controller)
;; Wait for complete initialization
(dev/wait-for-kafka 60)
;; Check status
(dev/kafka-docker-status)
;; Stop and clean everything
(dev/kafka-dev-teardown! true)
;; Recreate from scratch
(dev/kafka-setup-kraft!)
Kafka Metamorphosis facilitates migration:
;; Currently using Zookeeper
(dev/kafka-setup-zookeeper!)
;; Migrate to KRaft (same API)
(dev/kafka-setup-kraft!)
;; Application code remains the same!
Kafka's metamorphosis eliminates Zookeeper complexity! 🪲➡️🦋
Can you improve this documentation? These fine people already did:
Caio Henrique & Caio ClavicoEdit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
Ctrl+k | Jump to recent docs |
← | Move to previous article |
→ | Move to next article |
Ctrl+/ | Jump to the search field |