[package]
name = "opsqueue"
version = "0.30.3"
edition = "2021"
description = "lightweight batch processing queue for heavy loads"
repository = "https://github.com/channable/opsqueue"
license = "MIT"
[lib]
name="opsqueue"
path="src/lib.rs"
include=["opsqueue_example_database_schema.db"]
[[bin]]
name="opsqueue"
path="app/main.rs"
required-features = ["server-logic"]
[dependencies]
itertools = "0.14.0"
arc-swap = {version = "1.7.1", optional = true}
moka = { version = "0.12.8", features = ["sync"], optional = true }
chrono = { version = "0.4.38", features = ["serde"]}
futures = "0.3.30"
tokio = { version = "1.38.0", features = ["macros", "signal", "rt-multi-thread"] }
uuid = {version = "1.11.0", features = [
"v7",
"fast-rng",
"serde",
]}
anyhow = "1.0.86"
sqlx = { version = "0.8.2", features = ["sqlite", "runtime-tokio", "chrono"], optional = true }
serde = { version = "1.0.203", features = ["derive"] }
serde_json = "1.0.124"
ciborium = "0.2.2"
http = "1.2.0"
object_store = {version = "0.11.1", features = ["gcp", "http"]}
snowflaked = {version = "1.0.3", features = ["sync"] }
tokio-tungstenite = {version = "0.24.0", optional = true}
axum = { version = "0.7.5", features = ["ws", "macros"], optional = true }
reqwest = { version = "0.12.9", default-features = false, features = ["json", "rustls-tls"], optional = true }
url = {version = "2.5.2"}
tokio-util = { version = "0.7.11", features = ["io", "rt", "time"] }
tower-http = { version = "0.6.1", features = ["trace", "catch-panic"], optional = true }
tracing = {version = "0.1", features = ["log"] }
tracing-subscriber = {version = "0.3", features = ["std", "env-filter"] }
sentry = {version = "0.35", optional = true, default-features=false, features=["rustls", "reqwest"]}
sentry-tracing = {version = "0.35", optional = true}
axum-tracing-opentelemetry = {version = "0.24.0", optional = true }
opentelemetry = { version = "0.26", default-features = false, features = ["trace"] }
opentelemetry_sdk = { version = "0.26", default-features = false, features = ["trace", "rt-tokio"] }
opentelemetry-http = { version = "0.26" }
opentelemetry-otlp = { version = "0.26", optional = true }
tracing-opentelemetry = {version = "0.27.0" }
opentelemetry-semantic-conventions = {version = "0.26.0", features = ["semconv_experimental"], optional = true}
moro-local = "0.4.0"
thiserror = "1.0.65"
either = "1.13.0"
serde-error = "0.1.3"
ux_serde = { version = "0.2.0", features = ["std", "serde"] }
backon = { version = "1.3.0", features = ["tokio-sleep"] }
rand = "0.8.5"
rustc-hash = "2.0.0"
axum-prometheus = {version = "0.7.0", optional = true}
clap = { version = "4.5.21", features = ["derive"] }
humantime = "2.1.0"
dashmap = "6.1.0"
crossbeam-skiplist = "0.1.3"
[dev-dependencies]
criterion = {version = "0.3", features = ["async_tokio"]}
insta = { version = "1.41.1" }
assert_matches = { version = "1.5.0" }
[features]
server-logic = [
"dep:sqlx",
"dep:opentelemetry-otlp",
"dep:opentelemetry-semantic-conventions",
"dep:axum-tracing-opentelemetry",
"dep:moka",
"dep:axum",
"dep:tower-http",
"dep:axum-prometheus",
"dep:sentry",
"dep:sentry-tracing"
]
client-logic = [
"dep:reqwest",
"dep:tokio-tungstenite",
"dep:arc-swap",
]
default = ["server-logic"]