A Redis-backed message queue system written in Go, featuring consumer lifecycle management, batch processing, and retry mechanisms.
rmq is a message queue system written in Go that uses Redis for storage, enabling asynchronous task processing and reliable message delivery. It solves the need for a lightweight, scalable queueing solution with features like consumer management, batch processing, and automatic retries.
Go developers building distributed systems or microservices that require background job processing, task queues, or asynchronous message handling.
Developers choose rmq for its simplicity, tight integration with Redis, and comprehensive features like error handling, testing utilities, and queue maintenance tools, all within a native Go ecosystem.
Message queue system written in Go and backed by Redis
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages Redis for fast and reliable message storage, with support for both TCP and Unix socket connections, as shown in the connection setup examples in the README.
Includes background error monitoring and retry mechanisms for acknowledgments, preventing data loss by gracefully handling Redis errors through error channels, detailed in the 'Background Errors' section.
Comes with mock connections (TestConnection) and test deliveries (TestDelivery), simplifying unit and integration testing for producers and consumers without a real Redis instance.
Supports batch consumers for efficient bulk processing and push queues for automatic retry chains, enhancing scalability and fault tolerance, as demonstrated in the advanced usage examples.
Tied exclusively to Redis, which might not suit teams using other storage backends or needing features beyond Redis's capabilities, such as built-in message brokering or advanced persistence options.
Requires careful handling of background errors via error channels, and if not managed properly, can lead to data loss or double deliveries, as admitted in the README's warnings about cleanup and acknowledgment retries.
Compared to established message queues like RabbitMQ or Kafka, rmq has a smaller community and fewer third-party integrations, which could affect long-term support, tooling, and documentation updates.
The README explicitly warns that switching between single Redis and Redis cluster connections is unsafe and can lead to data loss, indicating potential migration challenges and vendor lock-in to specific Redis setups.