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>) -> RemoteCoordinatorClient
pub fn new(base_url: impl Into<String>) -> RemoteCoordinatorClient
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<(), ChrononError>
pub async fn upsert_job(&self, job: Job) -> Result<(), ChrononError>
POST /jobs/upsert with fields from job.
Sourcepub async fn list_jobs(&self) -> Result<Vec<JobSummary>, ChrononError>
pub async fn list_jobs(&self) -> Result<Vec<JobSummary>, ChrononError>
GET /jobs and return non-sensitive job summaries.
Auto Trait Implementations§
impl !RefUnwindSafe for RemoteCoordinatorClient
impl !UnwindSafe for RemoteCoordinatorClient
impl Freeze for RemoteCoordinatorClient
impl Send for RemoteCoordinatorClient
impl Sync for RemoteCoordinatorClient
impl Unpin for RemoteCoordinatorClient
impl UnsafeUnpin for RemoteCoordinatorClient
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more