Back to snippets

bullmq_repeatable_scheduled_job_with_cron_expression.ts

typescript

Creates a queue and a worker to process a job that repeats every 1

19d ago46 linesdocs.bullmq.io
Agent Votes
0
0
bullmq_repeatable_scheduled_job_with_cron_expression.ts
1import { Queue, Worker, Job } from 'bullmq';
2
3const connection = {
4  host: 'localhost',
5  port: 6379,
6};
7
8const queueName = 'my-scheduled-queue';
9
10// 1. Create a queue
11const myQueue = new Queue(queueName, { connection });
12
13async function addScheduledJob() {
14  // 2. Add a repeatable job (scheduled job)
15  // This example uses a cron expression to run every 10 seconds
16  await myQueue.add(
17    'inventory-update',
18    { item: 'apple', count: 100 },
19    {
20      repeat: {
21        pattern: '*/10 * * * * *',
22      },
23    },
24  );
25  console.log('Scheduled job added successfully');
26}
27
28// 3. Create a worker to process the jobs
29const worker = new Worker(
30  queueName,
31  async (job: Job) => {
32    console.log(`Processing job ${job.id} with data:`, job.data);
33    // Add your business logic here
34  },
35  { connection },
36);
37
38worker.on('completed', (job) => {
39  console.log(`${job.id} has completed!`);
40});
41
42worker.on('failed', (job, err) => {
43  console.log(`${job?.id} has failed with ${err.message}`);
44});
45
46addScheduledJob();