Swift (iOS/macOS) में Apache Kafka के साथ कार्य: लाइब्रेरीज़ और उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift (iOS/macOS) में Kafka के साथ कार्य



Apache Kafka एक वितरित डेटा स्ट्रीमिंग प्लेटफ़ॉर्म है, जिसका व्यापक रूप से माइक्रोसर्विस आर्किटेक्चर, रीयल-टाइम एनालिटिक्स और संदेश विनिमय प्रणालियों में उपयोग किया जाता है। iOS/macOS डेवलपर्स के लिए, Kafka एकीकरण की आवश्यकता उन अनुप्रयोगों को बनाते समय हो सकती है जो रीयल-टाइम में घटनाओं को संसाधित करते हैं, IoT उपकरणों के साथ काम करते हैं, या Java/Go पर बैकएंड के साथ इंटरैक्ट करते हैं। इस लेख में, हम Swift में Kafka के साथ काम करने के लिए मुख्य लाइब्रेरीज़, उन्हें जोड़ने के तरीके और कोड उदाहरण देखेंगे।



मोबाइल/डेस्कटॉप अनुप्रयोगों में Kafka की आवश्यकता क्यों?

हालांकि Kafka अक्सर सर्वर-साइड से जुड़ा होता है, ऐसे परिदृश्य हैं जहां क्लाइंट एप्लिकेशन सीधे ब्रोकरों के साथ इंटरैक्ट करते हैं:

  • लॉगिंग और एनालिटिक्स: सर्वर पर एप्लिकेशन उपयोग की घटनाओं को भेजना।
  • चैट और सूचनाएं: WebSocket के बजाय Kafka के माध्यम से रीयल-टाइम में संदेश प्राप्त करना।
  • डेटा सिंक्रोनाइज़ेशन: वितरित प्रणाली में परिवर्तन होने पर स्थानीय डेटा को अपडेट करना।
  • IoT और सेंसर: Kafka के माध्यम से डिवाइस से सर्वर पर डेटा स्थानांतरित करना।


Swift के लिए मुख्य लाइब्रेरीज़

वर्तमान में, Swift में Kafka के साथ काम करने के लिए कई परिपक्व समाधान मौजूद हैं:

  • SwiftLiteKafka — librdkafka के लिए एक हल्का C रैपर, iOS और macOS का समर्थन करता है।
  • Perfect-Kafka — Perfect इकोसिस्टम का हिस्सा, सर्वर-साइड Swift (macOS/Linux) के लिए लक्षित है, लेकिन क्लाइंट के लिए अनुकूलित किया जा सकता है।
  • KafkaSwift — Swift में शुद्ध कार्यान्वयन (बिना C-निर्भरता के), लेकिन सीमित प्रदर्शन के साथ।

सबसे स्थिर और उच्च-प्रदर्शन SwiftLiteKafka माना जाता है, इसलिए आगे हम इसी पर विचार करेंगे।



SwiftLiteKafka की स्थापना

लाइब्रेरी Swift Package Manager के माध्यम से वितरित की जाती है। Package.swift या Xcode के माध्यम से निर्भरता जोड़ें:

// Package.swiftdependencies: [    .package(url: "https://github.com/swift-server/swift-lite-kafka.git", from: "1.0.0")]

iOS के लिए, C-लाइब्रेरी librdkafka के समर्थन को भी सक्षम करना आवश्यक है — यह स्वचालित रूप से एक निर्भरता के रूप में खिंच जाती है।



मूल उदाहरण: Producer (संदेश भेजना)

आइए एक सरल प्रोड्यूसर बनाएं जो "test-topic" टॉपिक पर एक स्ट्रिंग भेजता है:

import SwiftLiteKafka

let config = KafkaConfig()config.bootstrapServers = "localhost:9092"

let producer = try KafkaProducer(config: config)defer { producer.close() }

let message = KafkaMessage( value: "Swift से नमस्ते!".data(using: .utf8)!, key: "key1".data(using: .utf8))

try producer.send(message, to: "test-topic")print("संदेश भेज दिया गया")

ध्यान दें: send एक सिंक्रोनस कॉल है। एसिंक्रोनस भेजने के लिए, कॉलबैक या async/await (Swift 5.5+) का उपयोग करें।



मूल उदाहरण: Consumer (संदेश पढ़ना)

टॉपिक की सदस्यता लेने और लूप में संदेश पढ़ने का उदाहरण:

import SwiftLiteKafka

let config = KafkaConfig()config.bootstrapServers = "localhost:9092"config.groupId = "swift-consumer-group"

let consumer = try KafkaConsumer(config: config)consumer.subscribe(topics: ["test-topic"])

while true { let message = try consumer.poll(timeout: .seconds(1)) if let msg = message { let value = String(data: msg.value, encoding: .utf8) ?? "nil" print("प्राप्त: \\(value)") }}

वास्तविक अनुप्रयोगों के लिए, मुख्य थ्रेड को ब्लॉक न करने के लिए async/await या Combine का उपयोग करने की अनुशंसा की जाती है।



उन्नत सुविधाएँ

  • SSL/TLS: KafkaConfig के माध्यम से एन्क्रिप्शन सेटअप (गुण securityProtocol, sslCACertificate)

अनुशंसाएँ