add sleep function on failure

This commit is contained in:
Nimer Farahty 2025-04-20 01:11:34 +03:00
parent 9124c10726
commit c492068924

View File

@ -7,6 +7,35 @@ dotenv.config();
const queueName = process.env.QUEUE_NAME || "storage.file";
const rabbitUrl = process.env.RABBITMQ_URL || "amqp://localhost";
function sleepWithCountdown(seconds: number): Promise<void> {
return new Promise((resolve) => {
let remaining = seconds;
const update = () => {
const msg = `⏳ Waiting ${remaining}s...`;
process.stdout.clearLine(0); // Clear current line
process.stdout.cursorTo(0); // Move cursor to start of line
process.stdout.write(msg); // Write message
};
update(); // Initial message
const interval = setInterval(() => {
remaining--;
if (remaining > 0) {
update();
} else {
clearInterval(interval);
process.stdout.clearLine(0);
process.stdout.cursorTo(0);
process.stdout.write(`✅ Resuming now\n`);
resolve();
}
}, 1000);
});
}
async function start() {
const conn = await amqp.connect(rabbitUrl);
const channel = await conn.createChannel();
@ -49,6 +78,7 @@ async function start() {
} catch (err) {
console.error("❌ Error processing message:", err);
// Retry once by requeuing
await sleepWithCountdown(30);
channel.nack(msg, false, true);
}
});