1 个不稳定版本
0.1.0 | 2021 年 10 月 1 日 |
---|
#8 在 #consul 中
336 每月下载量
用于 consul-patch-json
105KB
2K SLoC
consulrs
HashiCorp Consul API 的异步 Rust 客户端库
以下功能目前支持
此外,还支持所有可选的 API 功能,如一致性模式、阻塞等。
安装
将 consulrs
添加为 cargo.toml 中的依赖项
[dependencies]
consulrs = "0.1.0"
用法
基本用法
客户端用于配置与 Consul 的连接,并且必须传递给所有 API 调用来执行。在幕后,它使用来自 Reqwest 的异步客户端与 Consul 进行通信。
use consulrs::client::{ConsulClient, ConsulClientSettingsBuilder};
// Create a client
let client = ConsulClient::new(
ConsulClientSettingsBuilder::default()
.address("https://127.0.0.1:8200")
.build()
.unwrap()
).unwrap();
客户端支持与生产级 Consul 服务交互所需的所有功能,包括指定 ACL 令牌以及客户端和 CA 证书的选项。
使用 KV 存储
use std::convert::TryInto;
use consulrs::kv;
// Set `mykey` to "myvalue"
kv::set(&client, "mykey", b"myvalue", None).await;
// Read `mykey`
let mut res = kv::read(&client, "mykey", None).await.unwrap();
// All responses are base64 encoded by default. The below attempts to coerce
// the response back into a UTF-8 encoded string.
let mykey: String = res.response.pop().unwrap().value.unwrap().try_into().unwrap();
assert_eq!(mykey, "myvalue".to_string());
注册服务
use consulrs::api::check::common::AgentServiceCheckBuilder;
use consulrs::api::service::requests::RegisterServiceRequest
use consulrs::service;
// Create a service named "my_service" with a health check that queries the
// service via HTTP every 10 seconds.
service::register(
&client,
"my_service",
Some(
RegisterServiceRequest::builder()
.address("http://myservice.lab.com")
.port(1234)
.check(
AgentServiceCheckBuilder::default()
.name("health_check")
.interval("10s")
.http("http://myservice.lab.com/health")
.status("passing")
.build()
.unwrap(),
),
),
)
.await;
有关更多示例,请参阅 示例目录。
错误处理和跟踪
此crate生成的所有错误都包含在crate提供的ClientError
枚举中。API错误被捕获并作为自己的变体返回,包括来自服务器的响应代码和错误消息。来自rustify
的与连接相关错误被包装并作为一个单独的变体返回。
所有顶级API操作都使用tracing
的#[instrument]
属性进行跟踪。
测试
有关测试,请参阅 测试目录。使用cargo test
运行测试。
注意:所有测试都需要使用Docker启动本地Consul开发服务器。为了运行测试,Docker必须在本地运行(Docker Desktop可行)。
贡献
查看需要关注的问题或提交您自己的问题,然后
- 分支仓库(https://github.com/jmgilman/consulrs/fork)
- 创建您的功能分支(git checkout -b feature/fooBar)
- 提交您的更改(git commit -am '添加一些fooBar')
- 推送到分支(git push origin feature/fooBar)
- 创建新的拉取请求
依赖项
~8–26MB
~390K SLoC