Skip to main content

Mengenal Apache Kafka dan Integrasi dengan Spring Boot 1

Kata Pembuka

Dalam era teknologi yang semakin berkembang pesat, kebutuhan untuk mengelola data dalam jumlah besar dan secara real-time menjadi sangat krusial. Apache Kafka hadir sebagai solusi andal yang memungkinkan pengiriman dan pengolahan data secara cepat dan terdistribusi. Kafka telah digunakan oleh berbagai perusahaan besar untuk membangun sistem yang dapat menangani aliran data yang sangat besar dengan latensi rendah, seperti sistem pemrosesan transaksi, analisis data waktu nyata, dan integrasi antar sistem yang berbasis event-driven.

Artikel ini akan membahas dasar-dasar Apache Kafka, konsep utamanya, serta bagaimana mengintegrasikan Kafka ke dalam aplikasi berbasis Spring Boot. Kita akan mempelajari cara mengatur Kafka di proyek Spring Boot Anda, membuat producers dan consumers, serta mengeksplorasi potensi penuh dari Kafka untuk membangun aplikasi yang scalable dan efisien.


Pengenalan Apache Kafka

Apache Kafka adalah platform distribusi berbasis log terdistribusi yang dirancang untuk menangani aliran data secara real-time. Dikembangkan oleh LinkedIn dan kemudian disumbangkan ke Apache Software Foundation, Kafka telah menjadi salah satu alat paling populer dalam mengelola stream data besar yang perlu diproses dan dianalisis dengan cepat.

Kafka dikenal sebagai platform messaging yang memungkinkan berbagai aplikasi untuk mempublikasikan, mengkonsumsi, menyimpan, dan memproses data dalam jumlah besar dengan kecepatan tinggi. Kafka banyak digunakan untuk membangun sistem event-driven architecture, di mana perubahan dalam satu aplikasi dapat segera memicu tindakan di aplikasi lain melalui event atau pesan yang diteruskan oleh Kafka.

Beberapa karakteristik utama dari Kafka meliputi:
  • High Throughput: Kafka mampu menangani jutaan pesan per detik bahkan pada infrastruktur minimal, menjadikannya ideal untuk aplikasi berskala besar.
  • Scalability: Kafka dirancang untuk menskalakan, memungkinkan Anda menambah lebih banyak broker ke dalam cluster Kafka untuk menangani lebih banyak data tanpa kehilangan kinerja.
  • Durability: Data yang dikirimkan ke Kafka disimpan secara persisten dalam log, dan Kafka mendukung replikasi data antar broker untuk memastikan ketersediaan dan keamanan data yang tinggi.
  • Fault Tolerance: Kafka memiliki mekanisme toleransi kegagalan yang baik dengan replikasi dan pengelolaan cluster secara otomatis, sehingga tetap bisa berjalan meskipun ada beberapa node yang gagal.

Contoh Kasus Penggunaan Kafka

Kafka telah digunakan oleh banyak perusahaan besar di dunia untuk berbagai kasus penggunaan seperti:
  • Monitoring dan Analytics Real-Time: Kafka digunakan untuk memproses dan menganalisis data sensor atau log sistem dalam waktu nyata, memungkinkan organisasi untuk membuat keputusan cepat.
  • Pengelolaan Transaksi: Di sektor keuangan, Kafka digunakan untuk mengelola dan memproses aliran data transaksi, misalnya dalam sistem pembayaran atau perdagangan saham.
  • Komunikasi Antar-Layanan: Dalam arsitektur microservices, Kafka sering digunakan untuk komunikasi antar-layanan, memastikan bahwa setiap perubahan atau event dapat disampaikan dengan cepat dan terdistribusi dengan baik.
Dengan kemampuan Kafka untuk menangani data secara efisien dan handal, tidak mengherankan jika banyak perusahaan memilih Kafka sebagai tulang punggung infrastruktur data mereka. Dalam artikel ini, kita akan mengeksplorasi lebih lanjut bagaimana Kafka bekerja dan bagaimana Anda dapat mengintegrasikannya dengan Spring Boot untuk membangun aplikasi berbasis event-driven yang tangguh dan skalabel.


Pengantar Integrasi Kafka dan Spring Boot

Dengan semakin meningkatnya kebutuhan akan aplikasi yang responsif dan mampu memproses data secara real-time, banyak pengembang beralih ke arsitektur berbasis event. Dalam konteks ini, Apache Kafka menjadi pilihan utama sebagai sistem messaging dan streaming yang kuat. Di sisi lain, Spring Boot memberikan kerangka kerja yang sangat baik untuk membangun aplikasi Java dengan cepat dan efisien.

Integrasi antara Kafka dan Spring Boot memungkinkan pengembang untuk memanfaatkan kekuatan kedua alat ini, menggabungkan kemudahan pengembangan aplikasi yang ditawarkan oleh Spring Boot dengan kemampuan Kafka untuk mengelola dan memproses aliran data dalam jumlah besar. Dengan menggunakan Spring Kafka, pengembang dapat dengan mudah mengonfigurasi producer dan consumer, mengelola topik, serta menangani pesan dengan sangat efisien.

Keuntungan Integrasi Kafka dengan Spring Boot:
  • Kemudahan Konfigurasi: Spring Boot menyediakan pengaturan otomatis yang memudahkan integrasi Kafka tanpa harus menulis banyak kode boilerplate. Dengan pengaturan yang sederhana, Anda dapat langsung mulai mengirim dan menerima pesan.
  • Dukungan untuk Asynchronous Processing: Integrasi ini mendukung pemrosesan asinkron, yang memungkinkan aplikasi untuk tetap responsif sambil memproses data secara paralel.
  • Pengelolaan Dependency yang Mudah: Dengan Maven atau Gradle, Anda dapat mengelola dependency Kafka dan Spring Boot dengan mudah, memastikan bahwa Anda selalu menggunakan versi terbaru yang kompatibel.
  • Monitoring dan Manajemen yang Mudah: Spring Boot Actuator, yang dapat digunakan bersamaan dengan Kafka, memungkinkan Anda untuk memantau dan mengelola aplikasi dengan lebih baik, memberikan visibilitas terhadap kinerja dan kesehatan aplikasi.
  • Kemampuan Scaling: Dengan arsitektur microservices yang sering digunakan dalam aplikasi berbasis Spring Boot, Kafka memungkinkan aplikasi untuk diskalakan dengan mudah, baik dalam hal pengiriman maupun pemrosesan pesan.

Dalam bagian selanjutnya, kita akan menjelajahi langkah-langkah yang diperlukan untuk mengintegrasikan Kafka ke dalam proyek Spring Boot Anda. Anda akan mempelajari cara menyiapkan lingkungan, menambahkan dependency yang diperlukan, serta membuat producer dan consumer untuk mengelola pesan dengan efektif.


Integrasi Kafka Pada Project Spring Boot

1. Buka File pom.xml

Temukan file pom.xml di root direktori proyek Spring Boot Anda. File ini mengatur dependency, plugin, dan konfigurasi build untuk proyek Maven Anda.

2. Tambahkan Dependency Kafka

Di dalam elemen <dependencies>, tambahkan dependency berikut untuk mendukung Kafka:

<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
Dependency ini menyediakan integrasi antara Spring Boot dan Kafka, termasuk konfigurasi, producer, dan consumer yang diperlukan untuk mengelola pesan.

3. Mengatur Versi Dependency (Opsional)

Jika Anda ingin mengontrol versi secara eksplisit, Anda dapat menambahkan tag <version> di dalam dependency tersebut. Namun, jika Anda menggunakan spring-boot-starter-parent seperti pada proyek ini, versi yang tepat akan dikelola oleh Spring Boot.

4. Contoh Penggalan Bagian Dependency Kafka dalam pom.xml

Setelah menambahkan dependency Kafka, bagian <dependencies> dalam pom.xml Anda seharusnya terlihat seperti berikut:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.mhyusuf</groupId>
<artifactId>YBoilerplate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>YBoilerplate</name>
<description>YBoilerplate</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>21</java.version>
</properties>
<dependencies>
...
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>

</dependencies>

5. Menyimpan Perubahan dan Mengupdate Proyek

Setelah menambahkan dependency, simpan perubahan pada pom.xml. Jika Anda menggunakan IDE seperti IntelliJ IDEA atau Eclipse, pastikan untuk mengupdate proyek Maven Anda agar IDE mengenali perubahan dependency yang baru ditambahkan.

6. Verifikasi Dependency

Anda dapat memverifikasi bahwa dependency Kafka telah ditambahkan dengan sukses dengan menjalankan perintah berikut di terminal proyek Anda:

PS D:\analisa\YBoilerplate> mvn dependency:tree
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< com.mhyusuf:YBoilerplate >----------------------
[INFO] Building YBoilerplate 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:3.6.1:tree (default-cli) @ YBoilerplate ---
[INFO] com.mhyusuf:YBoilerplate:jar:0.0.1-SNAPSHOT
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:3.3.3:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:3.3.3:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:3.3.3:compile
[INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.5.7:compile
[INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.5.7:compile
[INFO] |  |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.23.1:compile
[INFO] |  |  |  |  \- org.apache.logging.log4j:log4j-api:jar:2.23.1:compile
[INFO] |  |  |  \- org.slf4j:jul-to-slf4j:jar:2.0.16:compile
[INFO] |  |  +- jakarta.annotation:jakarta.annotation-api:jar:2.1.1:compile
[INFO] |  |  \- org.yaml:snakeyaml:jar:2.2:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-json:jar:3.3.3:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.17.2:compile
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.17.2:compile
[INFO] |  |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.17.2:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.17.2:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.17.2:compile
[INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.17.2:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:3.3.3:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:10.1.28:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:10.1.28:compile
[INFO] |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:10.1.28:compile
[INFO] |  +- org.springframework:spring-web:jar:6.1.12:compile
[INFO] |  |  \- org.springframework:spring-beans:jar:6.1.12:compile
[INFO] |  \- org.springframework:spring-webmvc:jar:6.1.12:compile
[INFO] |     +- org.springframework:spring-aop:jar:6.1.12:compile
[INFO] |     \- org.springframework:spring-expression:jar:6.1.12:compile
[INFO] +- org.springframework.boot:spring-boot-starter-thymeleaf:jar:3.3.3:compile
[INFO] |  \- org.thymeleaf:thymeleaf-spring6:jar:3.1.2.RELEASE:compile
[INFO] |     +- org.thymeleaf:thymeleaf:jar:3.1.2.RELEASE:compile
[INFO] |     |  +- org.attoparser:attoparser:jar:2.0.7.RELEASE:compile
[INFO] |     |  \- org.unbescape:unbescape:jar:1.1.6.RELEASE:compile
[INFO] |     \- org.slf4j:slf4j-api:jar:2.0.16:compile
[INFO] +- org.springframework.boot:spring-boot-devtools:jar:3.3.3:runtime
[INFO] |  +- org.springframework.boot:spring-boot:jar:3.3.3:compile
[INFO] |  \- org.springframework.boot:spring-boot-autoconfigure:jar:3.3.3:compile
[INFO] +- org.projectlombok:lombok:jar:1.18.34:compile
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:3.3.3:test
[INFO] |  +- org.springframework.boot:spring-boot-test:jar:3.3.3:test
[INFO] |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:3.3.3:test
[INFO] |  +- com.jayway.jsonpath:json-path:jar:2.9.0:test
[INFO] |  +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.2:test
[INFO] |  |  \- jakarta.activation:jakarta.activation-api:jar:2.1.3:test
[INFO] |  +- net.minidev:json-smart:jar:2.5.1:test
[INFO] |  |  \- net.minidev:accessors-smart:jar:2.5.1:test
[INFO] |  |     \- org.ow2.asm:asm:jar:9.6:test
[INFO] |  +- org.assertj:assertj-core:jar:3.25.3:test
[INFO] |  |  \- net.bytebuddy:byte-buddy:jar:1.14.19:test
[INFO] |  +- org.awaitility:awaitility:jar:4.2.2:test
[INFO] |  +- org.hamcrest:hamcrest:jar:2.2:test
[INFO] |  +- org.junit.jupiter:junit-jupiter:jar:5.10.3:test
[INFO] |  |  +- org.junit.jupiter:junit-jupiter-api:jar:5.10.3:test
[INFO] |  |  |  +- org.opentest4j:opentest4j:jar:1.3.0:test
[INFO] |  |  |  +- org.junit.platform:junit-platform-commons:jar:1.10.3:test
[INFO] |  |  |  \- org.apiguardian:apiguardian-api:jar:1.1.2:test
[INFO] |  |  +- org.junit.jupiter:junit-jupiter-params:jar:5.10.3:test
[INFO] |  |  \- org.junit.jupiter:junit-jupiter-engine:jar:5.10.3:test
[INFO] |  |     \- org.junit.platform:junit-platform-engine:jar:1.10.3:test
[INFO] |  +- org.mockito:mockito-core:jar:5.11.0:test
[INFO] |  |  +- net.bytebuddy:byte-buddy-agent:jar:1.14.19:test
[INFO] |  |  \- org.objenesis:objenesis:jar:3.3:test
[INFO] |  +- org.mockito:mockito-junit-jupiter:jar:5.11.0:test
[INFO] |  +- org.skyscreamer:jsonassert:jar:1.5.3:test
[INFO] |  |  \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO] |  +- org.springframework:spring-core:jar:6.1.12:compile
[INFO] |  |  \- org.springframework:spring-jcl:jar:6.1.12:compile
[INFO] |  +- org.springframework:spring-test:jar:6.1.12:test
[INFO] |  \- org.xmlunit:xmlunit-core:jar:2.9.1:test
[INFO] +- org.springframework.boot:spring-boot-starter-actuator:jar:3.3.3:compile
[INFO] |  +- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:3.3.3:compile
[INFO] |  |  \- org.springframework.boot:spring-boot-actuator:jar:3.3.3:compile
[INFO] |  +- io.micrometer:micrometer-observation:jar:1.13.3:compile
[INFO] |  |  \- io.micrometer:micrometer-commons:jar:1.13.3:compile
[INFO] |  \- io.micrometer:micrometer-jakarta9:jar:1.13.3:compile
[INFO] |     \- io.micrometer:micrometer-core:jar:1.13.3:compile
[INFO] |        +- org.hdrhistogram:HdrHistogram:jar:2.2.2:runtime
[INFO] |        \- org.latencyutils:LatencyUtils:jar:2.0.3:runtime
[INFO] \- org.springframework.kafka:spring-kafka:jar:3.2.3:compile
[INFO]    +- org.springframework:spring-context:jar:6.1.12:compile
[INFO]    +- org.springframework:spring-messaging:jar:6.1.12:compile
[INFO]    +- org.springframework:spring-tx:jar:6.1.12:compile
[INFO]    +- org.springframework.retry:spring-retry:jar:2.0.8:compile
[INFO]    \- org.apache.kafka:kafka-clients:jar:3.7.1:compile
[INFO]       +- com.github.luben:zstd-jni:jar:1.5.6-3:runtime
[INFO]       +- org.lz4:lz4-java:jar:1.8.0:runtime
[INFO]       \- org.xerial.snappy:snappy-java:jar:1.1.10.5:runtime
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.152 s
[INFO] Finished at: 2024-10-25T13:29:21+07:00
[INFO] ------------------------------------------------------------------------
PS D:\analisa\YBoilerplate>

Perintah ini akan menampilkan pohon dependency proyek Anda, dan Anda harus melihat spring-kafka dalam daftar.

Dengan menambahkan dependency Kafka ke dalam pom.xml, Anda telah mempersiapkan proyek Spring Boot Anda untuk menggunakan Apache Kafka. Selanjutnya, kita akan melakukan konfigurasi Kafka di application.properties untuk melanjutkan proses integrasi.



Instalasi dan Setup Kafka di Lokal dengan Docker (Di Host Windows 11)

Berikut adalah docker compose yang saya gunakan untuk menjalankan kafka di local saya.

version: "3"
networks:
LocalKafkaNetwork:

services:

zookeeper:
image: 'bitnami/zookeeper:latest'
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
networks:
- LocalKafkaNetwork

kafka:
image: 'bitnami/kafka:latest'
user: root
ports:
- '9092:9092'
environment:
- KAFKA_BROKER_ID=1
- KAFKA_LISTENERS=PLAINTEXT://:9092
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
volumes:
- ./Kafka:/bitnami/kafka
networks:
- LocalKafkaNetwork
depends_on:
- zookeeper
Berikut penjelasan pendek dari file docker-compose.yml:
  • Jaringan (LocalKafkaNetwork): Digunakan untuk menghubungkan Kafka dan Zookeeper agar bisa saling berkomunikasi dalam satu jaringan internal.

  • Zookeeper:

    • Menggunakan image bitnami/zookeeper:latest.
    • Port 2181 terbuka untuk komunikasi dengan Kafka.
    • Diizinkan login anonim.
  • Kafka:

    • Menggunakan image bitnami/kafka:latest.
    • Port 9092 terbuka agar Kafka bisa diakses di localhost:9092.
    • Terhubung ke Zookeeper melalui zookeeper:2181.
    • Menggunakan penyimpanan volume lokal di ./Kafka.
  • Dependency: Kafka dijalankan setelah Zookeeper dimulai (depends_on).

File ini menjalankan Kafka dan Zookeeper dengan Docker untuk mempermudah setup lokal.

Menyalakan Kafka Dengan Docker Terminal

Anda bisa jalankan docker-compose.yml diatas dari Terminal, Intellij IDEA Atau Docker GUI lainnya.

Menjalankan kafka dengan docker-compose.yml di Terminal

Dengan InteliJ IDEA (ULTIMATE)

Docker Container di Jalankan dari IntelliJ IDEA 

Selain dari IntelliJ IDEA juga bisa dijalankan dari Docker Desktop Atau Terminal.

Dengan Docker Desktop

Kafka dan Zookeeper di Windows 11

Kafka dan Zookeeper di Windows 11

Kafka dan Zookeeper di Windows 11 dalam kondisi Menyala

Cek Sambungan ke Kafka dengan Kafka Magic

Kafka Magic adalah alat berbasis GUI (antarmuka grafis) yang memudahkan pengelolaan topik untuk bekerja dengan kluster Apache Kafka. Alat ini memungkinkan Anda untuk mencari dan menampilkan pesan, memindahkan dan mengubah pesan antar topik, meninjau dan memperbarui skema, mengelola topik, serta mengotomatiskan berbagai tugas yang rumit.

Kafka Magic mempermudah pengelolaan topik, pengujian QA (Quality Assurance), dan Pengujian Integrasi melalui antarmuka pengguna yang intuitif dan mudah digunakan.

Kafka Magic Community Edition dapat digunakan secara GRATIS, baik untuk keperluan pribadi maupun bisnis. Download di sini!

Kafka Magic Exe

Kafka Magic Exe setelah di klik 1

Kafka Magic Exe setelah di klik 2

Kafka Magic Exe setelah di klik 2 (Launch The Magic)

Checklist: Instalasi dan Setup Kafka di Lokal dengan Docker (Windows 11)

  1. Instal Docker Desktop di Windows 11.
  2. Unduh Kafka dan Zookeeper menggunakan Docker.
  3. ☐ Buat file docker-compose.yml untuk Kafka dan Zookeeper.
  4. ☐ Jalankan Kafka dan Zookeeper dengan docker-compose up.
  5. ☐ Verifikasi Kafka berjalan dengan baik.

Checklist: Instalasi Kafka Magic

  1. Unduh Kafka Magic Community Edition.
  2. Instal Kafka Magic di komputer.
  3. ☐ Konfigurasi Kafka Magic untuk terhubung ke Kafka lokal.
  4. ☐ Uji koneksi dan lihat topik serta pesan di Kafka.


Dengan menyelesaikan instalasi dan setup Apache Kafka di lokal menggunakan Docker di host Windows 11, Anda kini memiliki lingkungan pengembangan yang siap untuk diintegrasikan dengan aplikasi Anda. Kafka berjalan di atas Docker menawarkan fleksibilitas dan kemudahan dalam pengelolaan kluster Kafka, memungkinkan Anda untuk melakukan berbagai eksperimen tanpa khawatir tentang pengaturan server manual.

Selain itu, dengan Kafka Magic, Anda dapat mengelola topik Kafka, meninjau pesan, dan memanipulasi skema dengan mudah melalui antarmuka pengguna yang sederhana dan intuitif. Alat ini sangat berguna untuk pengujian dan debugging selama pengembangan, serta memastikan integrasi yang mulus antara aplikasi dan Kafka.

Dengan dua komponen penting ini, yaitu Kafka dan Kafka Magic, Anda siap untuk mulai memanfaatkan kekuatan Kafka dalam aplikasi Spring Boot Anda, baik untuk membangun sistem berbasis event-driven maupun untuk streaming data secara real-time.

Selanjutnya, kita akan melanjutkan dengan integrasi Kafka ke dalam proyek Spring Boot Anda, menjelaskan langkah-langkah membuat producer dan consumer serta melakukan pengujian dari awal hingga selesai.



Konfigurasi Koneksi Kafka di application.properties

Setelah menambahkan dependency dan segala keperluan diatas, langkah berikutnya adalah mengkonfigurasi bootstrap server dan beberapa parameter penting untuk menghubungkan aplikasi Anda ke broker Kafka.

Contoh konfigurasi Kafka dasar dalam application.properties:

# Alamat server Kafka (sesuaikan dengan host dan port Kafka Anda)
spring.kafka.bootstrap-servers=localhost:9092

# Konfigurasi Consumer
spring.kafka.consumer.group-id=my-group
spring.kafka.consumer.auto-offset-reset=earliest

# Konfigurasi Producer
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer

# Konfigurasi Consumer
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer

Penjelasan singkat dari konfigurasi di atas:

  • spring.kafka.bootstrap-servers: Menentukan alamat broker Kafka yang akan diakses oleh aplikasi. Dalam kasus ini, Kafka dijalankan secara lokal di localhost:9092.
  • spring.kafka.consumer.group-id: Menetapkan group ID untuk consumer Kafka. Setiap consumer dalam group yang sama akan berbagi data dari Kafka, dan Kafka memastikan pesan hanya diterima sekali oleh salah satu consumer dalam group tersebut.
  • spring.kafka.consumer.auto-offset-reset: Mengatur bagaimana Kafka harus menangani offset saat consumer pertama kali dijalankan. Nilai earliest memastikan bahwa consumer akan membaca dari pesan paling awal jika belum ada offset yang tersimpan.
  • spring.kafka.producer.key-serializer & spring.kafka.producer.value-serializer: Menentukan cara meng-serialize data yang dikirim oleh producer ke Kafka. Dalam contoh ini, digunakan serializer untuk tipe String.
  • spring.kafka.consumer.key-deserializer & spring.kafka.consumer.value-deserializer: Digunakan oleh consumer untuk mendeserialize data yang diterima dari Kafka menjadi String.

Juga bisa menggunakan application.yml untuk application.properties, Tapi tidak di jelaskan disini supaya tidak terlalu panjang.

Kesimpulan

Dengan konfigurasi sederhana di application.properties atau application.yml, aplikasi Spring Boot Anda siap berkomunikasi dengan Kafka. Pengaturan ini menyediakan kerangka dasar untuk membangun aplikasi berbasis event-driven yang kuat dengan Kafka sebagai platform pemrosesan pesan. Setelah ini, Anda dapat melanjutkan dengan menambahkan Producer dan Consumer yang lebih kompleks, sesuai dengan kebutuhan sistem Anda.


Selanjutnya Part 2: Mengenal Apache Kafka dan Integrasi dengan Spring Boot 2


Comments

Popular posts from this blog

Numpang Kerja Remote dari Bandung Creative Hub

Semalam kemarin (09 Januari 2019) tidak sengaja kami sekeluarga lewat Bandung Digital Hub saat pulang dari Fish Wow Cheeseee  yang di Jl. Lombok. Bandung Digital Hub ini sendiri berlokasi tidak jauh dari dari tempat kami makan tersebut, yaitu berlokasi di Jl. Laswi No.7, Kacapiring, Batununggal, Kota Bandung, Jawa Barat 40271. Berhubung untuk bulan Januari 2019 ini sedang tidak masuk ke kantor maka saya putuskan untuk besoknya (hari ini 09 Januari 2019) nyoba untuk bekerja remote dari Bandung Digital Hub , apalagi istri yang kebetulan follower pak Ridwan Kamil di Instagram juga Facebook dan tampaknya pernah lihat ulasan mengenai tempat ini sehingga tampak antusias supaya saya datang ketempat ini ini dan mencoba bekerja dari gedung creative hub dan coworking yang keren ini.  Tempat Parkir Masalah utama saat kita datang ke coworking space terutama yang berlokasi di Bandung (atau mungkin kota-kota lainnya) adalah lahan parkir, kadang lahan parkir ...

Numpang Kerja Remote dari Bandung Digital Valley

Satu lagi co-working place  gratisan dan keren yang cukup populer dikota Bandung, co-working place yang juga memberikan fasilitas tempat kerja (co-working place) dan fitur-fitur menarik lainnya,  co-working place keren  ini adalah Bandung Digital Valley atau yang sering disingkat BDV . C o-working place  Bandung Digital Valley ini  merupakan bagian dari Telkom , mulai aktif digunakan dari sekitar tahun 2012 lalu .  Tempat ini biasanya menjadi tempat favorit bagi para pengiat startup, freelancer, dan mahasiswa . Gedung BDV Gedung BDV Gedung BDV Co-working space Bandung Digital Valley ini sendiri berlokasi di Menara Bandung Digital Valley, Jl. Gegerkalong Hilir No.47, Sukarasa, Sukasari, Kota Bandung, Jawa Barat, detailnya bisa dilihat di Google map berikut. Pemandangan jalan setelah pintu satpam. Free Co-working Space Membership Untuk mulai menggunakan fasilitas co-working space ini secara gratis maka yang pe...

Membuat Authentikasi Berbasis Token pada Spring Boot dengan Spring Security dan JWT

Setelah beberapa kali mencari tutorial tentang otentikasi aplikasi web Spring Boot dengan menggunakan JWT yang mudah dipahami akhirnya saya menemukan artikel berbahasa Inggris tapi sangat mudah dipahami  dan diikuti, artikel tersbut berada disini , dengan judul " Spring Boot Token based Authentication with Spring Security & JWT ". Untuk memudahkan orang-orang yang terbiasa membaca artikel dalam bahasa indonesia (termasuk saya sendiri), artikel ini saya buat dan susun ulang (artikel aslinya tidak tertulis dengan runtut dan dapat membuat pemula bingung dengan berbagai error yang muncul) supaya lebih mudah untuk diikuti dan dapat di gunakan bersama. Applikasi yang akan kita buat adalah aplikasi web yang setiap endpoint-nya hanya bisa di akses oleh role tertentu. 1. Tools Yang Diperlukan IntelliJ Idea text editor. Spring Assistant Plugin. Postman. PostgreSQL + DBeaver. Min Java 8 Spring Boot 2.1.8 (dengan Spring Security, Spring Web, Spring Data JPA). jjwt 0.9.1. Maven 3.6.1....