sanket3280/code-execution
0
1/**2 * Submit Queue - BullMQ3 * Handles code submission jobs asynchronously4 */5 6const { Queue } = require('bullmq');7const { config } = require('../config/env.config');8const logger = require('../utils/logger');9 10// Create queue connection11const connection = config.redis.url 12 ? { url: config.redis.url }13 : {14 host: config.redis.host,15 port: config.redis.port,16 password: config.redis.password || undefined17 };18 19const submitQueue = new Queue('submit', { connection });20 21submitQueue.on('error', (error) => {22 logger.error('Submit queue error:', error);23});24 25/**26 * Add submission job to queue27 */28const addSubmitJob = async (jobData) => {29 try {30 const job = await submitQueue.add('evaluate', jobData, {31 attempts: 3,32 backoff: {33 type: 'exponential',34 delay: 200035 },36 removeOnComplete: 100, // Keep last 100 completed jobs37 removeOnFail: 200 // Keep last 200 failed jobs38 });39 40 logger.info(`Submit job added: ${job.id}`);41 return job;42 } catch (error) {43 logger.error('Error adding submit job:', error);44 throw error;45 }46};47 48module.exports = {49 submitQueue,50 addSubmitJob51};52 