43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
require('dotenv').config();
|
|
|
|
const parseNumber = (value, fallback) => {
|
|
const parsed = Number(value);
|
|
return Number.isNaN(parsed) ? fallback : parsed;
|
|
};
|
|
|
|
const retryDelayMs = parseNumber(process.env.RABBITMQ_RETRY_DELAY_MS, 6000);
|
|
|
|
const exchangeName = process.env.RABBITMQ_EXCHANGE || 'ai.story.exchange';
|
|
|
|
const config = {
|
|
url: process.env.RABBITMQ_URL || 'amqp://guest:guest@localhost:5672',
|
|
prefetch: parseNumber(process.env.RABBITMQ_PREFETCH, 1),
|
|
retry: {
|
|
maxAttempts: parseNumber(process.env.RABBITMQ_MAX_RETRY_ATTEMPTS, 5),
|
|
delayMs: retryDelayMs,
|
|
},
|
|
exchange: {
|
|
name: exchangeName,
|
|
type: process.env.RABBITMQ_EXCHANGE_TYPE || 'direct',
|
|
routingKeys: {
|
|
story: process.env.RABBITMQ_STORY_ROUTING_KEY || 'story.generate',
|
|
retry: process.env.RABBITMQ_RETRY_ROUTING_KEY || 'story.generate.retry',
|
|
deadLetter: process.env.RABBITMQ_DEAD_LETTER_ROUTING_KEY || 'story.generate.dead',
|
|
},
|
|
},
|
|
queues: {
|
|
storyGeneration: {
|
|
name: process.env.RABBITMQ_QUEUE || 'ai.story.queue',
|
|
},
|
|
retry: {
|
|
name: process.env.RABBITMQ_RETRY_QUEUE || 'ai.story.retry.queue',
|
|
messageTtl: retryDelayMs,
|
|
},
|
|
deadLetter: {
|
|
name: process.env.RABBITMQ_DEAD_LETTER_QUEUE || 'ai.story.dlq',
|
|
},
|
|
},
|
|
};
|
|
|
|
module.exports = config;
|