Initial push of Plunk Next
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* Domain Verification Worker
|
||||
* Processes domain verification jobs from the BullMQ queue
|
||||
*/
|
||||
|
||||
import {type Job, Worker} from 'bullmq';
|
||||
import signale from 'signale';
|
||||
|
||||
import {type DomainVerificationJobData, domainVerificationQueue} from '../services/QueueService.js';
|
||||
|
||||
import {checkDomainVerifications} from './domain-verification.js';
|
||||
|
||||
/**
|
||||
* Process domain verification job
|
||||
*/
|
||||
async function processDomainVerification(job: Job<DomainVerificationJobData>): Promise<void> {
|
||||
signale.info(`[DOMAIN-VERIFICATION-WORKER] Starting domain verification job ${job.id}`);
|
||||
|
||||
try {
|
||||
await checkDomainVerifications();
|
||||
signale.success(`[DOMAIN-VERIFICATION-WORKER] Completed domain verification job ${job.id}`);
|
||||
} catch (error) {
|
||||
signale.error(`[DOMAIN-VERIFICATION-WORKER] Error processing job ${job.id}:`, error);
|
||||
throw error; // Re-throw to trigger retry
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and export the domain verification worker
|
||||
*/
|
||||
export function createDomainVerificationWorker(): Worker {
|
||||
const worker = new Worker<DomainVerificationJobData>(
|
||||
domainVerificationQueue.name,
|
||||
async (job: Job<DomainVerificationJobData>) => {
|
||||
await processDomainVerification(job);
|
||||
},
|
||||
{
|
||||
connection: domainVerificationQueue.opts.connection,
|
||||
concurrency: 1, // Process one domain verification job at a time
|
||||
limiter: {
|
||||
max: 1, // Max 1 job per duration
|
||||
duration: 60000, // Per minute (prevents rapid-fire verification checks)
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
worker.on('completed', job => {
|
||||
signale.success(`[DOMAIN-VERIFICATION-WORKER] Job ${job.id} completed`);
|
||||
});
|
||||
|
||||
worker.on('failed', (job, error) => {
|
||||
signale.error(`[DOMAIN-VERIFICATION-WORKER] Job ${job?.id} failed:`, error);
|
||||
});
|
||||
|
||||
worker.on('error', error => {
|
||||
signale.error('[DOMAIN-VERIFICATION-WORKER] Worker error:', error);
|
||||
});
|
||||
|
||||
return worker;
|
||||
}
|
||||
Reference in New Issue
Block a user