#producer #kafka #parallel #tokio #send-message

brod

一个提供并行执行 Kafka 生产者 API 的包装库

4 个版本

0.1.3 2023 年 5 月 4 日
0.1.2 2023 年 5 月 4 日
0.1.1 2023 年 5 月 4 日
0.1.0 2023 年 5 月 4 日

#1089并发

每月36 次下载

MIT/Apache

33KB
552

布罗德

github crates.io docs.rs

一个小型的包装库,提供了执行多个 Kafka 生产者并行操作的功能。底层的 Kafka 功能由 rust-rdkafka 库提供。此外,为了支持异步 FutureProducer 的使用,使用了 tokio 运行时。

(以弗朗茨·卡夫卡的好友,拯救了卡夫卡文学作品的 Max Brod 命名。)

文档

如果已安装 Cargo,Rust 软件包管理器,可以通过执行命令 cargo docs --open 生成本地文档,该命令将构建文档并在系统默认的网页浏览器中打开。

功能

此库使开发者能够编写使用 Kafka 生产者发送消息的常规、顺序工作函数,并通过库提供的功能使这些函数并行执行。

既可以使用同步的 BaseProducer,也可以使用异步的 FutureProducer,分别由 sync_prodasync_prod 模块提供的相应功能提供。

用法

此库的预期用例是编写一个使用 Kafka 生产者发送某些消息的函数,可选地执行一些计算工作以生成这些消息。然后将此函数作为函数指针传递给库提供的具有并行执行传递工作函数的功能的函数之一。

需要注意的是,为了尽可能通用,并为了提供尽可能灵活的功能,该库利用了 Rust 提供的 类型擦除 机制。因此,一些额外的类型检查相关工作将落在开发者身上。此外,开发者还必须确保传递给库的工作函数适合并行执行。对于大多数可能从该库中受益的大型数据处理用例,这应该相当简单就能确保。

有关详细信息,请参阅示例

未来工作

目前,该库仅提供允许以灵活方式并行执行工作函数的核心功能以及一些有限的实用函数。因此,有一些可能的改进领域可以增加使用库的开发者的生活质量。以下列出了一些。

  • 移除在将异步函数传递给生产函数时需要将其包裹在闭包中的需求
  • 提高同步生产函数类型擦除版本的代码重用性
  • 为异步生产函数添加一个类似的类型擦除函数。

依赖项

~18–29MB
~372K SLoC