Skip to main content

kojin_core/
lib.rs

1//! Core traits, types, and worker runtime for the kojin task queue.
2//!
3//! This crate provides the foundational abstractions: [`Task`], [`Broker`],
4//! [`Middleware`], [`Worker`], and supporting types. Most users should depend
5//! on the [`kojin`](https://crates.io/crates/kojin) facade crate instead.
6
7pub mod backoff;
8pub mod broker;
9pub mod canvas;
10pub mod codec;
11pub mod context;
12pub mod error;
13pub mod memory_broker;
14pub mod memory_result_backend;
15pub mod message;
16pub mod middleware;
17pub mod queue_weight;
18pub mod registry;
19pub mod result_backend;
20pub mod shutdown;
21pub mod signature;
22pub mod state;
23pub mod task;
24pub mod task_id;
25pub mod worker;
26
27#[cfg(feature = "cron")]
28pub mod cron;
29
30// Re-export key types at crate root
31pub use backoff::BackoffStrategy;
32pub use broker::Broker;
33pub use canvas::{Canvas, WorkflowHandle, chord};
34pub use codec::{Codec, JsonCodec};
35pub use context::TaskContext;
36pub use error::{KojinError, TaskResult};
37pub use memory_broker::MemoryBroker;
38pub use memory_result_backend::MemoryResultBackend;
39pub use message::TaskMessage;
40#[cfg(feature = "otel")]
41pub use middleware::OtelMiddleware;
42#[cfg(feature = "rate-limit")]
43pub use middleware::RateLimitMiddleware;
44pub use middleware::{MetricsMiddleware, Middleware, TracingMiddleware};
45pub use queue_weight::{QueueWeight, WeightedQueue};
46pub use registry::TaskRegistry;
47pub use result_backend::ResultBackend;
48pub use signature::Signature;
49pub use state::TaskState;
50pub use task::Task;
51pub use task_id::TaskId;
52pub use worker::{Worker, WorkerConfig};