Skip to main content

simplebroker-redis

Valkey/Redis backend extension for SimpleBroker.

This package exposes the public SimpleBroker backend name redis. It targets Valkey 7.x and Redis 7.x and the test suite runs against Valkey.

Requirements

  • Python 3.11+
  • Valkey 7.x or Redis 7.x

Durability depends on the server configuration. A Valkey or Redis deployment without AOF/RDB persistence can lose messages on restart. Use SQLite or Postgres when you need storage durability from the broker stack by default.

Regular broker commands use a redis-py BlockingConnectionPool owned by the process-local Redis runner. Pub/Sub wake hints use a separate dedicated connection because subscribed Redis connections cannot serve normal commands.

Pool defaults:

  • max_connections = 50
  • pool_timeout = BROKER_BUSY_TIMEOUT / 1000

The defaults can be overridden in project backend options:

[backend_options]
namespace = "simplebroker_redis_v1"
max_connections = 50
pool_timeout = 5.0

Pool exhaustion is bounded by pool_timeout and surfaces as an operational error from broker operations.

Alias creation validates the live alias map and publishes the alias plus its version in one Lua operation. New aliases must remain flat in either creation order. A canonical target may have no messages or existing rows; it only needs valid queue-name syntax. Legacy invalid rows remain available for one-hop lookup and removal and are not rewritten automatically.

Concurrency semantics

Queue deletion is atomic per queue. delete() first snapshots the queue registry, then one Lua invocation per selected queue rechecks active at-least-once reservations and removes that queue's pending, claimed, body, and global-ID state together. A queue created after the registry snapshot is outside the operation and is not deleted. If a reservation starts between per-queue invocations, deletion stops with an error; queues already processed remain deleted, while that reserved queue and later queues remain intact.

Patternless broadcast() selects the current queue registry and inserts every copy in one Lua invocation. A queue cannot be missed or resurrected by a concurrent write or deletion that commits before that invocation. Activity notifications and maintenance accounting run after the atomic insert commits.

Exact-target broadcast(..., queue_names=...) also intersects the requested literal names with the registry and inserts all copies in one Lua invocation. Missing names are ignored and not created. A requested queue deleted before the script selects targets is not resurrected; an all-missing request returns zero without advancing persisted last_ts, publishing wakeups, or scheduling maintenance.

Python create_missing=True changes exact selection to the complete requested set. The script validates all anticipated failures before its first mutation, then adds missing names to the registry and inserts every message in one non-interleaved Lua phase. A queue deleted before that phase is intentionally recreated.

Patterned broadcasts deliberately keep a client-side queue snapshot so their matching stays exactly Python fnmatchcase syntax. A queue created after the snapshot can miss that broadcast; a queue deleted after the snapshot can be recreated by it. Use a patternless or exact-target broadcast when atomic registry selection is required.

Exact-target broadcast requires backend API v5: SimpleBroker 5.6.1 or newer and simplebroker-redis 3.3.1 or newer.

Core Compatibility

This first-party extension moves in lockstep with the SimpleBroker backend seam, although the core and extension package version numbers do not match. The extension declares its backend API version independently, and SimpleBroker checks that handshake when it resolves the plugin. An incompatible pair fails at backend resolution with upgrade-or-pin guidance instead of running against an unknown interface. The backend API version is separate from the Redis storage schema version and is not stored in Redis.

Use core and extension releases published together. The package dependency is an install-time minimum; the runtime handshake is the authoritative interface check. Install the extension through the core release's redis extra. See the backend authoring guide for the handshake boundary.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simplebroker_redis-3.5.2.tar.gz (27.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simplebroker_redis-3.5.2-py3-none-any.whl (34.5 kB view details)

Uploaded Python 3

File details

Details for the file simplebroker_redis-3.5.2.tar.gz.

File metadata

  • Download URL: simplebroker_redis-3.5.2.tar.gz
  • Upload date:
  • Size: 27.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for simplebroker_redis-3.5.2.tar.gz
Algorithm Hash digest
SHA256 8e62e78df6e64663ed0188139143403946fcea15ee9f6e944bbea85106d83c16
MD5 b219a3972b1bfcad2b6b061ca8d4e694
BLAKE2b-256 c07ec8e3bc0ccee84a372b61fab3d8f16cd59f4f1a8ae7e4317108f2e9cf5327

See more details on using hashes here.

Provenance

The following attestation bundles were made for simplebroker_redis-3.5.2.tar.gz:

Publisher: release-gate-redis.yml on VanL/simplebroker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file simplebroker_redis-3.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for simplebroker_redis-3.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 95f4a07ffbee6e723ffed560409a9614d8e0faaa4aaa081a16ee5c0d8bdd11bd
MD5 7039573738bb0bee1401a7d35943f179
BLAKE2b-256 e4f27ea5de42b61fcd8e23e6792e872de8ae260231d6be3e6c3e886bb83edc8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for simplebroker_redis-3.5.2-py3-none-any.whl:

Publisher: release-gate-redis.yml on VanL/simplebroker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

3.9.1

2 files

3.9.0

2 files

3.8.0

2 files

3.6.0

2 files

This release

3.5.2 This release

2 files

3.5.1

2 files

3.5.0

2 files

3.3.2

2 files

3.3.1

2 files

3.3.0

2 files

3.2.3

2 files

3.2.2

2 files

3.2.1

2 files

3.2.0

2 files

3.1.1

2 files

3.1.0

2 files

3.0.2

2 files

3.0.0

2 files

2.7.0

2 files

2.6.0

2 files

2.5.0

2 files

2.4.1

2 files

2.4.0

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

2 files

2.1.0

2 files

2.0.1

2 files

2.0.0

2 files

1.1.1

2 files

1.1.0

2 files

1.0.1

2 files

1.0.0

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page