프로젝트 소개
BullMQ는 Node.js, Python, .NET, Elixir, Rust, PHP를 위해 설계된 고성능 Redis 기반 분산 메시지 큐 및 배치 처리 라이브러리입니다. 견고한 안정성과 원자성을 목표로 구축되어, 신뢰할 수 있는 백그라운드 작업 처리가 필요한 프로덕션 환경에 적합합니다.
이 라이브러리는 여러 언어로 네이티브 구현을 제공하며, 각각 별도의 패키지로 제공됩니다: Node.js/Bun용 `npm install bullmq`, Python용 `pip install bullmq`, Rust용 `cargo add bullmq-official`, Elixir용 `{:bullmq, "~> x.x"}`, .NET용 `dotnet add package BullMQ`, 그리고 전용 PHP 패키지가 있습니다. 다른 플랫폼의 경우 BullMQ Proxy를 사용할 수 있습니다.
핵심 기능으로는 FlowProducer를 통한 부모-자식 작업 의존성이 있으며, 이를 통해 서로 다른 큐에서 루트, 자식, 손자 작업으로 구성된 복잡한 작업 트리를 구축할 수 있습니다. 중복 제거는 디바운싱과 스로틀링 패턴을 모두 지원합니다. 작업은 우선순위를 지정하거나, 지연시키거나, 일정에 따라 반복하거나, 구성 가능한 동시성으로 처리할 수 있습니다. 속도 제한은 큐 수준에서 사용 가능하며, 큐를 일시 중지 및 재개할 수 있습니다. 원자적 연산은 데이터 일관성을 보장하며, 모든 작업은 Redis에 영구 저장됩니다.
BullMQ는 완료 및 실패와 같은 작업 수명 주기 이벤트를 모니터링하기 위한 전역 이벤트도 지원합니다. 격리된 작업 실행을 위한 샌드박스 워커 옵션도 제공됩니다. 이 프로젝트는 Bull, Kue, Bee, Agenda와 같은 다른 작업 큐 솔루션과의 기능 비교 표를 포함하여 BullMQ의 더 넓은 기능 세트를 강조합니다.
공식 프론트엔드는 Taskforce.sh를 통해 제공되며, 큐를 검사하고, 작업을 검색 및 재시도하고, 지연된 작업을 승격하고, 메트릭과 통계를 볼 수 있는 전문 대시보드를 제공합니다. 이 프로젝트는 오픈 소스이며 활발한 커뮤니티 기여가 있으며, 후원자에는 BullMQ 워크로드에 최적화된 Redis 호환 대체 제품인 DragonflyDB가 포함됩니다.
BullMQ를 사용하는 주요 조직으로는 Microsoft(Lage를 통해), Vendure, Datawrapper, NestJS, Langfuse, Curri, Novu, NocoDB, Infisical이 있습니다. 이 프로젝트는 자동 버전 관리를 위해 semantic-release를 사용합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.