Module apollo_client::conf
source · Available on crate feature
conf
only.Expand description
Apollo configuration apis.
Refs: https://www.apolloconfig.com/#/zh/usage/other-language-client-user-guide.
§Example
Simple fetch configuration:
use apollo_client::{
conf::{meta::IpValue, requests::CachedFetchRequest, ApolloConfClientBuilder},
errors::ApolloClientResult,
};
use ini::Properties;
use std::error::Error;
use url::Url;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
env_logger::init();
// Create configuration client.
let client =
ApolloConfClientBuilder::new_via_config_service(Url::parse("http://localhost:8080")?)?
.build()?;
// Request apollo cached configuration api.
let configuration: Properties = client
.cached_fetch(CachedFetchRequest {
app_id: "SampleApp".to_string(),
namespace_name: "application.json".to_string(),
ip: Some(IpValue::HostName),
..Default::default()
})
.await?;
// Get the content of configuration.
let content = configuration.get("content");
dbg!(content);
Ok(())
}
Watch configuration and fetch when changed:
use apollo_client::conf::{meta::IpValue, requests::WatchRequest, ApolloConfClientBuilder};
use cidr_utils::cidr::IpCidr;
use futures_util::{pin_mut, stream::StreamExt};
use std::{error::Error, str::FromStr};
use url::Url;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
env_logger::init();
// Create configuration client.
let client =
ApolloConfClientBuilder::new_via_config_service(Url::parse("http://localhost:8080")?)?
.build()?;
// Request apollo notification api, and fetch configuration when notified.
let stream = client.watch(WatchRequest {
app_id: "SampleApp".to_string(),
namespace_names: vec![
"application.properties".into(),
"application.json".into(),
"application.yml".into(),
],
ip: Some(IpValue::HostCidr(IpCidr::from_str("172.16.0.0/16")?)),
..Default::default()
});
pin_mut!(stream);
// There is a dead loop, `next()` is returned when configuration has changed.
while let Some(response) = stream.next().await {
let responses = response?;
for response in responses {
let _ = dbg!(response);
}
}
Ok(())
}
Modules§
- Configuration api metadata.
- Configuration api requests.
- Configuration api response.
Structs§
- Apollo configuration apis client.
- Builder for ApolloConfClient.