stock-bot/libs/core/queue/src/utils.ts
2025-06-25 11:38:23 -04:00

39 lines
1.2 KiB
TypeScript

import type { RedisConfig } from './types';
/**
* Get Redis connection configuration with retry settings
*/
export function getRedisConnection(config: RedisConfig) {
const isTest = process.env.NODE_ENV === 'test' || process.env['BUNIT'] === '1';
// In test mode, always use localhost
const testConfig = isTest
? {
host: 'localhost',
port: 6379,
}
: config;
const baseConfig = {
host: testConfig.host,
port: testConfig.port,
password: testConfig.password,
db: testConfig.db,
maxRetriesPerRequest: null, // Required by BullMQ
enableReadyCheck: false,
connectTimeout: isTest ? 1000 : 3000,
lazyConnect: false, // Changed from true to ensure connection is established immediately
keepAlive: true, // Changed from false to maintain persistent connections
retryStrategy: (times: number) => {
const maxRetries = isTest ? 1 : 3;
if (times > maxRetries) {
return null; // Stop retrying
}
const delay = isTest ? 100 : Math.min(times * 100, 3000);
return delay;
},
};
// In non-test mode, spread config first to preserve additional properties, then override with our settings
return isTest ? baseConfig : { ...config, ...baseConfig };
}