2 个版本

0.0.2 2024 年 4 月 30 日
0.0.1 2024 年 3 月 14 日

#1107解析器实现

Download history 55/week @ 2024-04-24 94/week @ 2024-05-01 1/week @ 2024-05-15 7/week @ 2024-05-22

94 每月下载量

MIT 许可证

120KB
3.5K SLoC

Neutron - 此软件包目前处于开发中,尚未准备好用于生产

Apache Pulsar 客户端库,纯 Rust 构建 🦀,不依赖 C++。

特性

  • 纯 Rust,无 C++ 依赖 🦀
  • 消费者客户端 📥
  • 生产者客户端 📤
  • 插件支持 🔌
  • 多/双消费者和生产者支持 🤝
  • 通过 rustls 支持 TLS 🔐
  • 异步解析发送和确认 🪓
  • 批处理支持 📦
  • 自动重连 ♻️
  • 自动操作重试 🚀

安装

使用 Cargo Add

这将安装最新版本的 neutron 到你的 cargo.toml

cargo add neutron

手动

由于目前处于预发布状态,你必须直接使用 git ssh 地址。

neutron = "0.0.2"

特性

json 功能提供通过 serde_json 的自动反序列化和序列化。

neutron = { version = "0.0.2", features = ["json"] }

示例

这是一个简单的消费者示例,它监听一个主题并打印消息。 启用 json 功能

use neutron::{ConsumerBuilder, Message};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Deserialize, Serialize)]
#[allow(dead_code)]
struct Data {
    name: String,
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    env_logger::init();
    let pulsar_config = neutron::PulsarConfig {
        endpoint_url: "pulsar://127.0.0.1".to_string(),
        endpoint_port: 6650,
    };

    let pulsar = neutron::PulsarBuilder::new()
        .with_config(pulsar_config)
        .build()
        .run();

    let consumer = ConsumerBuilder::new()
        .with_topic("test")
        .with_subscription("test")
        .with_consumer_name("test")
        .connect(&pulsar)
        .await?;


    loop {
        let response: Message<Data> = consumer.next_message().await?;
        log::info!("Received message: {:?}", response.payload);
        consumer.ack(&response.ack).await?;
    }
}

依赖

~15–32MB
~485K SLoC