Trabalhando com Kafka em Swift (iOS/macOS): bibliotecas, clientes e exemplos
\n\nApache Kafka é uma plataforma distribuída de streaming de dados, amplamente utilizada para construir arquiteturas orientadas a eventos, coletar logs, processar análises e trabalhar com microsserviços. No ecossistema Swift (iOS/macOS), o Kafka não é uma tecnologia nativa, mas existem várias bibliotecas maduras que permitem integrar aplicativos Swift com brokers Kafka. Neste artigo, exploraremos as principais ferramentas, sua instalação e criaremos um produtor e um consumidor simples em Swift.
\n\nPor que usar Kafka em um aplicativo Swift?
\nEmbora o Kafka seja mais frequentemente associado ao backend de servidores, aplicativos móveis e desktop em Swift podem usar Kafka para:
\n- \n
- Receber notificações push em tempo real via WebSocket + Kafka; \n
- Enviar eventos de comportamento do usuário para um servidor de análise; \n
- Sincronizar dados entre vários dispositivos em tempo real; \n
- Registrar logs no lado do cliente para envio posterior a um sistema centralizado. \n
Principais bibliotecas para trabalhar com Kafka em Swift
\nAtualmente, existem três abordagens principais para integrar Kafka em projetos Swift:
\n\n1. Confluent Swift Client (recomendado)
\nConfluent Swift Client é um wrapper oficial sobre librdkafka da empresa Confluent. A biblioteca suporta um conjunto completo de recursos: produtores, consumidores, administração de tópicos, SSL, autenticação SASL. Funciona em iOS e macOS.
Instalação 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\nExemplo de Produtor (Producer) em Swift
\nVamos criar um produtor simples que envia uma string para o tópico 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 = "Olá do 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("Erro ao enviar: \\(error)")\n } else {\n print("Mensagem enviada para a partição \\(deliveryReport?.partition ?? -1)")\n }\n}\n\nproducer.flush()\n\nExemplo de Consumidor (Consumer) em 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) ?? "falha ao decodificar"\n print("Recebido: \\(message)")\n }\n }\n}\n\n2. KafkaSwift (alternativa leve)
\nKafkaSwift é uma biblioteca minimalista escrita em Swift puro, sem dependências de bibliotecas C. Adequada para cenários simples, mas não suporta recursos avançados (SSL, SASL, particionamento).
\nInstalação: via CocoaPods: pod 'KafkaSwift'.
Exemplo de envio:
\nimport KafkaSwift\n\nlet kafka = try Kafka(host: "localhost", port: 9092)\ntry kafka.send(message: "Mensagem de teste", topic: "test-topic")\n\n3. Perfect-Kafka (para Swift no servidor)
\nPerfect-Kafka — parte do framework Perfect, voltada para aplicações Swift no servidor (macOS, Linux). Is
Também na biblioteca
Testes em Kotlin: frameworks e ferramentas para código de qualidade
Frameworks CLI para Kotlin: criação de aplicações de console
Processamento e edição de imagens em TypeScript: Jimp, Sharp, Canvas
Trabalho com S3 e armazenamentos em nuvem em C# (.NET): biblioteca AWS SDK
Análise de HTML em Java: melhores bibliotecas e exemplos de código