Travailler avec Kafka en Swift (iOS/macOS) : bibliothèques, clients et exemples
\n\nApache Kafka est une plateforme distribuée de streaming de données, largement utilisée pour construire des architectures événementielles, collecter des logs, traiter des analyses et travailler avec des microservices. Dans l'écosystème Swift (iOS/macOS), Kafka n'est pas une technologie native, mais il existe plusieurs bibliothèques matures qui permettent d'intégrer des applications Swift avec des courtiers Kafka. Dans cet article, nous allons passer en revue les principaux outils, leur installation et écrire un simple producteur et consommateur en Swift.
\n\nPourquoi Kafka dans une application Swift ?
\nBien que Kafka soit le plus souvent associé au backend serveur, les applications mobiles et de bureau en Swift peuvent utiliser Kafka pour :
\n- \n
- Recevoir des notifications push en temps réel via WebSocket + Kafka ; \n
- Envoyer des événements de comportement utilisateur à un serveur d'analyse ; \n
- Synchroniser des données entre plusieurs appareils en temps réel ; \n
- Journalisation côté client avec envoi ultérieur vers un système centralisé. \n
Principales bibliothèques pour travailler avec Kafka en Swift
\nActuellement, il existe trois approches principales pour intégrer Kafka dans des projets Swift :
\n\n1. Confluent Swift Client (recommandé)
\nConfluent Swift Client est un wrapper officiel autour de librdkafka de la société Confluent. La bibliothèque prend en charge un ensemble complet de fonctionnalités : producteurs, consommateurs, administration de sujets, SSL, authentification SASL. Fonctionne sur iOS et macOS.
Installation via Swift Package Manager :
\n// Package.swift\ndependencies: [\n .package(url: "https://github.com/confluentinc/confluent-kafka-swift.git", from: "0.1.0")\n]\n\nExemple de producteur (Producer) en Swift
\nCréons un producteur simple qui envoie une chaîne de caractères vers le sujet test-topic :
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 = "Bonjour depuis 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("Erreur d'envoi : \\(error)")\n } else {\n print("Message envoyé à la partition \\(deliveryReport?.partition ?? -1)")\n }\n}\n\nproducer.flush()\n\nExemple de consommateur (Consumer) en Swift
\nimport 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) ?? "impossible de décoder"\n print("Reçu : \\(message)")\n }\n }\n}\n\n2. KafkaSwift (alternative légère)
\nKafkaSwift est une bibliothèque minimaliste écrite en Swift pur sans dépendances aux bibliothèques C. Elle convient pour des scénarios simples, mais ne prend pas en charge les fonctionnalités avancées (SSL, SASL, partitionnement).
\nInstallation : via CocoaPods : pod 'KafkaSwift'.
Exemple d'envoi :
\nimport KafkaSwift\n\nlet kafka = try Kafka(host: "localhost", port: 9092)\ntry kafka.send(message: "Message de test", topic: "test-topic")\n\n3. Perfect-Kafka (pour Swift côté serveur)
\nPerfect-Kafka fait partie du framework Perfect, orienté vers les applications serveur en Swift (macOS, Linux). Is
Aussi dans la bibliothèque
Travailler avec Excel en C++ : bibliothèques et outils pour lire et écrire
NodaTime pour C# (.NET) : guide complet avec exemples
Traitement JSON en PHP : fonctions, exemples et meilleures pratiques
Bibliothèques WebSocket Swift : Starscream et URLSessionWebSocketTask