opsqueue 0.30.3

lightweight batch processing queue for heavy loads
Documentation
[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]
# Datatypes and concurrency:
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",                # Timestamp-sortable UUIDs with random component
        "fast-rng",          # Use a faster (but still sufficiently random) RNG
        "serde",
    ]}
# Error handling:
anyhow = "1.0.86"
# Database:
sqlx = { version = "0.8.2", features = ["sqlite", "runtime-tokio", "chrono"], optional = true }
# Serialization:
serde = { version = "1.0.203", features = ["derive"] }
serde_json = "1.0.124"
ciborium = "0.2.2"
# Webservers/clients
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 }
# Logging and tracing:
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}
# Exporting traces to Opentelemetry:
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}

# Configuration:
clap = { version = "4.5.21", features = ["derive"] }
humantime = "2.1.0"

dashmap = "6.1.0"
crossbeam-skiplist = "0.1.3"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dev-dependencies]
criterion = {version = "0.3", features = ["async_tokio"]}
insta = { version = "1.41.1" }
assert_matches = { version = "1.5.0" }

# [[bench]]
# name = "chunks_select"
# harness = false

# [[bench]]
# name = "submissions_insert"
# harness = false

[features]
# Dependencies only in use by the server-logic:
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"
    ]
# Dependencies only in use by the client libraries:
client-logic = [
    "dep:reqwest",
    "dep:tokio-tungstenite",
    "dep:arc-swap",
]
default = ["server-logic"]