13 个版本 (8 个破坏性版本)
0.9.0 | 2022 年 3 月 28 日 |
---|---|
0.8.1 | 2021 年 12 月 12 日 |
0.7.0 | 2021 年 6 月 30 日 |
0.4.0 | 2021 年 3 月 4 日 |
0.2.0 | 2020 年 11 月 11 日 |
#5 in #pulsar
每月 46 次下载
17KB
328 行
概述
Venta 是一个 Rust 库,实现了一个健壮、易用且非阻塞的 Apache Pulsar 发布者。它基于 pulsar-rs,但添加了一些缺失的部分
- Venta 在后台发布消息,这意味着只要队列空间足够,消息入队就会立即发生。这对于不希望在实际发布操作上阻塞的应用程序非常有用
- Venta 在 pulsar-rs 的基础上增加了重试和超时功能,允许它从导致 pulsar-rs 停滞或返回错误的错误中恢复
- 消息事件时间自动设置为将消息添加到队列的时间,允许消费者推断原始消息时间
- Venta 对于常见的用例(例如发布 JSON 消息、添加属性等)来说更加易用
使用方法
对于简单的用例,例如您希望配置一个具有主题名称和发布者名称的发布者,您可以使用 spawn_simple
async fn f() -> anyhow::Result<()> {
let producer = venta::BackgroundProducer::spawn_simple("pulsar://127.0.0.1", "topic_name", Some("producer_name".into())).await?;
//...
Ok(())
}
对于您希望对发布者构建有更精细控制的用例,您可以使用 spawn
构造函数,接收创建发布者的闭包
async fn f() -> anyhow::Result<()> {
let producer = venta::BackgroundProducer::spawn(|| async {
pulsar::Pulsar::builder("pulsar://127.0.0.1", pulsar::TokioExecutor)
.build()
.await?
.producer()
.with_topic("topic").build()
.await
}).await?;
//...
Ok(())
}
有关如何构建底层客户端和发布者的更多信息,请参阅 pulsar-rs 的文档
一旦初始化了发布者,入队 JSON 消息就相对简单
use serde_json::json;
async fn f() -> anyhow::Result<()> {
let producer = venta::BackgroundProducer::spawn_simple("pulsar://127.0.0.1", "topic_name", Some("producer_name".into())).await?;
producer.produce().json(&json!({
"message": "here"
})).enqueue()
}
Venta 发布者是 Clone
,这意味着它们可以无任何问题地传递到代码的各个部分。
依赖关系
~13–26MB
~423K SLoC