InfluxDB Client Library
About this crate
What this crate provides
- Support for InfluxDB 2.x.
- Backlog storage of Record's on failure to commit due to connectivity or configuration issues.
- Build-in compression of requests.
What it does not provide
What is on the roadmap
- Support for async/await as a feature. #3
- Reduction of dependencies by switching the underlying reqwest library with hyper. #4
- Support for sending, processing responses to queries. #5
- Support for mapping native types to query response data like sqlx. #6
Basic Usage
use influxc::Client;
use influxc::FileBacklog;
use influxc::Record;
use influxc::Precision;
use influxc::Credentials;
use influxc::InfluxError;
use std::time::Duration;
use std::thread::sleep;
fn main() -> Result<(), InfluxError>
{
let creds = Credentials::from_basic("testuser", "testpasswd");
let backlog = FileBacklog::new("./ignore/backlog")?;
let mut client = Client::build("http://127.0.0.1:8086".into(), creds)
.backlog(backlog)
.finish()?;
let mut rec = Record::new("org", "bucket")
.precision(Precision::Milliseconds);
loop
{
rec.measurement("sensor1")
.tag("floor", "second")
.tag("exposure", "west")
.field("temp", 123)
.field("brightness", 500);
rec.measurement("sensor2")
.tag("floor", "second")
.tag("exposure", "east")
.field("temp", 321)
.field("brightness", 999);
if let Err(e) = client.write(&rec) {
eprintln!("{}", e);
}
sleep(Duration::from_secs(1));
}
}