在 Swift (iOS/macOS) 中使用 Kafka:库、客户端与示例
Apache Kafka 是一个分布式流数据处理平台,广泛用于构建事件驱动架构、日志收集、分析处理以及与微服务协同工作。在 Swift (iOS/macOS) 生态系统中,Kafka 并非原生技术,但存在几个成熟的库,允许将 Swift 应用程序与 Kafka 代理集成。在本文中,我们将介绍主要工具、它们的安装方法,并用 Swift 编写一个简单的生产者和消费者。
为什么 Swift 应用需要 Kafka?
尽管 Kafka 通常与服务器端后端相关联,但基于 Swift 的移动和桌面应用也可以使用 Kafka 来实现:
- 通过 WebSocket + Kafka 实时获取推送通知;
- 将用户行为事件发送到分析服务器;
- 在多个设备之间实时同步数据;
- 客户端日志记录,并随后发送到集中式系统。
Swift 中用于 Kafka 的主要库
目前,将 Kafka 集成到 Swift 项目中有三种主要方法:
1. Confluent Swift Client(推荐)
Confluent Swift Client 是 Confluent 公司对 librdkafka 的官方封装。该库支持全套功能:生产者、消费者、主题管理、SSL、SASL 认证。可在 iOS 和 macOS 上运行。
通过 Swift Package Manager 安装:
// Package.swiftdependencies: [ .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("消息已发送到分区 \\(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)。