
BullQueue란 Node.js에서 사용하는 Redis 기반 분산 작업 큐로 분산 환경에서 작업을 처리하고 관리할 수 있다.
비동기 작업을 큐에 추가하여 처리할 수 있으며, 이러한 작업은 백그라운드에서 실행되고 FIFO 방식에 따라 순서대로 처리된다.
Node.js에서는 @node_modules/bull package를 제공한다.
BullQueue는 Redis를 메시지 브로커로 사용하여 작업 대기열을 관리한다.
Redis는 메모리 기반의 데이터 저장소로서 속도가 빠르고, PUB/SUB(Publish/Subscribe) 메커니즘을 지원합니다. BullQueue는 이러한 Redis의 특성과 기능을 활용하여 작업의 상태, 데이터, 우선순위 등을 저장하고 관리합니다.
BullQueue는 Redis의 키-값 저장소를 활용하여 작업 정보를 저장하고, Redis의 리스트나 셋 등의 데이터 구조를 사용하여 작업 대기열을 구성합니다. 작업을 추가하면 해당 작업은 Redis에 저장되고, 작업자는 Redis에서 작업을 가져와 처리합니다. 작업의 상태 변경이나 진행 상황 업데이트는 Redis를 통해 이루어집니다.

- 1. 서버 실행 시 consumer에서 Bull 생성, Processor 설정
- 2. Unity Client에서 작업 처리 요청 → 요청에 해당하는 Queue에 작업 addQueue()
- 3. Queue에 추가된 작업을 processor에서 처리
- 4. 처리가 완료되면 서버 로직에서 해당 값을 가공
- 5. 동시성 제어를 적용한 값을 Clinet에 전송
- 이메일 전송
- 대량 이메일 전송 작업을 분산 처리.
- 이미지/비디오 처리
- 이미지 리사이징이나 비디오 인코딩 작업을 비동기로 처리.
- 데이터 분석
- 데이터를 큐에 넣고 비동기로 분석 작업 수행.
- 스케줄링
- 크론 작업(cron jobs)처럼 특정 시간에 반복 작업 실행.