A Go library providing producer and consumer implementations for Redis streams-based message queues.
redisqueue is a Go library that implements a producer and consumer pattern for message queues using Redis streams. It solves the problem of reliable asynchronous task processing by guaranteeing at-least-once delivery and providing built-in mechanisms for error handling, concurrency control, and graceful shutdown.
Go developers building applications that require background job processing, task queues, or asynchronous message handling with Redis as the backing store.
Developers choose redisqueue because it offers production-ready reliability features out of the box, including visibility timeouts, panic recovery, and graceful signal handling, while maintaining a simple API and extensive configurability for complex use cases.
redisqueue provides a producer and consumer of a queue that uses Redis streams
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Guarantees message processing by claiming and acknowledging only after successful handling, preventing data loss as highlighted in the README.
Handles Unix signals (SIGINT, SIGTERM) to allow in-flight messages to complete before termination, ensuring reliable operation in production.
Offers configurable goroutine spawning and batch size settings to manage parallel processing efficiently, as shown in ConsumerOptions.
Automatically reassigns unprocessed messages within a set time frame to other consumers, enhancing fault tolerance and reliability.
Prevents the entire process from crashing due to panics in message handlers, maintaining system stability as described in the features.
Tightly coupled with Redis streams, limiting flexibility for teams that avoid Redis or need multi-protocol support like AMQP.
Lacks native support for delayed or scheduled messages, a common feature in other queue systems, requiring custom workarounds.
Extensive options for streams, concurrency, and timeouts might require careful tuning, increasing setup overhead for simple use cases.