add services/worker/src/index.js
This commit is contained in:
parent
b2d0072104
commit
1a1f34a468
1 changed files with 50 additions and 0 deletions
50
services/worker/src/index.js
Normal file
50
services/worker/src/index.js
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
import 'dotenv/config';
|
||||
import { Worker } from 'bullmq';
|
||||
import { proxyWorker } from './workers/proxy.js';
|
||||
import { thumbnailWorker } from './workers/thumbnail.js';
|
||||
import { conformWorker } from './workers/conform.js';
|
||||
|
||||
const parseRedisUrl = (url) => {
|
||||
const parsed = new URL(url);
|
||||
return {
|
||||
host: parsed.hostname,
|
||||
port: parseInt(parsed.port, 10),
|
||||
password: parsed.password || undefined,
|
||||
};
|
||||
};
|
||||
|
||||
const redisOptions = parseRedisUrl(process.env.REDIS_URL || 'redis://localhost:6379');
|
||||
|
||||
const createWorker = (queueName, handler) => {
|
||||
const worker = new Worker(queueName, handler, { connection: redisOptions });
|
||||
|
||||
worker.on('completed', (job) => {
|
||||
console.log(`[${queueName}] Job ${job.id} completed`);
|
||||
});
|
||||
|
||||
worker.on('failed', (job, err) => {
|
||||
console.error(`[${queueName}] Job ${job.id} failed:`, err.message);
|
||||
});
|
||||
|
||||
worker.on('progress', (job) => {
|
||||
console.log(`[${queueName}] Job ${job.id} progress:`, job.progress());
|
||||
});
|
||||
|
||||
return worker;
|
||||
};
|
||||
|
||||
const workers = [
|
||||
createWorker('proxy', proxyWorker),
|
||||
createWorker('thumbnail', thumbnailWorker),
|
||||
createWorker('conform', conformWorker),
|
||||
];
|
||||
|
||||
console.log('Wild Dragon Worker Service started');
|
||||
console.log(`Redis: ${redisOptions.host}:${redisOptions.port}`);
|
||||
console.log('Active queues: proxy, thumbnail, conform');
|
||||
|
||||
process.on('SIGTERM', async () => {
|
||||
console.log('SIGTERM received, shutting down...');
|
||||
await Promise.all(workers.map(w => w.close()));
|
||||
process.exit(0);
|
||||
});
|
||||
Loading…
Reference in a new issue