Crate batata_consul_client

Crate batata_consul_client 

Source
Expand description

batata-consul-client - Rust client for HashiCorp Consul

§Overview

This library provides a Rust client for interacting with HashiCorp Consul, supporting service discovery, health checking, key-value store, sessions, ACL, and more.

§Quick Start

use batata_consul_client::{Client, Config};

#[tokio::main]
async fn main() -> batata_consul_client::Result<()> {
    // Create client with default configuration
    let client = Client::new(Config::default())?;

    // Use KV store
    let kv = client.kv();
    kv.put_string("my/key", "my-value", None).await?;

    let (pair, _meta) = kv.get("my/key", None).await?;
    if let Some(p) = pair {
        println!("Value: {:?}", p.value_string());
    }

    // Register a service
    use batata_consul_client::api::agent::{AgentServiceRegistration, AgentServiceCheck};

    let registration = AgentServiceRegistration::new("my-service")
        .with_id("my-service-1")
        .with_address("127.0.0.1")
        .with_port(8080)
        .with_check(AgentServiceCheck::http("http://127.0.0.1:8080/health", "10s"));

    client.agent().service_register(&registration).await?;

    // Query healthy services
    let (services, _meta) = client.health().service_healthy("my-service", None).await?;
    for service in services {
        println!("Service: {} at {}:{}",
            service.service.service,
            service.service.address,
            service.service.port
        );
    }

    Ok(())
}

§Features

  • KV Store: Get, put, delete keys with CAS support and locking
  • Agent: Register/deregister services, manage checks, TTL
  • Catalog: Query nodes and services across the cluster
  • Health: Health check queries with filtering
  • Session: Distributed locking and leader election
  • ACL: Token, policy, and role management

Re-exports§

pub use client::HttpClient;
pub use config::Config;
pub use config::ConfigBuilder;
pub use config::HttpBasicAuth;
pub use config::TlsConfig;
pub use error::ConsulError;
pub use error::Result;
pub use types::*;

Modules§

api
client
config
error
prelude
Prelude module for common imports
types

Structs§

Client
Main Consul client
ClientBuilder
Builder for creating a Consul client