8 个重大版本更新

0.9.0 2023年1月21日
0.8.0 2022年2月8日
0.7.0 2021年10月22日
0.6.0 2021年4月6日
0.3.0 2019年4月12日

#2362 in 网页编程


用于 checkout_core

MIT 许可证

22KB
501

cloud-pubsub

提供使用 FuturesHyper 从 Google PubSub 消费消息的方法。

身份验证

身份验证由 rust-goauth 提供。BaseClient 期望接收包含您的 Google Cloud 服务帐户 JSON 密钥的文件路径。

令牌更新

JWT 令牌的有效期很短,需要定期更新以保持长时间运行的过程。

提供了一个辅助工具,可以在每 15 分钟 更新令牌。

let pubsub = match BaseClient::create(config.google_application_credentials) {
    Err(e) => panic!("Failed to initialize pubsub: {}", e),
        Ok(p) => p,
};

tokio::run(lazy(move || {
    pubsub.spawn_token_renew();
}))

环境配置

Envy 是加载配置的一个绝佳方式。

#[derive(Deserialize)]
struct Config {
    pubsub_subscription: String,
    google_application_credentials: String,
}


fn main() {
    let parsed_env = envy::from_env::<Config>();
    if let Err(e) = parsed_env {
        eprintln!("ENV is not valid: {}", e);
        std::process::exit(1);
    }
    let config = parsed_env.unwrap();

    let pubsub = match BaseClient::create(config.google_application_credentials) {
        Err(e) => panic!("Failed to initialize pubsub: {}", e),
        Ok(p) => p,
    };
}

日志配置

为了生成日志输出,可执行文件必须使用与日志外观兼容的日志实现。有许多可用的实现可供选择,例如

env_logger 是在可执行文件中记录日志的一个绝佳方式。

[dependencies]
log = "0.4"
env_logger = "0.7"
fn main() {
    env_logger::init();

    info!("starting up");

    // ...
}

订阅

连接到现有订阅

let sub = my_client.subscribe("subscription-name")

订阅主题

在订阅主题时,将生成一个随机的订阅名称。为了防止悬挂订阅,您需要显式调用 subscription.destroy()

依赖项

~10–27MB
~406K SLoC