Swift में Kafka (iOS/macOS): लाइब्रेरी, क्लाइंट और उदाहरण
Apache Kafka एक डिस्ट्रीब्यूटेड डेटा स्ट्रीमिंग प्लेटफॉर्म है, जिसका उपयोग event-driven आर्किटेक्चर, लॉग कलेक्शन, एनालिटिक्स प्रोसेसिंग और माइक्रोसर्विसेज के लिए व्यापक रूप से किया जाता है। Swift (iOS/macOS) इकोसिस्टम में Kafka एक नेटिव तकनीक नहीं है, लेकिन कई परिपक्व लाइब्रेरी मौजूद हैं जो Swift ऐप्स को Kafka ब्रोकर्स से जोड़ने की अनुमति देती हैं। इस लेख में, हम मुख्य टूल्स, उनकी इंस्टॉलेशन प्रक्रिया और Swift में एक सरल प्रोड्यूसर और कंज्यूमर बनाएंगे।
Swift ऐप में Kafka की आवश्यकता क्यों?
हालांकि Kafka को अक्सर सर्वर-साइड बैकएंड से जोड़ा जाता है, Swift पर मोबाइल और डेस्कटॉप ऐप्स Kafka का उपयोग निम्नलिखित के लिए कर सकते हैं:
- WebSocket + Kafka के माध्यम से रीयल-टाइम push नोटिफिकेशन प्राप्त करना;
- एनालिटिक्स सर्वर पर उपयोगकर्ता व्यवहार इवेंट भेजना;
- कई डिवाइसों के बीच रीयल-टाइम डेटा सिंक्रोनाइज़ेशन;
- क्लाइंट-साइड लॉगिंग और फिर सेंट्रलाइज़्ड सिस्टम में भेजना।
Swift में Kafka के लिए मुख्य लाइब्रेरी
वर्तमान में, Swift प्रोजेक्ट्स में Kafka को एकीकृत करने के तीन मुख्य तरीके हैं:
1. Confluent Swift Client (अनुशंसित)
Confluent Swift Client Confluent कंपनी द्वारा librdkafka पर एक आधिकारिक रैपर है। यह लाइब्रेरी पूर्ण सुविधाओं का समर्थन करती है: प्रोड्यूसर, कंज्यूमर, टॉपिक एडमिनिस्ट्रेशन, SSL, SASL ऑथेंटिकेशन। यह iOS और macOS दोनों पर काम करती है।
Swift Package Manager के माध्यम से इंस्टॉलेशन:
// Package.swift
dependencies: [
.package(url: "https://github.com/confluentinc/confluent-kafka-swift.git", from: "0.1.0")
]
Swift में प्रोड्यूसर (Producer) का उदाहरण
आइए एक सरल प्रोड्यूसर बनाएं जो test-topic टॉपिक पर एक स्ट्रिंग भेजता है:
import ConfluentKafka
let config = KafkaConfig()
config["bootstrap.servers"] = "localhost:9092"
config["client.id"] = "swift-producer"
let producer = try KafkaProducer(config: config)
let message = "Swift से नमस्ते!"
let record = KafkaProducerRecord(topic: "test-topic", value: message.data(using: .utf8)!)
try producer.send(record: record) { error, deliveryReport in
if let error = error {
print("भेजने में त्रुटि: \(error)")
} else {
print("संदेश partition \(deliveryReport?.partition ?? -1) पर भेजा गया")
}
}
producer.flush()
Swift में कंज्यूमर (Consumer) का उदाहरण
import ConfluentKafka
let config = KafkaConfig()
config["bootstrap.servers"] = "localhost:9092"
config["group.id"] = "swift-consumer-group"
config["auto.offset.reset"] = "earliest"
let consumer = try KafkaConsumer(config: config)
try consumer.subscribe(topics: ["test-topic"])
while true {
let records = try consumer.poll(timeout: 1.0)
for record in records {
if let value = record.value {
let message = String(data: value, encoding: .utf8) ?? "डिकोड नहीं कर सका"
print("प्राप्त: \(message)")
}
}
}
2. KafkaSwift (हल्का विकल्प)
KafkaSwift एक न्यूनतम लाइब्रेरी है जो पूरी तरह से Swift में C-लाइब्रेरी पर निर्भरता के बिना लिखी गई है। यह सरल उपयोग के मामलों के लिए उपयुक्त है, लेकिन उन्नत सुविधाओं (SSL, SASL, पार्टीशनिंग) का समर्थन नहीं करती है।
इंस्टॉलेशन: CocoaPods के माध्यम से: pod 'KafkaSwift'।
भेजने का उदाहरण:
import KafkaSwift
let kafka = try Kafka(host: "localhost", port: 9092)
try kafka.send(message: "परीक्षण संदेश", topic: "test-topic")
3. Perfect-Kafka (सर्वर-साइड Swift के लिए)
Perfect-Kafka Perfect फ्रेमवर्क का हिस्सा है, जो Swift (macOS, Linux) पर सर्वर ऐप्स के लिए डिज़ाइन किया गया है। यह librdkafka का उपयोग करता है और एक एसिंक्रोनस API प्रदान करता है।