5 个版本 (3 个破坏性更新)
0.5.0 | 2024年4月24日 |
---|---|
0.3.0 | 2023年7月11日 |
0.2.1 | 2023年5月7日 |
0.2.0 | 2023年3月25日 |
0.1.0 | 2023年3月2日 |
#897 在 并发 中
每月2,260 次下载
在 3 个 Crates 中使用 (通过 sea-streamer)
225KB
5K SLoC
sea-streamer-socket
: 无后端依赖的 Socket API
类似于 SeaORM 允许您为不同的数据库构建应用程序,SeaStreamer 允许您为不同的流服务器构建流处理器。
虽然 sea-streamer-types
Crates 提供了基于特质的优雅抽象,但这个 Crates 提供了具体的类型 API,这样您的程序就可以在运行时从用户选择的任何 SeaStreamer 后端进行流处理。
这使得您能够做一些很酷的事情,例如在本地生成数据并将其流式传输到 Redis / Kafka。或者相反,从服务器获取数据并在本地处理。所有这些都无需重新编译流处理器。
如果您始终只使用一个后端,可以直接依赖 sea-streamer-redis
/ sea-streamer-kafka
。
提供了一些小型的 CLI 程序进行演示。让我们首先设置它们
# The `clock` program generate messages in the form of `{ "tick": N }`
alias clock='cargo run --package sea-streamer-stdio --features=executables --bin clock'
# The `relay` program redirect messages from `input` to `output`
alias relay='cargo run --package sea-streamer-socket --features=executables,backend-kafka,backend-redis --bin relay'
以下是将数据从 Stdio 流向 Redis / Kafka 的方法。我们使用 clock
生成消息,然后将它管道到 relay
,然后将其流式传输到 Redis / Kafka
# Stdio -> Redis
clock -- --stream clock --interval 1s | \
relay -- --input stdio:///clock --output redis://127.0.0.1:6379/clock
# Stdio -> Kafka
clock -- --stream clock --interval 1s | \
relay -- --input stdio:///clock --output kafka://127.0.0.1:9092/clock
以下是 Redis ↔️ Kafka 之间的流式传输方法
# Redis -> Kafka
relay -- --input redis://127.0.0.1:6379/clock --output kafka://127.0.0.1:9092/clock
# Kafka -> Redis
relay -- --input kafka://127.0.0.1:9092/clock --output redis://127.0.0.1:6379/clock
以下是 重放 Kafka / Redis 中的流的方法
relay -- --input redis://127.0.0.1:6379/clock --output stdio:///clock --offset start
relay -- --input kafka://127.0.0.1:9092/clock --output stdio:///clock --offset start
依赖项
~3–21MB
~264K SLoC