|
The Problem
Enterprise Go apps typically use multiple message queues: RabbitMQ for reliability, Kafka for streaming, SQS for cloud, NATS for microservices, Redis for caching. Each has different APIs, error handling, and testing strategies. Result: Teams spend months learning 6+ SDKs instead of building features. Migration = complete rewrites. The Solution
mqutils provides one unified API for 6 major message queue systems. Same code, different URL: // Switch systems by changing URL only
consumer, err := mqutils.NewConsumer("amqp://localhost:5672/orders")
consumer, err := mqutils.NewConsumer("kafka://localhost:9092/orders")
consumer, err := mqutils.NewConsumer("sqs://us-east-1/orders") // Same handler code works everywhere
consumer.RegisterHandler("process", func(msg types.Message) error {
return processOrder(msg.Body())
})
Why It's Different
Not just another wrapper. Production-grade features built-in: Health monitoring across all 6 systems
Batch processing with configurable timeouts
Graceful shutdown with proper cleanup
Context propagation for distributed tracing
Thread-safe operations with race condition prevention
Performance: 100K+ msg/sec, <10ms P99 latency, 99.9% uptime in production. Supported Systems
AMQP/RabbitMQ (amqp://)
Apache Kafka (kafka://)
NATS Core/JetStream (nats://, jetstream://)
AWS SQS (sqs://)
GCP Pub/Sub (pubsub://)
Redis Pub/Sub & Streams (redis://, redisstream://) |