Konfigurasikan dan Gunakan Apache Kafka dengan Spring Boot

May 13 2023
Kafka dengan sepatu boot musim semi
Pendahuluan Apache Kafka adalah platform streaming terdistribusi sumber terbuka yang menangani streaming data real-time berskala besar, throughput tinggi, dan toleran terhadap kesalahan. Sistem ini didasarkan pada model terbitkan-berlangganan di mana produsen menerbitkan pesan ke topik, dan konsumen berlangganan ke topik tersebut untuk mengkonsumsi pesan.
Sumber gambar

Perkenalan

Apache Kafka adalah platform streaming terdistribusi sumber terbuka yang menangani streaming data real-time berskala besar, throughput tinggi, dan toleran terhadap kesalahan. Sistem ini didasarkan pada model terbitkan-berlangganan di mana produsen menerbitkan pesan ke topik, dan konsumen berlangganan ke topik tersebut untuk mengkonsumsi pesan. Kasus penggunaan Apache Kafka terlihat dalam skenario seperti analitik real-time, arsitektur berbasis peristiwa, agregasi log, sistem perpesanan, dan membangun jaringan pipa data yang dapat diskalakan.

Penggunaan dokumen ini:

Anda dapat menggunakan dokumen ini untuk mengonfigurasi dan menggunakan Apache Kafka untuk membuat dan menggunakan pesan (konten JSON) di Aplikasi boot Spring Anda.

Prasyarat

Anda memerlukan pemahaman yang baik tentang Java, spring-boot, Apache Kafka, maven atau Gradle sebelum membaca dokumen ini. Jika tidak, Anda akan disarankan untuk memeriksa dokumentasi dan panduan resmi mereka.

Instalasi

Sebelum membuat pesan ke topik Kafka, Anda harus menyelesaikan beberapa langkah untuk mengonfigurasi dependensi yang diperlukan di pom.xml(Maven) atau build.gradle(proyek Gradle) Anda

Untuk Maven:

For Gradle 
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.kafka</groupId>
   <artifactId>spring-kafka</artifactId>
</dependency>

implementation ‘org.springframework.boot:spring-boot-starter’
implementation ‘org.springframework.kafka:spring-kafka’

Konfigurasi

Mengonfigurasi properti Kafka ke file Application.properties, Anda juga dapat memiliki properti khusus. Tentukan server bootstrap server Kafka dan properti konfigurasi tambahan apa pun yang Anda perlukan, seperti ID grup konsumen.

Aplikasi.properti

spring.kafka.bootstrap-servers=<kafka-bootstrap-servers> 
spring.kafka.consumer.group-id=<consumer-group-id>
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.app.topic=<topic-name>


spring.kafka.bootstrap-servers=localhost:9092 
spring.kafka.consumer.group-id=group_category
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.app.topic=my-topic

Produser Kafka adalah komponen yang mengirim pesan ke topik Kafka. Ini menerbitkan data ke Kafka, yang kemudian dapat dikonsumsi oleh satu atau lebih konsumen Kafka.

Untuk membuat produser Kafka, Anda perlu melakukan langkah-langkah berikut:

  1. Konfigurasikan properti produsen Kafka: Siapkan properti konfigurasi yang diperlukan untuk produsen Kafka, seperti server bootstrap (alamat broker Kafka) dan pengaturan serialisasi. Ini sudah kami lakukan pada langkah terakhir.
  2. Buat produser Kafka: Untuk mengirim pesan ke Kafka; Anda dapat menggunakan template yang disediakan oleh Spring Kafka. Berikut adalah contoh produser sederhana:
  3. import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.kafka.core.KafkaTemplate;
    import org.springframework.stereotype.Service;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    @Component
    public class KafkaEventProducer {
     
     private static final Logger logger = LoggerFactory.getLogger(KafkaEventProducer.class);
     
     @Autowired
     private KafkaTemplate<String, String> kafkaTemplate;
     
     public void sendMessage(String topic, String message) {
       logger.info("Producing message [{}]", message);
       kafkaTemplate.send(topic, message);
     }
    }
    

  4. Konfigurasikan properti produser Kafka: Konfigurasikan properti Kafka di file application.properties Anda. Tentukan server bootstrap server Kafka dan properti konfigurasi tambahan apa pun yang Anda perlukan untuk konsumen.
  5. Buat pendengar konsumen Kafka: Terapkan metode dalam aplikasi Anda yang akan dipanggil setiap kali pesan baru diterima dari Kafka. Gunakan anotasi kafkaListener yang disediakan oleh Spring Kafka.
  6. import org.springframework.kafka.annotation.KafkaListener;
    import org.springframework.stereotype.Component;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    @Component
    public class KafkaEventConsumer {
    
    private static final Logger logger = LoggerFactory.getLogger(KafkaEventConsumer.class);
    
    @KafkaListener(topics = “<topic-name>”, groupId = “<consumer-group-id>”)
     public void consumeMessage(String message) {
      //Use log
     log.info("Consumed message [{}]", message);
     }
    }
    
    

    @KafkaListener(topics = “${spring.kafka.app.topic}”,groupId= “${spring.kafka.consumer.group-id}”)
    

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainApplication {

 @Autowired
 private KafkaEventProducer kafkaEventProducer;

 public static void main(String[] args) {
   SpringApplication.run(MainApplication.class, args);
 }
 
 public void YourMethod() {
 // Send a message using the Kafka producer
 kafkaEventProducer.sendMessage(“<topic-name>”, “Oh Kafka Boy How'z Everything?”);
 }
}

Kesimpulan

Kesimpulannya, Spring Boot memberikan dukungan luar biasa untuk mengintegrasikan Apache Kafka ke dalam aplikasi Anda. Dengan dukungan Kafka Spring Boot, Anda dapat dengan mudah membuat produsen dan konsumen Kafka, mengonfigurasi properti Kafka, dan menangani pemrosesan pesan.
Integrasi Spring Boot dengan Kafka menyederhanakan pengembangan aplikasi berbasis Kafka, memberikan tingkat abstraksi yang lebih tinggi dan mengurangi jumlah kode boilerplate yang diperlukan.

Dan sebelum menjalankan kode, pastikan server Kafka sudah berjalan dan topik sudah dibuat.

Catatan: Ingatlah untuk merujuk ke dokumentasi resmi Spring Kafka dan jelajahi sampel Spring Kafka untuk lebih memahami berbagai fitur dan opsi yang tersedia untuk integrasi Kafka di Spring Boot.

Terima kasih!