redis 를 이용한 node js 메시지 큐 라이브러리이다.
메시지 큐를 이용한 디바운스 로직을 구현 할 일이 생겨
node js bee-queue 라이브러리 사용법을 정리 해보고자 한다.
npm i bee-queue
bee-queue 생성시 첫번재 인자로 큐의 이름을 넣어준다.
const queue = new Queue('queue');
bee-queue 생성시 두번째 인자로 옵션을 지정 해 줄 수 있다.
activateDelayedJobs 인자를 true 로 설정해서
enqueue 와 message processing 사이에 delay 를 줄 수 있다.
필자는 메시지 큐를 사용한 디바운스 로직을 구현 하기 위해
activateDelayedJobs 필드를 true 로 설정 하였다.
const queue = new Queue('queue', {
redis: {
host: 'somewhereElse',
},
activateDelayedJobs: true
});
const job = queue.createJob({x: 2, y: 3});
await job
.delayUntil(Date.now() + 5000)
.save()
createJob 메소드를 사용 하여
메시지 큐에 적재할 job 을 생성 하였고,
delayUntil 메서드를 사용하여
enqueue 와 message processing 사이에 delay 를 설정 해주었다.
또한 save() 메서드를 사용해 promise 를 반하도록 할 수 있다.
queue 의 job 메소드를 사용해 메시지를 processing 할 수 있다.
queue.process((job) => { // job.data 에 메시지 내용이 들어 있다.
// do some work with job message
});
다음과 같이 async 함수를 이용해 메시지의 비동기적인 처리도 가능하고
queue.process(async (job) => {
// do some work with job message
});
다음과 같이 한번에 처리할 메시지 개수를 설정 해주는 것도 가능하다.
queue.process(10 ,(job) => {
// do some work with job message
});