24 个版本

0.10.0 2023年9月24日
0.9.0 2022年5月2日
0.8.0 2019年9月10日
0.7.0 2017年10月17日
0.1.6 2015年5月25日

#73 in 异步

Download history 2614/week @ 2024-03-31 3052/week @ 2024-04-07 2110/week @ 2024-04-14 2000/week @ 2024-04-21 1929/week @ 2024-04-28 2174/week @ 2024-05-05 2595/week @ 2024-05-12 2847/week @ 2024-05-19 2579/week @ 2024-05-26 3948/week @ 2024-06-02 3576/week @ 2024-06-09 2508/week @ 2024-06-16 3339/week @ 2024-06-23 3176/week @ 2024-06-30 3153/week @ 2024-07-07 3099/week @ 2024-07-14

12,978 每月下载量
用于 21 个 Crates(17 个直接使用)

MIT/Apache

290KB
6K SLoC

Kafka Rust 客户端

Build Status

项目状态

该项目开始由 John Ward 维护,目前状态是我正在将项目更新到最新依赖项,移除已弃用的 Rust 代码并调整测试。

新家

欢迎来到 kafka-rust 的新家:https://github.com/kafka-rust

文档

  • 该库主要通过其 API 文档 中的示例进行说明。
  • Kafka 自身的文档可以在其 项目主页 找到。

赞助商

感谢我们的赞助商,这有助于我花更多时间在这个项目上,并有助于基础设施。

Upstash

Upstash:无服务器 Kafka

  • 具有按请求定价的无服务器 Kafka
  • 托管 Apache Kafka,与所有 Kafka 客户端兼容
  • 内置的 REST API,专为无服务器和边缘功能设计

30 秒内免费开始!

安装

该 crate 与 Cargo 兼容,并位于 crates.io 上。API 目前正在大幅变动,尽管我们遵循语义版本控制(但预期版本号会快速增长)。

[dependencies]
kafka = "0.9"

要构建 kafka-rust,通常使用 cargo build 即可。该包支持各种功能,可以在编译时关闭。请参阅 kafka-rust 的 Cargo.tomlcargo 的文档

支持的 Kafka 版本

kafka-rust 已经过测试,与 0.8.2 到 3.1.0 的几个 Kafka 版本兼容。然而,Kafka 0.9 及以上版本的所有功能尚未完全支持。

示例

如前所述,cargo 生成的文档 包含一些示例。此外,还提供了独立、可编译的示例程序,位于 仓库的 examples 目录 中。

消费者

这是一个 Kafka 的高级消费者 API,由模块 kafka::consumer 提供。它代表指定的组提供便捷的偏移量管理支持。这是库的客户端应用程序想要用于从 Kafka 接收消息的 API。

生产者

这是一个 Kafka 的高级生产者 API,由模块 kafka::producer 提供。它通过分区器提供便捷的自动分区分配功能。这是库的客户端应用程序想要用于向 Kafka 发送消息的 API。

KafkaClient

模块 kafka::client 中的 KafkaClient 是此 API 的中心点。然而,这是一个适合构建高级 API 的 Kafka 中级抽象。应用程序通常想要使用之前提到的 ConsumerProducer。尽管如此,KafkaClient 的主要功能或特性包括

  • 加载元数据
  • 获取主题偏移量
  • 发送消息
  • 获取消息
  • 提交消费者组的偏移量
  • 获取消费者组的偏移量

错误 / 功能 / 贡献

kafka-rust 中仍有很大的改进空间。目前并非所有功能都正常工作,测试覆盖率可以更好。请在生产中使用时自行承担风险。

与开源项目一样,如果您看到需要更改的地方,请毫不犹豫地分叉仓库并提交拉取请求。我们很高兴看到 kafka-rust 随时间不断改进。

集成测试

在本地工作期间,集成测试需要您安装 Docker (1.10.0+) 和 docker-compose (1.6.0+),并通过包含在 tests 目录中的 run-all-tests 脚本运行测试。有关使用方法的详细信息,请参阅 run-all-tests 脚本本身。

创建主题

请注意,除非文档中明确说明,否则此库将忽略对其不熟悉的主题的请求。特别是,它不会尝试从不存在或不熟悉的主题检索消息。(这种行为很可能在未来版本的此库中改变。)

假设您有一个本地 Kafka 服务器安装,可以使用以下命令创建主题(其中 kafka-topics.sh 是 Kafka 分发的一部分)

kafka-topics.sh --topic my-topic --create --zookeeper localhost:2181 --partitions 1 --replication-factor 1

有关更多信息,请参阅 Kafka 的快速入门指南

替代/相关项目

  • rust-rdkafka 是一个基于 librdkafka 的 Rust 基于的 Kafka 客户端库。rust-rdkafka 为 librdkafka 提供了安全的 Rust 接口。

依赖关系

~1–2MB
~41K SLoC