Skip to content

Commit 9a601bb

Browse files
committed
refactor: add dedicated consumer entrypoint and graceful shutdown
1 parent 26ed7e9 commit 9a601bb

3 files changed

Lines changed: 38 additions & 29 deletions

File tree

apps/consumer/index.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
const dotenv = require('dotenv');
2+
dotenv.config({ path: require('path').join(__dirname, '../../.env') });
3+
4+
const { validateEnv } = require('@urbackend/common');
5+
6+
if (process.env.NODE_ENV !== 'test') {
7+
validateEnv();
8+
}
9+
10+
const { initExportWorker } = require('./src/workers/export.worker');
11+
12+
const { connectDB } = require('@urbackend/common');
13+
14+
(async () => {
15+
try {
16+
await connectDB();
17+
18+
const worker = initExportWorker();
19+
20+
console.log('[CONSUMER] Export worker started and listening for jobs...');
21+
22+
const shutdown = async () => {
23+
console.log('Shutting down worker...');
24+
await worker.close();
25+
process.exit(0);
26+
};
27+
28+
process.on('SIGINT', shutdown);
29+
process.on('SIGTERM', shutdown);
30+
31+
} catch (err) {
32+
console.error('Failed to start worker:', err);
33+
process.exit(1);
34+
}
35+
})();

apps/consumer/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"description": "",
55
"main": "src/app.js",
66
"scripts": {
7-
"dev": "node src/exportWorker.js",
8-
"start": "node src/exportWorker.js",
7+
"dev": "node index.js",
8+
"start": "node index.js",
99
"test": "jest --testPathPatterns=src/"
1010
},
1111
"keywords": [],

apps/consumer/src/exportWorker.js renamed to apps/consumer/src/workers/export.worker.js

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
const dotenv = require('dotenv');
2-
dotenv.config({ path: require('path').join(__dirname, '../../../.env') });
3-
41
const { Worker } = require('bullmq');
5-
const mongoose = require('mongoose')
62
const fs = require('fs');
73
const path = require('path');
84
const os = require('os');
5+
96
const {
107
redis,
118
exportQueue,
@@ -17,12 +14,6 @@ const {
1714
getBucket
1815
} = require('@urbackend/common');
1916

20-
const { validateEnv } = require('@urbackend/common');
21-
22-
if (process.env.NODE_ENV !== 'test') {
23-
validateEnv();
24-
}
25-
2617
const initExportWorker = () => {
2718
const worker = new Worker(exportQueue.name, async (job) => {
2819
const { projectId, userId, email } = job.data;
@@ -109,21 +100,4 @@ const initExportWorker = () => {
109100
return worker;
110101
};
111102

112-
if (require.main === module) {
113-
114-
const { connectDB } = require('@urbackend/common');
115-
116-
(async () => {
117-
try {
118-
await connectDB();
119-
120-
initExportWorker();
121-
122-
console.log('[CONSUMER] Export worker started and listening for jobs...');
123-
} catch (err) {
124-
console.error('Failed to start worker:', err);
125-
process.exit(1);
126-
}
127-
})();
128-
}
129103
module.exports = { initExportWorker };

0 commit comments

Comments
 (0)