41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
import { Queue } from 'bullmq';
|
|
import { sharedRedisConnection } from './redisConnection';
|
|
import logger from '@utils/logger';
|
|
|
|
let tatQueue: Queue | null = null;
|
|
|
|
const QUEUE_ERROR_LOG_INTERVAL_MS = 2 * 60 * 1000;
|
|
let lastTatQueueErrorLog = 0;
|
|
|
|
try {
|
|
// Use shared Redis connection for both Queue and Worker
|
|
tatQueue = new Queue('tatQueue', {
|
|
connection: sharedRedisConnection,
|
|
defaultJobOptions: {
|
|
removeOnComplete: true,
|
|
removeOnFail: false,
|
|
attempts: 2,
|
|
backoff: {
|
|
type: 'fixed',
|
|
delay: 5000
|
|
}
|
|
}
|
|
});
|
|
|
|
tatQueue.on('error', (error) => {
|
|
const now = Date.now();
|
|
if (now - lastTatQueueErrorLog >= QUEUE_ERROR_LOG_INTERVAL_MS) {
|
|
lastTatQueueErrorLog = now;
|
|
logger.error('[TAT Queue] Queue error (Redis may be down):', (error as Error)?.message || error);
|
|
}
|
|
});
|
|
|
|
logger.info('[TAT Queue] ✅ Queue initialized');
|
|
} catch (error) {
|
|
logger.error('[TAT Queue] Failed to initialize:', error);
|
|
tatQueue = null;
|
|
}
|
|
|
|
export { tatQueue };
|
|
|