Konfigurasikan dan Gunakan Apache Kafka dengan Spring Boot
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:
- 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.
- Buat produser Kafka: Untuk mengirim pesan ke Kafka; Anda dapat menggunakan template yang disediakan oleh Spring Kafka. Berikut adalah contoh produser sederhana:
- 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.
- 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.
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);
}
}
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!