@tomei/customer-base
Version:
Tomei Customer Base Package
44 lines (36 loc) • 1.03 kB
text/typescript
import { Queue } from 'bullmq';
import { Redis } from 'ioredis';
import { ISyncJobData } from '../../interfaces/sync-job-data.interface';
const dotenv = require('dotenv');
dotenv.config();
const ENV = process.env.ENV || process.env.NODE_ENV || 'local';
const DB_BY_ENV: Record<string, number> = {
test: 3,
staging: 2,
production: 1,
prod: 1,
local: 1,
};
const connection = new Redis({
host: process.env.REDIS_HOST || 'localhost',
port: parseInt(process.env.REDIS_PORT || '6379'),
db: Number(DB_BY_ENV[ENV] ?? 1),
password: process.env.REDIS_PASSWORD || undefined,
maxRetriesPerRequest: null,
});
export function getQueueConnection() {
return connection;
}
export const syncQueue = new Queue<ISyncJobData>('syncQueue', {
connection,
prefix: `cb:${ENV}`,
defaultJobOptions: {
attempts: +(process.env.SYNC_JOB_ATTEMPTS || 3),
backoff: {
type: 'exponential',
delay: +(process.env.SYNC_JOB_BACKOFF || 1000),
},
removeOnComplete: true,
removeOnFail: false,
},
});