Skip to content

Release v0.15.0

Latest

Choose a tag to compare

@github-actions github-actions released this 15 Jun 13:34

v0.15.0 - 2026-06-15

Tiered Storage, Pipelined Dispatch & Configurable Flow Control

This release delivers enterprise-grade durability and significantly higher throughput for reliable subscriptions. Messages are now protected by a three-tier storage architecture (WAL → Valkey → Cloud), dispatchers pipeline multiple messages in-flight instead of one-at-a-time, and operators can tune flow control per subscription via config or admin API.

🔒 Tiered Storage & Crash Recovery

  • Valkey write buffer (#229, #230, #231, #232) — Messages are double-written to Valkey Redis Streams alongside the local WAL. On broker crash, uncommitted messages are automatically replayed from Valkey, achieving RPO ≈ 0 without making brokers stateful. by @danrusei in 366103a, 76de6a3, 5685b09, 9e27ea2

  • Hot/Warm/Cold tiered reads (#233, #234) — Consumers seamlessly read across tiers: recent data from the WAL (hot), cached data from Valkey (warm), and historical data from cloud storage (cold). Late-joining consumers and post-crash recovery benefit from warm reads without falling back to expensive cloud fetches. by @danrusei in c83c4f4, c13da87

  • Storage trait decoupling (#228) — Broker internals now program against a PersistentStorage trait instead of concrete WalStorage, enabling pluggable storage backends. by @danrusei in acc83a3

⚡ Pipelined Dispatch

  • Multi-message in-flight window (#235) — Reliable Exclusive, Shared, and Key-Shared dispatchers now pipeline multiple messages to consumers without waiting for individual acknowledgments. Out-of-order ACKs are tracked safely; the broker advances progress only past contiguously acknowledged offsets, preserving at-least-once delivery guarantees. by @danrusei in 87351ee

  • Configurable max_unacked_messages — Operators control the pipelining depth (default: 10, range: 1–10,000) via the dispatch: config section. Per-subscription overrides are available through the admin API (set-dispatch-config / get-dispatch-config), allowing fine-tuning for different workloads without restarting the broker.

Release Notes - Binaries

Danube Broker:

Client CLI:

Admin (CLI + Server):

Checksums:

Docker Images:

  • Danube Broker: ghcr.io/danube-messaging/danube-broker:v0.15.0
  • Danube CLI: ghcr.io/danube-messaging/danube-cli:v0.15.0
  • Danube Admin: ghcr.io/danube-messaging/danube-admin:v0.15.0

Quick Start with Docker:

# Run Danube Broker
docker run -p 6650:6650 ghcr.io/danube-messaging/danube-broker:v0.15.0

# Use Danube CLI (client operations)
docker run --rm ghcr.io/danube-messaging/danube-cli:v0.15.0 danube-cli produce --help

# Use Danube Admin CLI (admin commands)
docker run --rm ghcr.io/danube-messaging/danube-admin:v0.15.0 brokers list

# Run Danube Admin Server (HTTP API for UI)
docker run -p 8080:8080 ghcr.io/danube-messaging/danube-admin:v0.15.0 serve \
  --broker-endpoint host.docker.internal:50051 \
  --prometheus-url http://host.docker.internal:9090

# Use with Docker Compose
curl -O https://raw.githubusercontent.com/danube-messaging/danube/main/docker/quickstart/docker-compose.yml
docker-compose up -d

Install from Archive:

# Linux
curl -LsS https://github.com/danube-messaging/danube/releases/download/v0.15.0/danube-broker-v0.15.0-x86_64-unknown-linux-gnu.tar.gz | tar xz
sudo mv danube-broker /usr/local/bin/

# macOS (Apple Silicon)
curl -LsS https://github.com/danube-messaging/danube/releases/download/v0.15.0/danube-broker-v0.15.0-aarch64-apple-darwin.tar.gz | tar xz
sudo mv danube-broker /usr/local/bin/

# Windows (PowerShell)
Invoke-WebRequest -Uri https://github.com/danube-messaging/danube/releases/download/v0.15.0/danube-broker-v0.15.0-x86_64-pc-windows-msvc.zip -OutFile danube-broker.zip
Expand-Archive danube-broker.zip -DestinationPath .
Move-Item danube-broker.exe C:\Windows\System32\

Verify Downloads:

curl -LO https://github.com/danube-messaging/danube/releases/download/v0.15.0/checksums.txt
sha256sum -c checksums.txt --ignore-missing