العمل مع Kafka في Kotlin: المكتبات والأمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع Kafka في Kotlin: نظرة عامة على المكتبات وأمثلة عملية



Apache Kafka هي منصة موزعة لمعالجة البيانات المتدفقة، والتي أصبحت المعيار الفعلي في بنية الخدمات المصغرة. Kotlin، كونه لغة JVM حديثة، متوافق تمامًا مع نظام Java البيئي، مما يسمح باستخدام جميع المكتبات الشائعة لـ Kafka. في هذه المقالة، سننظر في ثلاثة مناهج رئيسية: عميل Java الرسمي لـ Kafka، وSpring Kafka، والمكتبة خفيفة الوزن Kafkakit. جميع الأمثلة مكتوبة بلغة Kotlin.



1. عميل Kafka الرسمي (عميل Java)



مكتبة kafka-clients من Apache هي الأساس الذي تُبنى عليه جميع التغليفات الأخرى. توفر واجهة برمجة تطبيقات منخفضة المستوى للمنتجين والمستهلكين. بالنسبة لـ Kotlin، يكفي إضافة التبعية في build.gradle.kts:



implementation("org.apache.kafka:kafka-clients:3.6.0")


مثال على المنتج بلغة Kotlin



import org.apache.kafka.clients.producer.KafkaProducerimport org.apache.kafka.clients.producer.ProducerRecordimport java.util.Properties

fun createProducer(): KafkaProducer<String, String> { val props = Properties().apply { put("bootstrap.servers", "localhost:9092") put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer") put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer") } return KafkaProducer(props)}

fun main() { val producer = createProducer() val record = ProducerRecord("my-topic", "key1", "Hello from Kotlin!") producer.send(record) { metadata, exception -> if (exception != null) { println("خطأ في الإرسال: ${exception.message}") } else { println("تم الإرسال إلى القسم ${metadata.partition()} الإزاحة ${metadata.offset()}") } } producer.close()}


مثال على المستهلك بلغة Kotlin



import org.apache.kafka.clients.consumer.ConsumerRecordsimport org.apache.kafka.clients.consumer.KafkaConsumerimport java.time.Durationimport java.util.Properties

fun createConsumer(): KafkaConsumer<String, String> { val props = Properties().apply { put("bootstrap.servers", "localhost:9092") put("group.id", "kotlin-group") put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer") put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer") put("auto.offset.reset", "earliest") } return KafkaConsumer(props)}

fun main() { val consumer = createConsumer() consumer.subscribe(listOf("my-topic"))

while (true) { val records: ConsumerRecords<String, String> = consumer.poll(Duration.ofMillis(100)) records.forEach { record -> println("تم الاستلام: key=${record.key()}, value=${record.value()}, offset=${record.offset()}") } }}


2. Spring Kafka مع Kotlin



إذا كنت تستخدم Spring Boot، فإن Spring Kafka هو الخيار الطبيعي. يوفر نهجًا تصريحيًا من خلال التعليقات التوضيحية والتكوين التلقائي. أضف التبعية:



implementation("org.springframework.kafka:spring-kafka")


التكوين في application.yml



spring:  kafka:    bootstrap-servers: localhost:9092    producer:      key-serializer: org.apache.kafka.common.serialization.StringSerializer      value-serializer: org.apache.kafka.common.serialization.StringSerializer    consumer:      group-id: spring-kotlin-group      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer      auto-offset-reset: earliest


المنتج باستخدام KafkaTemplate



import org.springfram                    

توصيات