Skip to content

Messaging Infrastructure

Queue Management with BullMQ

Overview

We use BullMQ for job queuing and processing, providing:

  • Horizontal scaling capabilities
  • Message replay and retry mechanisms
  • Distributed job processing
  • Redis as the backend storage

Queue Monitoring

BullBoard URLs

Important Notes

  • Adding a new queue requires a BullBoard service restart
  • Jobs are created and processed using BullMQ
  • Limitation:
    • Consumer groups feature is NOT available (paid feature)
    • 1 will be consumed once, meaning we CAN'T currently gave 2 separate process consuming the same message for two different tasks

Job Processing

Retry Mechanisms

  • Retry configuration can be customized per processor
  • Default retry strategies can be configured
  • Supports backoff and custom error handling

Best Practices

  • Design idempotent job processors
  • Use appropriate retry and backoff strategies
  • Monitor queue performance and job statuses
  • Handle potential race conditions and duplicates
  • Create types for Jobs inputs and outputs

Infrastructure Details

  • Backend: Redis
  • Queue Management: BullMQ
  • Monitoring: BullBoard

Future Improvements

  • Explore advanced consumer group strategies
  • Enhance job monitoring and alerting
  • Investigate more sophisticated retry mechanisms