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 网页编程
22KB
501 行
cloud-pubsub
提供使用 Futures 和 Hyper 从 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