[package]
edition = "2024"
rust-version = "1.95"
name = "ruststream-fred"
version = "0.7.1"
authors = ["RustStream contributors"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Redis / Valkey broker implementation (Streams) for the RustStream messaging framework, backed by fred."
homepage = "https://powersemmi.github.io/ruststream-fred/latest/"
readme = "README.md"
keywords = [
"redis",
"streams",
"messaging",
"broker",
"ruststream",
]
categories = [
"asynchronous",
"network-programming",
]
license = "Apache-2.0"
repository = "https://github.com/powersemmi/ruststream-fred"
[package.metadata.docs.rs]
all-features = true
[features]
asyncapi = ["ruststream/asyncapi"]
credential-provider = ["fred/credential-provider"]
default = []
sentinel-auth = ["fred/sentinel-auth"]
testing = [
"ruststream/testing",
"fred/mocks",
]
tls-native-tls = ["fred/enable-native-tls"]
tls-rustls = ["fred/enable-rustls"]
tls-rustls-ring = ["fred/enable-rustls-ring"]
[lib]
name = "ruststream_fred"
path = "src/lib.rs"
[[example]]
name = "guide_choosing_a_transport"
path = "examples/guide/choosing_a_transport.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_cluster"
path = "examples/guide/cluster.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_consumer_groups"
path = "examples/guide/consumer_groups.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_fan_out"
path = "examples/guide/fan_out.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_getting_started"
path = "examples/guide/getting_started.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_interop"
path = "examples/guide/interop.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_pipelining"
path = "examples/guide/pipelining.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_production"
path = "examples/guide/production.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_replay"
path = "examples/guide/replay.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_retries"
path = "examples/guide/retries.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_testing"
path = "examples/guide/testing.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_transactions"
path = "examples/guide/transactions.rs"
test = true
required-features = ["testing"]
[[example]]
name = "guide_work_queues"
path = "examples/guide/work_queues.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_choosing_a_transport"
path = "examples/manual/guide/choosing_a_transport.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_cluster"
path = "examples/manual/guide/cluster.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_consumer_groups"
path = "examples/manual/guide/consumer_groups.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_fan_out"
path = "examples/manual/guide/fan_out.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_getting_started"
path = "examples/manual/guide/getting_started.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_interop"
path = "examples/manual/guide/interop.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_pipelining"
path = "examples/manual/guide/pipelining.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_production"
path = "examples/manual/guide/production.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_replay"
path = "examples/manual/guide/replay.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_retries"
path = "examples/manual/guide/retries.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_testing"
path = "examples/manual/guide/testing.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_transactions"
path = "examples/manual/guide/transactions.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_guide_work_queues"
path = "examples/manual/guide/work_queues.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_acknowledgement"
path = "examples/manual/redis_acknowledgement.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_acknowledgement_counts"
path = "examples/manual/redis_acknowledgement_counts.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_acknowledgement_dead_letter"
path = "examples/manual/redis_acknowledgement_dead_letter.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_acknowledgement_out_retry"
path = "examples/manual/redis_acknowledgement_out_retry.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_acknowledgement_retries"
path = "examples/manual/redis_acknowledgement_retries.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_asyncapi"
path = "examples/manual/redis_asyncapi.rs"
test = true
required-features = ["asyncapi"]
[[example]]
name = "manual_redis_broker"
path = "examples/manual/redis_broker.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_broker_auth"
path = "examples/manual/redis_broker_auth.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_broker_cluster"
path = "examples/manual/redis_broker_cluster.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_broker_credential_provider"
path = "examples/manual/redis_broker_credential_provider.rs"
test = true
required-features = [
"testing",
"credential-provider",
]
[[example]]
name = "manual_redis_broker_default_group"
path = "examples/manual/redis_broker_default_group.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_broker_errors"
path = "examples/manual/redis_broker_errors.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_broker_from_pool"
path = "examples/manual/redis_broker_from_pool.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_broker_pool"
path = "examples/manual/redis_broker_pool.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_broker_prelude"
path = "examples/manual/redis_broker_prelude.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_broker_sentinel"
path = "examples/manual/redis_broker_sentinel.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_broker_sentinel_auth"
path = "examples/manual/redis_broker_sentinel_auth.rs"
test = true
required-features = [
"testing",
"sentinel-auth",
]
[[example]]
name = "manual_redis_broker_shutdown"
path = "examples/manual/redis_broker_shutdown.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_broker_tls"
path = "examples/manual/redis_broker_tls.rs"
test = true
required-features = [
"testing",
"tls-rustls",
]
[[example]]
name = "manual_redis_context_batch"
path = "examples/manual/redis_context_batch.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_context_consumer_group"
path = "examples/manual/redis_context_consumer_group.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_context_fred_pool"
path = "examples/manual/redis_context_fred_pool.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_context_pubsub"
path = "examples/manual/redis_context_pubsub.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_context_stream"
path = "examples/manual/redis_context_stream.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_lists"
path = "examples/manual/redis_lists.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_lists_processing"
path = "examples/manual/redis_lists_processing.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_pipelining"
path = "examples/manual/redis_pipelining.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_pipelining_atomic"
path = "examples/manual/redis_pipelining_atomic.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_pipelining_commands"
path = "examples/manual/redis_pipelining_commands.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_pipelining_flush"
path = "examples/manual/redis_pipelining_flush.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_pipelining_round"
path = "examples/manual/redis_pipelining_round.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_positions_entry_id"
path = "examples/manual/redis_positions_entry_id.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_positions_position"
path = "examples/manual/redis_positions_position.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_positions_seek"
path = "examples/manual/redis_positions_seek.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_positions_start_at"
path = "examples/manual/redis_positions_start_at.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_publishing"
path = "examples/manual/redis_publishing.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_publishing_default"
path = "examples/manual/redis_publishing_default.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_publishing_list"
path = "examples/manual/redis_publishing_list.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_publishing_partition_key"
path = "examples/manual/redis_publishing_partition_key.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_publishing_pubsub"
path = "examples/manual/redis_publishing_pubsub.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_pubsub"
path = "examples/manual/redis_pubsub.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_pubsub_sharded"
path = "examples/manual/redis_pubsub_sharded.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_streams_claiming"
path = "examples/manual/redis_streams_claiming.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_streams_new"
path = "examples/manual/redis_streams_new.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_streams_reclaim"
path = "examples/manual/redis_streams_reclaim.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_streams_start"
path = "examples/manual/redis_streams_start.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_subscriptions_batches"
path = "examples/manual/redis_subscriptions_batches.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_subscriptions_block"
path = "examples/manual/redis_subscriptions_block.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_subscriptions_framing"
path = "examples/manual/redis_subscriptions_framing.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_subscriptions_name"
path = "examples/manual/redis_subscriptions_name.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_testing"
path = "examples/manual/redis_testing.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_testing_live"
path = "examples/manual/redis_testing_live.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_transactions"
path = "examples/manual/redis_transactions.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_transactions_owned"
path = "examples/manual/redis_transactions_owned.rs"
test = true
required-features = ["testing"]
[[example]]
name = "manual_redis_transactions_transaction"
path = "examples/manual/redis_transactions_transaction.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_acknowledgement"
path = "examples/redis_acknowledgement.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_acknowledgement_counts"
path = "examples/redis_acknowledgement_counts.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_acknowledgement_dead_letter"
path = "examples/redis_acknowledgement_dead_letter.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_acknowledgement_out_retry"
path = "examples/redis_acknowledgement_out_retry.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_acknowledgement_retries"
path = "examples/redis_acknowledgement_retries.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_asyncapi"
path = "examples/redis_asyncapi.rs"
test = true
required-features = ["asyncapi"]
[[example]]
name = "redis_broker"
path = "examples/redis_broker.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_broker_auth"
path = "examples/redis_broker_auth.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_broker_cluster"
path = "examples/redis_broker_cluster.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_broker_credential_provider"
path = "examples/redis_broker_credential_provider.rs"
test = true
required-features = [
"testing",
"credential-provider",
]
[[example]]
name = "redis_broker_default_group"
path = "examples/redis_broker_default_group.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_broker_errors"
path = "examples/redis_broker_errors.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_broker_from_pool"
path = "examples/redis_broker_from_pool.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_broker_pool"
path = "examples/redis_broker_pool.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_broker_prelude"
path = "examples/redis_broker_prelude.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_broker_sentinel"
path = "examples/redis_broker_sentinel.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_broker_sentinel_auth"
path = "examples/redis_broker_sentinel_auth.rs"
test = true
required-features = [
"testing",
"sentinel-auth",
]
[[example]]
name = "redis_broker_shutdown"
path = "examples/redis_broker_shutdown.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_broker_tls"
path = "examples/redis_broker_tls.rs"
test = true
required-features = [
"testing",
"tls-rustls",
]
[[example]]
name = "redis_context_batch"
path = "examples/redis_context_batch.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_context_consumer_group"
path = "examples/redis_context_consumer_group.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_context_fred_pool"
path = "examples/redis_context_fred_pool.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_context_pubsub"
path = "examples/redis_context_pubsub.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_context_stream"
path = "examples/redis_context_stream.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_lists"
path = "examples/redis_lists.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_lists_processing"
path = "examples/redis_lists_processing.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_pipelining"
path = "examples/redis_pipelining.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_pipelining_atomic"
path = "examples/redis_pipelining_atomic.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_pipelining_commands"
path = "examples/redis_pipelining_commands.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_pipelining_flush"
path = "examples/redis_pipelining_flush.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_pipelining_round"
path = "examples/redis_pipelining_round.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_positions_entry_id"
path = "examples/redis_positions_entry_id.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_positions_position"
path = "examples/redis_positions_position.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_positions_seek"
path = "examples/redis_positions_seek.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_positions_start_at"
path = "examples/redis_positions_start_at.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_publishing"
path = "examples/redis_publishing.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_publishing_default"
path = "examples/redis_publishing_default.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_publishing_list"
path = "examples/redis_publishing_list.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_publishing_partition_key"
path = "examples/redis_publishing_partition_key.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_publishing_pubsub"
path = "examples/redis_publishing_pubsub.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_pubsub"
path = "examples/redis_pubsub.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_pubsub_sharded"
path = "examples/redis_pubsub_sharded.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_streams_claiming"
path = "examples/redis_streams_claiming.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_streams_new"
path = "examples/redis_streams_new.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_streams_reclaim"
path = "examples/redis_streams_reclaim.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_streams_start"
path = "examples/redis_streams_start.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_subscriptions_batches"
path = "examples/redis_subscriptions_batches.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_subscriptions_block"
path = "examples/redis_subscriptions_block.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_subscriptions_framing"
path = "examples/redis_subscriptions_framing.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_subscriptions_name"
path = "examples/redis_subscriptions_name.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_testing"
path = "examples/redis_testing.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_testing_live"
path = "examples/redis_testing_live.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_transactions"
path = "examples/redis_transactions.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_transactions_owned"
path = "examples/redis_transactions_owned.rs"
test = true
required-features = ["testing"]
[[example]]
name = "redis_transactions_transaction"
path = "examples/redis_transactions_transaction.rs"
test = true
required-features = ["testing"]
[[test]]
name = "adopted_pool"
path = "tests/adopted_pool.rs"
[[test]]
name = "asyncapi"
path = "tests/asyncapi.rs"
[[test]]
name = "block_order"
path = "tests/block_order.rs"
[[test]]
name = "both_modes_fred"
path = "tests/both_modes_fred.rs"
[[test]]
name = "claiming"
path = "tests/claiming.rs"
[[test]]
name = "cluster_transactions"
path = "tests/cluster_transactions.rs"
[[test]]
name = "conformance_fred"
path = "tests/conformance_fred.rs"
[[test]]
name = "conformance_suites"
path = "tests/conformance_suites.rs"
[[test]]
name = "connect_runtime"
path = "tests/connect_runtime.rs"
[[test]]
name = "deferred_retry"
path = "tests/deferred_retry.rs"
[[test]]
name = "fred_pool"
path = "tests/fred_pool.rs"
[[test]]
name = "harness_manual"
path = "tests/harness_manual.rs"
[[test]]
name = "in_process_fred"
path = "tests/in_process_fred.rs"
[[test]]
name = "integration_claiming"
path = "tests/integration_claiming.rs"
[[test]]
name = "integration_fred"
path = "tests/integration_fred.rs"
[[test]]
name = "integration_pipeline"
path = "tests/integration_pipeline.rs"
[[test]]
name = "integration_pubsub"
path = "tests/integration_pubsub.rs"
[[test]]
name = "integration_redelivery"
path = "tests/integration_redelivery.rs"
[[test]]
name = "pipeline_batch"
path = "tests/pipeline_batch.rs"
[[test]]
name = "pipeline_bind"
path = "tests/pipeline_bind.rs"
[[test]]
name = "pipeline_list"
path = "tests/pipeline_list.rs"
[[test]]
name = "pipeline_pubsub"
path = "tests/pipeline_pubsub.rs"
[[test]]
name = "pipeline_stream"
path = "tests/pipeline_stream.rs"
[[test]]
name = "preludes"
path = "tests/preludes.rs"
[[test]]
name = "publish_options"
path = "tests/publish_options.rs"
[[test]]
name = "reconnect_live"
path = "tests/reconnect_live.rs"
[[test]]
name = "redelivery_per_form"
path = "tests/redelivery_per_form.rs"
[[test]]
name = "retry_declaration"
path = "tests/retry_declaration.rs"
[[test]]
name = "routes"
path = "tests/routes.rs"
[[test]]
name = "secrets"
path = "tests/secrets.rs"
[[test]]
name = "testing_default_group"
path = "tests/testing_default_group.rs"
[[test]]
name = "testing_forms"
path = "tests/testing_forms.rs"
[dependencies.bytes]
version = "1"
[dependencies.fred]
version = "10"
features = [
"i-scripts",
"i-client",
]
[dependencies.futures]
version = "0.3"
[dependencies.ruststream]
version = "0.7"
default-features = false
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"macros",
"sync",
"time",
"signal",
]
[dependencies.tracing]
version = "0.1.36"
[dependencies.url]
version = "2.4"
[dev-dependencies.async-trait]
version = "0.1.77"
[dev-dependencies.ruststream]
version = "0.7"
features = [
"asyncapi",
"conformance",
"testing",
"macros",
"json",
"cbor",
"msgpack",
]
default-features = false
[dev-dependencies.serde]
version = "1"
features = ["derive"]
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"macros",
"sync",
"time",
"signal",
"rt-multi-thread",
"macros",
"sync",
"time",
]
[lints.clippy]
missing_const_for_fn = "allow"
module_name_repetitions = "allow"
multiple_crate_versions = "allow"
redundant_pub_crate = "allow"
[lints.clippy.cargo]
level = "warn"
priority = -1
[lints.clippy.correctness]
level = "deny"
priority = -1
[lints.clippy.nursery]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.clippy.perf]
level = "deny"
priority = -1
[lints.clippy.suspicious]
level = "deny"
priority = -1
[lints.rust]
missing_debug_implementations = "warn"
missing_docs = "deny"
unreachable_pub = "deny"
unsafe_op_in_unsafe_fn = "deny"
unused_qualifications = "warn"