العمل مع Kafka في Swift (iOS/macOS): المكتبات، العملاء والأمثلة

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

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

ابدأ الدورة

العمل مع Kafka في Swift (iOS/macOS): المكتبات، العملاء والأمثلة

\n\n

Apache Kafka هي منصة موزعة لنقل البيانات المتدفقة، تُستخدم على نطاق واسع لبناء بنى تعتمد على الأحداث (event-driven architectures)، وجمع السجلات، ومعالجة التحليلات، والعمل مع الخدمات المصغرة. في نظام Swift البيئي (iOS/macOS)، لا تعتبر Kafka تقنية أصلية، ولكن توجد عدة مكتبات ناضجة تسمح بدمج تطبيقات Swift مع وسطاء Kafka. في هذه المقالة، سنستعرض الأدوات الرئيسية، وطريقة تثبيتها، ونكتب منتجًا ومستهلكًا بسيطين بلغة Swift.

\n\n

لماذا نحتاج Kafka في تطبيق Swift؟

\n

على الرغم من أن Kafka غالبًا ما ترتبط بالخادم الخلفي، إلا أن تطبيقات الهواتف المحمولة وسطح المكتب المكتوبة بلغة Swift يمكنها استخدام Kafka من أجل:

\n
    \n
  • تلقي الإشعارات الفورية في الوقت الحقيقي عبر WebSocket + Kafka؛
  • \n
  • إرسال أحداث سلوك المستخدم إلى خادم التحليلات؛
  • \n
  • مزامنة البيانات بين أجهزة متعددة في الوقت الحقيقي؛
  • تسجيل السجلات من جانب العميل مع إرسالها لاحقًا إلى نظام مركزي.
\n\n

المكتبات الرئيسية للعمل مع Kafka في Swift

\n

حاليًا، هناك ثلاثة طرق رئيسية لدمج Kafka في مشاريع Swift:

\n\n

1. عميل Confluent Swift (موصى به)

\n

عميل Confluent Swift هو غلاف رسمي حول librdkafka من شركة Confluent. تدعم المكتبة مجموعة كاملة من الوظائف: المنتجون، المستهلكون، إدارة المواضيع، SSL، مصادقة SASL. تعمل على iOS و macOS.

\n

التثبيت عبر Swift Package Manager:

\n
// Package.swift\ndependencies: [\n    .package(url: "https://github.com/confluentinc/confluent-kafka-swift.git", from: "0.1.0")\n]
\n\n

مثال على المنتج (Producer) بلغة Swift

\n

لننشئ منتجًا بسيطًا يرسل سلسلة نصية إلى الموضوع test-topic:

\n
import ConfluentKafka\n\nlet config = KafkaConfig()\nconfig["bootstrap.servers"] = "localhost:9092"\nconfig["client.id"] = "swift-producer"\n\nlet producer = try KafkaProducer(config: config)\n\nlet message = "مرحبًا من Swift!"\nlet record = KafkaProducerRecord(topic: "test-topic", value: message.data(using: .utf8)!)\n\ntry producer.send(record: record) { error, deliveryReport in\n    if let error = error {\n        print("خطأ في الإرسال: \\(error)")\n    } else {\n        print("تم إرسال الرسالة إلى القسم \\(deliveryReport?.partition ?? -1)")\n    }\n}\n\nproducer.flush()
\n\n

مثال على المستهلك (Consumer) بلغة Swift

\n
import ConfluentKafka\n\nlet config = KafkaConfig()\nconfig["bootstrap.servers"] = "localhost:9092"\nconfig["group.id"] = "swift-consumer-group"\nconfig["auto.offset.reset"] = "earliest"\n\nlet consumer = try KafkaConsumer(config: config)\ntry consumer.subscribe(topics: ["test-topic"])\n\nwhile true {\n    let records = try consumer.poll(timeout: 1.0)\n    for record in records {\n        if let value = record.value {\n            let message = String(data: value, encoding: .utf8) ?? "فشل فك الترميز"\n            print("تم الاستلام: \\(message)")\n        }\n    }\n}
\n\n

2. KafkaSwift (بديل خفيف الوزن)

\n

KafkaSwift هي مكتبة بسيطة مكتوبة بلغة Swift نقية بدون تبعيات لمكتبات C. مناسبة للسيناريوهات البسيطة، ولكنها لا تدعم الميزات المتقدمة (SSL، SASL، التقسيم).

\n

التثبيت: عبر CocoaPods: pod 'KafkaSwift'.

\n

مثال على الإرسال:

\n
import KafkaSwift\n\nlet kafka = try Kafka(host: "localhost", port: 9092)\ntry kafka.send(message: "رسالة اختبارية", topic: "test-topic")
\n\n

3. Perfect-Kafka (لـ Swift من جانب الخادم)

\n

Perfect-Kafka هي جزء من إطار عمل Perfect، موجهة لتطبيقات الخادم بلغة Swift (macOS، Linux). إص

توصيات