[package]
edition = "2024"
rust-version = "1.91.1"
name = "hammerwork"
version = "2.0.0"
authors = ["CodingAnarchy <noreply@codinganarchy.com>"]
build = false
exclude = [
".github/",
".cargo/",
"CLAUDE.md",
"ROADMAP.md",
"Makefile",
"docker-compose.yml",
"config/",
"scripts/",
"test-mysql-cli.sh",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A high-performance, database-driven job queue for Rust with PostgreSQL and MySQL support, featuring job prioritization, cron scheduling, event streaming (Kafka/Kinesis/PubSub), webhooks, rate limiting, Prometheus metrics, and comprehensive monitoring"
homepage = "https://github.com/CodingAnarchy/hammerwork"
documentation = "https://docs.rs/hammerwork"
readme = "README.md"
keywords = [
"database",
"job-queue",
"async",
"postgres",
"mysql",
]
categories = [
"database",
"asynchronous",
"concurrency",
]
license = "MIT"
repository = "https://github.com/CodingAnarchy/hammerwork"
[features]
alerting = [
"reqwest",
"lettre",
]
aws-kms = [
"aws-sdk-kms",
"aws-config",
]
azure-kv = [
"azure_security_keyvault_keys",
"azure_identity",
"azure_core",
]
default = [
"metrics",
"alerting",
"webhooks",
]
encryption = [
"aes-gcm",
"chacha20poly1305",
"argon2",
"hmac",
"sha2",
"hex",
"zeroize",
]
gcp-kms = [
"google-cloud-kms",
"google-cloud-auth",
"rustls",
]
google-pubsub = [
"google-cloud-pubsub",
"google-cloud-auth",
"google-cloud-googleapis",
"google-cloud-gax",
"rustls",
]
kafka = ["rdkafka"]
kinesis = [
"aws-sdk-kinesis",
"aws-config",
]
metrics = [
"prometheus",
"warp",
]
mysql = ["sqlx/mysql"]
postgres = ["sqlx/postgres"]
streaming = [
"rmp-serde",
"apache-avro",
"prost",
]
test = []
tracing = [
"opentelemetry",
"opentelemetry_sdk",
"opentelemetry-otlp",
"tracing-opentelemetry",
]
vault-kms = [
"vaultrs",
"url",
]
webhooks = [
"reqwest",
"hmac",
"sha2",
"hex",
]
[lib]
name = "hammerwork"
path = "src/lib.rs"
[[example]]
name = "autoscaling_example"
path = "examples/autoscaling_example.rs"
required-features = ["postgres"]
[[example]]
name = "aws_kms_encryption_example"
path = "examples/aws_kms_encryption_example.rs"
required-features = ["encryption"]
[[example]]
name = "batch_example"
path = "examples/batch_example.rs"
required-features = ["postgres"]
[[example]]
name = "cron_example"
path = "examples/cron_example.rs"
required-features = ["postgres"]
[[example]]
name = "encryption_example"
path = "examples/encryption_example.rs"
required-features = ["encryption"]
[[example]]
name = "gcp_kms_encryption_example"
path = "examples/gcp_kms_encryption_example.rs"
required-features = ["encryption"]
[[example]]
name = "key_management_example"
path = "examples/key_management_example.rs"
required-features = ["encryption"]
[[example]]
name = "mysql_example"
path = "examples/mysql_example.rs"
required-features = ["mysql"]
[[example]]
name = "postgres_example"
path = "examples/postgres_example.rs"
required-features = ["postgres"]
[[example]]
name = "priority_example"
path = "examples/priority_example.rs"
required-features = ["postgres"]
[[example]]
name = "result_storage_example"
path = "examples/result_storage_example.rs"
required-features = ["postgres"]
[[example]]
name = "retry_strategies"
path = "examples/retry_strategies.rs"
required-features = ["postgres"]
[[example]]
name = "spawn_cli_example"
path = "examples/spawn_cli_example.rs"
[[example]]
name = "spawn_example"
path = "examples/spawn_example.rs"
required-features = ["postgres"]
[[example]]
name = "test_queue_example"
path = "examples/test_queue_example.rs"
required-features = ["test"]
[[example]]
name = "vault_kms_encryption_example"
path = "examples/vault_kms_encryption_example.rs"
required-features = ["encryption"]
[[example]]
name = "worker_batch_example"
path = "examples/worker_batch_example.rs"
required-features = ["postgres"]
[[test]]
name = "archive_tests"
path = "tests/archive_tests.rs"
[[test]]
name = "batch_tests"
path = "tests/batch_tests.rs"
[[test]]
name = "comprehensive_archive_tests"
path = "tests/comprehensive_archive_tests.rs"
[[test]]
name = "cron_test"
path = "tests/cron_test.rs"
[[test]]
name = "dequeue_concurrency_tests"
path = "tests/dequeue_concurrency_tests.rs"
[[test]]
name = "encryption_basic_tests"
path = "tests/encryption_basic_tests.rs"
required-features = ["encryption"]
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[test]]
name = "job_lifecycle_tests"
path = "tests/job_lifecycle_tests.rs"
[[test]]
name = "job_spawning_tests"
path = "tests/job_spawning_tests.rs"
[[test]]
name = "job_status_codec_tests"
path = "tests/job_status_codec_tests.rs"
[[test]]
name = "jobarchiver_pool_tests"
path = "tests/jobarchiver_pool_tests.rs"
[[test]]
name = "jobrow_query_tests"
path = "tests/jobrow_query_tests.rs"
[[test]]
name = "migration_idempotency_tests"
path = "tests/migration_idempotency_tests.rs"
[[test]]
name = "migration_lock_tests"
path = "tests/migration_lock_tests.rs"
[[test]]
name = "payload_encryption_tests"
path = "tests/payload_encryption_tests.rs"
[[test]]
name = "priority_tests"
path = "tests/priority_tests.rs"
[[test]]
name = "queue_api_tests"
path = "tests/queue_api_tests.rs"
[[test]]
name = "queue_config_tests"
path = "tests/queue_config_tests.rs"
[[test]]
name = "queue_followup_tests"
path = "tests/queue_followup_tests.rs"
[[test]]
name = "result_config_test"
path = "tests/result_config_test.rs"
[[test]]
name = "result_storage_tests"
path = "tests/result_storage_tests.rs"
[[test]]
name = "result_visibility_tests"
path = "tests/result_visibility_tests.rs"
[[test]]
name = "test_queue_tests"
path = "tests/test_queue_tests.rs"
[[test]]
name = "test_utils"
path = "tests/test_utils.rs"
[[test]]
name = "tracing_init_tests"
path = "tests/tracing_init_tests.rs"
[[test]]
name = "undecodable_row_tests"
path = "tests/undecodable_row_tests.rs"
[[test]]
name = "worker_batch_tests"
path = "tests/worker_batch_tests.rs"
[[test]]
name = "worker_config_tests"
path = "tests/worker_config_tests.rs"
[[test]]
name = "worker_pool_archival_tests"
path = "tests/worker_pool_archival_tests.rs"
[[test]]
name = "worker_robustness_tests"
path = "tests/worker_robustness_tests.rs"
[[test]]
name = "workflow_failure_policy_tests"
path = "tests/workflow_failure_policy_tests.rs"
[dependencies.aes-gcm]
version = "0.10"
optional = true
[dependencies.apache-avro]
version = "0.16"
optional = true
[dependencies.argon2]
version = "0.5"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.aws-config]
version = "1.8"
optional = true
[dependencies.aws-sdk-kinesis]
version = "1.80"
features = [
"default-https-client",
"rt-tokio",
]
optional = true
default-features = false
[dependencies.aws-sdk-kms]
version = "1.80"
features = [
"default-https-client",
"rt-tokio",
]
optional = true
default-features = false
[dependencies.azure_core]
version = "1.0"
optional = true
[dependencies.azure_identity]
version = "1.0"
optional = true
[dependencies.azure_security_keyvault_keys]
version = "1.0"
optional = true
[dependencies.base64]
version = "0.22"
[dependencies.chacha20poly1305]
version = "0.10"
optional = true
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.chrono-tz]
version = "0.8"
[dependencies.clap]
version = "4.0"
features = ["derive"]
[dependencies.cron]
version = "0.12"
[dependencies.flate2]
version = "1.0"
[dependencies.google-cloud-auth]
version = "1.3"
optional = true
package = "gcloud-auth"
[dependencies.google-cloud-gax]
version = "1.4"
optional = true
package = "gcloud-gax"
[dependencies.google-cloud-googleapis]
version = "1.3"
features = ["pubsub"]
optional = true
package = "gcloud-googleapis"
[dependencies.google-cloud-kms]
version = "1.5"
optional = true
package = "gcloud-kms"
[dependencies.google-cloud-pubsub]
version = "1.7"
optional = true
package = "gcloud-pubsub"
[dependencies.hex]
version = "0.4"
optional = true
[dependencies.hmac]
version = "0.12"
optional = true
[dependencies.lettre]
version = "0.11"
features = [
"builder",
"smtp-transport",
"tokio1-rustls-tls",
"hostname",
]
optional = true
default-features = false
[dependencies.opentelemetry]
version = "0.33"
optional = true
[dependencies.opentelemetry-otlp]
version = "0.33"
features = [
"trace",
"grpc-tonic",
]
optional = true
default-features = false
[dependencies.opentelemetry_sdk]
version = "0.33"
optional = true
[dependencies.prometheus]
version = "0.14"
optional = true
[dependencies.prost]
version = "0.12"
optional = true
[dependencies.rand]
version = "0.8"
[dependencies.rdkafka]
version = "0.36"
optional = true
[dependencies.reqwest]
version = "0.12"
features = ["json"]
optional = true
[dependencies.rmp-serde]
version = "1.3"
optional = true
[dependencies.rustls]
version = "0.23"
features = ["aws_lc_rs"]
optional = true
default-features = false
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.sha2]
version = "0.10"
optional = true
[dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio-rustls",
"chrono",
"uuid",
"json",
]
[dependencies.thiserror]
version = "1.0"
[dependencies.tokio]
version = "1.0"
features = ["full"]
[dependencies.toml]
version = "0.8"
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-opentelemetry]
version = "0.34"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"json",
]
[dependencies.url]
version = "2.5"
optional = true
[dependencies.uuid]
version = "1.0"
features = [
"v4",
"serde",
]
[dependencies.vaultrs]
version = "0.7"
optional = true
[dependencies.warp]
version = "0.4"
features = ["server"]
optional = true
[dependencies.zeroize]
version = "1.8"
optional = true
[dev-dependencies.bytes]
version = "1"
[dev-dependencies.h2]
version = "0.4"
[dev-dependencies.http]
version = "1"
[dev-dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio-rustls",
"chrono",
"uuid",
"json",
"postgres",
"mysql",
]
[dev-dependencies.tempfile]
version = "3.8"
[dev-dependencies.token-source]
version = "1.0"
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"json",
]