Trabalhando com Kafka em Swift (iOS/macOS): bibliotecas, clientes e exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com Kafka em Swift (iOS/macOS): bibliotecas, clientes e exemplos

\n\n

Apache 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\n

Por que usar Kafka em um aplicativo Swift?

\n

Embora 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
\n\n

Principais bibliotecas para trabalhar com Kafka em Swift

\n

Atualmente, existem três abordagens principais para integrar Kafka em projetos Swift:

\n\n

1. Confluent Swift Client (recomendado)

\n

Confluent 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.

\n

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\n

Exemplo de Produtor (Producer) em Swift

\n

Vamos criar um produtor simples que envia uma string para o tópico 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 = "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\n

Exemplo de Consumidor (Consumer) em 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) ?? "falha ao decodificar"\n            print("Recebido: \\(message)")\n        }\n    }\n}
\n\n

2. KafkaSwift (alternativa leve)

\n

KafkaSwift é 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).

\n

Instalação: via CocoaPods: pod 'KafkaSwift'.

\n

Exemplo de envio:

\n
import KafkaSwift\n\nlet kafka = try Kafka(host: "localhost", port: 9092)\ntry kafka.send(message: "Mensagem de teste", topic: "test-topic")
\n\n

3. Perfect-Kafka (para Swift no servidor)

\n

Perfect-Kafka — parte do framework Perfect, voltada para aplicações Swift no servidor (macOS, Linux). Is

Recommendations