forked from felixmosh/bull-board
-
Notifications
You must be signed in to change notification settings - Fork 0
/
example.js
66 lines (53 loc) · 1.87 KB
/
example.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const { setQueues, router } = require('./dist/index')
const { Queue: QueueMQ, Worker } = require('bullmq')
const Queue3 = require('bull')
const app = require('express')()
const sleep = t => new Promise(resolve => setTimeout(resolve, t * 1000))
const redisOptions = {
port: 6379,
host: 'localhost',
password: '',
tls: false,
}
const createQueue3 = name => new Queue3(name, { redis: redisOptions })
const createQueueMQ = name => new QueueMQ(name, { connection: redisOptions })
const run = () => {
const exampleBullName = 'ExampleBull'
const exampleBull = createQueue3(exampleBullName)
const exampleBullMqName = 'ExampleBullMQ'
const exampleBullMq = createQueueMQ(exampleBullMqName)
setQueues([exampleBullMq])
exampleBull.process(async job => {
for (let i = 0; i <= 100; i++) {
await sleep(Math.random())
job.progress(i)
if (Math.random() * 200 < 1) throw new Error(`Random error ${i}`)
}
})
new Worker(exampleBullMqName, async job => {
for (let i = 0; i <= 100; i++) {
await sleep(Math.random())
await job.updateProgress(i)
if (Math.random() * 200 < 1) throw new Error(`Random error ${i}`)
}
})
app.use('/add', (req, res) => {
const opts = req.query.opts || {};
exampleBull.add({ title: req.query.title }, opts)
exampleBullMq.add('Add', { title: req.query.title }, opts)
res.json({
ok: true,
})
})
app.use('/ui', router)
app.listen(3000, () => {
console.log('Running on 3000...')
console.log('For the UI, open http://localhost:3000/ui')
console.log('Make sure Redis is running on port 6379 by default')
console.log('To populate the queue, run:')
console.log(' curl http://localhost:3000/add?title=Example')
console.log('To populate the queue with custom options (opts), run:')
console.log(' curl http://localhost:3000/add?title=Test&opts[delay]=900')
})
}
run()