Kembali ke blog
Aip Achtarudin
Aip Achtarudin

Panduan Kafka Via CLI β€” Biar Gak Tegang πŸ’ͺ

Panduan Kafka Via CLI β€” Biar Gak Tegang πŸ’ͺ

πŸ“š Panduan Kafka Via CLI – Buat Kalian yang Lagi Belajar Streaming Data

Yuk kenalan sama perintah-perintah dasar di Kafka CLI. Mulai dari bikin topik, kirim & baca pesan, sampai mantau consumer group. Semuanya bisa kalian lakuin dari terminal.


βš™οΈ Setup Kafka Gak Pake Ribet (Pakai Docker Compose)

Sebelum bahas Kafka Via CLI, kalian bisa langsung jalanin Kafka lokal tanpa install manual. Cukup copy file docker-compose.yml di bawah ini

services:

  kafka:
    image: bitnami/kafka:4.0.0
    container_name: kafka_container
    environment:
      - KAFKA_CFG_NODE_ID=1
      - KAFKA_CFG_PROCESS_ROLES=broker,controller
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://0.0.0.0:9094
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://localhost:9094
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
      - ALLOW_PLAINTEXT_LISTENER=yes

    working_dir: /opt/bitnami/kafka
    ports:
      - "9094:9094"
    networks:
      - kafka-network

  kafka-ui:
    image: provectuslabs/kafka-ui:latest
    container_name: kafka-ui
    depends_on:
      - kafka
    ports:
      - '8080:8080'
    environment:
      - KAFKA_CLUSTERS_0_NAME=local-cluster
      - KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
      - KAFKA_CLUSTERS_0_READONLY=false
      - KAFKA_CLUSTERS_0_TOPIC_AUTO_CREATE=true
    networks:
      - kafka-network


networks:
  kafka-network:
    driver: bridge

dan jalankan:

docker compose up -d

πŸ” Cek Versi Kafka

./bin/kafka-topics.sh --version

Pake ini buat tahu Kafka versi berapa yang lagi kalian pakai sekarang.


πŸ†• Bikin Topik Baru

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic helloword
./bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic belajarkafka

Kalian bisa bikin topik sesuka hati. Di sini kita bikin helloword dan belajarkafka. Topik ini tempat semua pesan akan dikirim.


🧐 Lihat Detail Topik

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic helloword

Mau tahu isi topik helloword? Cek berapa partisinya, siapa leader-nya, dan info lainnya.


🧩 Bikin Topik dengan Beberapa Partisi

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic helloword-partitions --partitions 2

Biasanya default-nya 1 partisi. Tapi kalau kalian butuh performa lebih, tambahin partisi pas bikin topik.


πŸ”§ Ubah Jumlah Partisi Topik yang Udah Ada

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic helloword --partitions 2

Udah bikin topik tapi kurang partisi? Tenang, tinggal tambahin. Tapi inget ya, partisi nggak bisa dikurangin.


πŸ“‹ Lihat Semua Topik yang Ada

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

Cek semua topik yang udah kalian buat di broker Kafka.


πŸ—‘οΈ Hapus Topik

./bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic belajarkafka

Topik udah gak dipakai? Hapus aja. Tapi make sure Kafka kalian udah nyalain setting delete.topic.enable=true.


πŸ“€ Kirim Pesan ke Topik (Mode Biasa)

./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic helloword

Setelah dijalankan, kalian bisa ngetik pesan langsung di terminal. Tiap enter, langsung masuk ke topik.


πŸ”‘ Kirim Pesan dengan Key (Pakai Pemisah ”:”)

./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic helloword --property "parse.key=true" --property "key.separator=:"

Kalian bisa kirim pesan dalam format key:value. Misal id123:halo semua. Ini berguna kalau kalian pakai partitioning berdasarkan key.


πŸ“₯ Baca Pesan dari Topik (Consumer Biasa)

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic helloword --from-beginning

Ini buat baca semua pesan yang ada di topik helloword, dari awal banget.


πŸ‘₯ Baca Pesan Pakai Consumer Group

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic helloword --from-beginning --group payment

Kalau kalian pengen banyak consumer kerja bareng, pake group. Pesan bakal dibagi-bagi antar consumer dalam group yang sama.


πŸ”‘ Baca Pesan + Tampilkan Key-nya

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic helloword --from-beginning --group payment --property "print.key=true"

Kalau kalian kirim pesan pakai key, di sini key-nya juga bakal ditampilkan saat kalian consume.


πŸ“Š Cek Offset & Lag Semua Consumer Group

./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --all-groups --all-topics --describe

Buat mantau sejauh mana consumer group kalian udah baca pesan. Bisa lihat juga ada β€œlag” gak β€” artinya pesan yang belum kebaca.


βœ… Penutup

Nah itu dia, jurus-jurus Kafka CLI yang wajib tau kalau lagi belajar atau ngetes sistem message streaming. Dengan command di atas, kalian udah bisa:

  • 🎯 Bikin dan ngatur topik
  • πŸ“¨ Kirim & baca pesan
  • 🧠 Kelola dan pantau consumer group