Sunday, March 18, 2018

Java Kafka Streammer

Kafka adalah platform streamer yang membuat jaringan pipeline data secara realtime yang mempunyai kemampuan publish dan subcribe record data atau antrian pesan. Platform tersebut bertindak sebagai platform terpadu untuk menangani semua umpan data realtime. Umumnya kafka digunakan untuk membangun sistem streamer realtime antara data sistem dan aplikasi ataupun aplikasi streamming yang bereaksi terhadap arus data.

Installasi dijelaskan cukup lengkap di http://kafka.apache.org/quickstart termasuk cara menjalankan server zookeepers dan server kafkanya sendiri. Untuk konfigurasi bisa dilihat di folder config yang editable. Selanjutnya kita harus membuat topic yang digunakan untuk menampung record baik yang di produce ataupun di consume.

Kafka mendukung bahasa pemprograman java untuk mengakses server dengan konfigurasi sederhana. Langkah selanjutnya adalah setting di java(maven project) dengan menambahkan dependency kafka client, tambahkan code dibawah pada file pom:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>1.0.1</version>
</dependency>

Setelah itu tinggal kita atur konfigurasi untuk sent dan receive di service java. Code untuk mem-produce pesan nya kurang lebih seperti dibawah:

Ketika service sent di hit(via postman, controller code dibawah), akan membaca parameter loop, dan jika kita lihat consume di topic1 akan terlihat seperti gambar 1. Pesan tersebut sudah ter-streamming di server kafka, dan dapat di consume oleh banyak client dengan menggunakan topic yang sama. Untuk konfigurasi karena kafka saya jalankan di local, maka pada producer configuration menggunakan ip local 127.0.0.1. jika kafka dijalankan di server, maka tinggal diganti hostnya. Dalam sekali kirim kafka hanya memakan waktu 10ms secara asynchronous.

 Gambar 1. Output consume topic1
 
Untuk yang consume streammer dari kafka, codenya seperti dibawah. Konfigurasi server sama-sama menggunakan server localhost, dan yang penting diketahui adalah konfigurasi group id si consumer yang dapat dilihat di consumer.properties harus sama dengan yang kita set. Consumer.poll akan “fetch” data sebanyak 300x dari si producer.




ketika kita hit recieve service, dan memasukan pesan via terminal kafka, pesan tersebut akan di-return seperti gambar 2.
 Gambar 2. Contoh konsume dari streammer kafka

Untuk code di controller seperti di bawah:


Nah, cukup jelas bukan? Aplikasi dari streaming kafka ini cukup luas, seperti untuk analisis data realtime dan membutuhkan decision yang harus ditentukan saat itu juga, maka dengan service di java dapat menjadi solusi permasalahan tersebut. Selain service di java, streamer kafka juga dapat menerima dan mengirim data ke streamer lain seperti OSA(Oracle Streammer Analytic).
Happy Sunday :)

No comments:

Post a Comment