| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- const pddiktiService = require('../services/v2/pddikti.service')
- const waJobService = require('../services/waJob.service')
- const { logInfo, logError } = require('../utils/logger')
- let isRunning = false
- let timer = null
- const processJobs = async () => {
- if (isRunning) return
- isRunning = true
- try {
- const job = await waJobService.processNextJob()
- if (job) {
- logInfo('WA_WORKER', 'Processing job', { jobId: job._id, templateId: job.templateId })
- try {
- const response = await pddiktiService.whatsapp(
- job.templateId,
- job.contacts,
- job.body,
- job.buttons
- )
- await waJobService.markJobSuccess(job._id, response)
- } catch (error) {
- await waJobService.markJobFailed(job._id, error, job.attempt + 1)
- }
- }
- } catch (err) {
- logError('WA_WORKER', 'Error in worker tick', { error: err.message })
- } finally {
- isRunning = false
- }
- }
- const startWorker = (intervalMs = 3000) => {
- logInfo('WA_WORKER', `Starting WA Background Worker (interval: ${intervalMs}ms)`)
- waJobService.resetStuckJobs()
- timer = setInterval(processJobs, intervalMs)
- }
- const stopWorker = () => {
- if (timer) clearInterval(timer)
- logInfo('WA_WORKER', 'Stopped WA Background Worker')
- }
- module.exports = {
- startWorker,
- stopWorker,
- }
|