pub struct RemoteCoordinatorClient { /* private fields */ }Expand description
HTTP client for Mode 3 — schedule/trigger jobs without local Chronon loops.
Targets the chronon-axum API at {base_url}/api/chronon/* (see API_PREFIX).
Pair with a host that mounts chronon_router on a Mode 1 or Mode 2 coordinator process.
| Method | HTTP |
|---|---|
Self::upsert_job | POST /jobs/upsert |
Self::list_jobs | GET /jobs |
Self::run_now | POST /jobs/run_now |
Timeout: CHRONON_REMOTE_HTTP_TIMEOUT_MS (default 3000, minimum 100). Base URL helper:
resolve_remote_base_url. Optional builder mark: crate::ChrononBuilder::remote_coordinator
(DeploymentShape::RemoteClient) so you do not call
crate::Chronon::run by mistake.
§Examples
use chronon_core::{Job, ScheduleKind};
use chronon_runtime::{resolve_remote_base_url, RemoteCoordinatorClient};
let base = resolve_remote_base_url()
.unwrap_or_else(|| "http://127.0.0.1:8080".into());
let client = RemoteCoordinatorClient::new(base);
let mut job = Job::new("remote-job", "nightly_cleanup");
job.schedule_kind = ScheduleKind::Manual;
client.upsert_job(job.clone()).await?;
let _run_id = client.run_now(&job.job_id).await?;
let _jobs = client.list_jobs().await?;Runnable API mount sketch: cargo run -p uf-chronon --example axum_host --features mem,axum.
Implementations§
Source§impl RemoteCoordinatorClient
impl RemoteCoordinatorClient
Sourcepub fn new(base_url: impl Into<String>) -> Self
pub fn new(base_url: impl Into<String>) -> Self
Create a client for base_url (trailing slashes stripped).
Timeout from CHRONON_REMOTE_HTTP_TIMEOUT_MS (default 3s).
Sourcepub async fn upsert_job(&self, job: Job) -> Result<()>
pub async fn upsert_job(&self, job: Job) -> Result<()>
POST /jobs/upsert with fields from job.
Sourcepub async fn list_jobs(&self) -> Result<Vec<JobSummary>>
pub async fn list_jobs(&self) -> Result<Vec<JobSummary>>
GET /jobs and return non-sensitive job summaries.