|
@@ -1,13 +1,16 @@
|
|
|
const pddiktiService = require('../services/v2/pddikti.service')
|
|
const pddiktiService = require('../services/v2/pddikti.service')
|
|
|
const waJobService = require('../services/waJob.service')
|
|
const waJobService = require('../services/waJob.service')
|
|
|
|
|
+const { processBatchUpdateSanksi } = require('../services/batchSanksi.service')
|
|
|
const { logInfo, logError } = require('../utils/logger')
|
|
const { logInfo, logError } = require('../utils/logger')
|
|
|
|
|
|
|
|
-let isRunning = false
|
|
|
|
|
-let timer = null
|
|
|
|
|
|
|
+let isWaWorkerRunning = false
|
|
|
|
|
+let isBatchWorkerRunning = false
|
|
|
|
|
+let waTimer = null
|
|
|
|
|
+let batchTimer = null
|
|
|
|
|
|
|
|
-const processJobs = async () => {
|
|
|
|
|
- if (isRunning) return
|
|
|
|
|
- isRunning = true
|
|
|
|
|
|
|
+const processWaJobs = async () => {
|
|
|
|
|
+ if (isWaWorkerRunning) return
|
|
|
|
|
+ isWaWorkerRunning = true
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
const job = await waJobService.processNextJob()
|
|
const job = await waJobService.processNextJob()
|
|
@@ -28,19 +31,37 @@ const processJobs = async () => {
|
|
|
} catch (err) {
|
|
} catch (err) {
|
|
|
logError('WA_WORKER', 'Error in worker tick', { error: err.message })
|
|
logError('WA_WORKER', 'Error in worker tick', { error: err.message })
|
|
|
} finally {
|
|
} finally {
|
|
|
- isRunning = false
|
|
|
|
|
|
|
+ isWaWorkerRunning = false
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const startWorker = (intervalMs = 3000) => {
|
|
|
|
|
- logInfo('WA_WORKER', `Starting WA Background Worker (interval: ${intervalMs}ms)`)
|
|
|
|
|
|
|
+const processBatchJobs = async () => {
|
|
|
|
|
+ if (isBatchWorkerRunning) return
|
|
|
|
|
+ isBatchWorkerRunning = true
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ const { processed, error } = await processBatchUpdateSanksi()
|
|
|
|
|
+ if (processed > 0) {
|
|
|
|
|
+ logInfo('BATCH_WORKER', `Processed ${processed} batch items`, { errors: error.length })
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (err) {
|
|
|
|
|
+ logError('BATCH_WORKER', 'Error in batch worker tick', { error: err.message })
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ isBatchWorkerRunning = false
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const startWorker = (waIntervalMs = 3000, batchIntervalMs = 30000) => {
|
|
|
|
|
+ logInfo('WORKER', `Starting Background Workers (WA: ${waIntervalMs}ms, Batch: ${batchIntervalMs}ms)`)
|
|
|
waJobService.resetStuckJobs()
|
|
waJobService.resetStuckJobs()
|
|
|
- timer = setInterval(processJobs, intervalMs)
|
|
|
|
|
|
|
+ waTimer = setInterval(processWaJobs, waIntervalMs)
|
|
|
|
|
+ batchTimer = setInterval(processBatchJobs, batchIntervalMs)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const stopWorker = () => {
|
|
const stopWorker = () => {
|
|
|
- if (timer) clearInterval(timer)
|
|
|
|
|
- logInfo('WA_WORKER', 'Stopped WA Background Worker')
|
|
|
|
|
|
|
+ if (waTimer) clearInterval(waTimer)
|
|
|
|
|
+ if (batchTimer) clearInterval(batchTimer)
|
|
|
|
|
+ logInfo('WORKER', 'Stopped Background Workers')
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
module.exports = {
|