Skip to content

v1.5.0: Enterprise Features, Resiliency, and Dashboard Revamp

Choose a tag to compare

@github-actions github-actions released this 18 Jun 21:00
· 11 commits to main since this release

Added

  • Dead Letter Queues (DLQ): Introduced automatic isolation for "poison pill" messages. Messages that fail to process 3 times via the SDK are now safely routed to a {topic}.dlq queue to prevent pipeline blocking.
  • Time-Based Routing (TTL & Delay): Added native support for scheduled messages (?delay=X) and Lazy Expiration (?ttl=X) without introducing background polling threads.
  • Consumer Batching / Prefetch: Implemented multi-message extraction (?limit=X). Consumers can now fetch arrays of messages in a single HTTP request, drastically reducing network overhead.
  • Broadcast Mode (Fan-out): Added ephemeral pub/sub capabilities (?broadcast=true) to dispatch a single event to multiple independent consumers simultaneously.
  • Push Consumers (Webhooks): Implemented native passive integration. The broker can now be configured (/webhook/{topic}) to automatically POST new messages to external URLs (Fire-and-Forget).
  • Manual Topic Creation: Added a secure API endpoint (/api/topics) to pre-initialize topics safely, enforcing alphanumeric regex validation and idempotency.

Changed

  • Interactive Dashboard: Completely revamped the embedded UI (/dashboard). It now features Vanilla JS Auto-Refresh, Uptime tracking, Webhook indicators, DLQ badges, and a manual topic creation interface—all remaining under 1KB of JS/CSS.
  • Go SDK (client/client.go): Upgraded the worker subscription model. It now handles exponential backoff (1s to 32s) and automatically calls the new /requeue endpoint when a handler returns an error to preserve the retry count.
  • Core Engine: Refactored the internal Publish and Consume methods to support arrays, batching, and delayed message skipping without locking the global mutex.
  • Documentation: Fully updated README.md and DOCUMENTATION.md to reflect the new enterprise-grade features while retaining the ~25MB image size and zero-dependency promises.