/** * Script untuk cek status Redis Queue Railway * Usage: node check-queue.js */ require('dotenv').config(); const { Queue } = require('bullmq'); const Redis = require('ioredis'); const redis = new Redis({ host: process.env.REDIS_HOST, port: parseInt(process.env.REDIS_PORT), password: process.env.REDIS_PASSWORD, maxRetriesPerRequest: null, }); const wateringQueue = new Queue('watering', { connection: redis }); async function checkQueue() { try { console.log('šŸ” Checking Railway Queue Status...\n'); const waiting = await wateringQueue.getWaitingCount(); const active = await wateringQueue.getActiveCount(); const completed = await wateringQueue.getCompletedCount(); const failed = await wateringQueue.getFailedCount(); console.log('šŸ“Š Queue Statistics:'); console.log(` ā³ Waiting: ${waiting}`); console.log(` āš™ļø Active: ${active}`); console.log(` āœ… Completed: ${completed}`); console.log(` āŒ Failed: ${failed}`); // Get recent jobs console.log('\nšŸ“‹ Recent Completed Jobs:'); const completedJobs = await wateringQueue.getCompleted(0, 4); for (const job of completedJobs) { console.log(`\n Job ID: ${job.id}`); console.log(` Type: ${job.data.type}`); console.log(` Pots: [${job.data.potNumbers.join(', ')}]`); console.log(` Duration: ${job.data.duration}s`); console.log(` Time: ${new Date(job.finishedOn).toLocaleString('id-ID')}`); } console.log('\nāœ… Check complete!'); process.exit(0); } catch (error) { console.error('āŒ Error:', error.message); process.exit(1); } } checkQueue();