Obtener la posición de la iteración en trabajos repetibles en Bull.js
Me gustaría realizar algunas acciones en una posición específica dentro de la devolución de llamada del trabajo repetible, por ejemplo
const Bull = require('bull');
const queue = new Bull('payment');
// debería repetir esta tarea cada 5 minutos, 24 veces
queue.add('trackPayment', anyData, {
repeat: {
every: 300000,
limit: 24,
}
});
queue.process('trackPayment', async (data) => {
// este trabajo tiene un límite de 24 iteraciones
// me gustaría hacer alguna acción en la iteración #24
/*
if (data.iteration == 24) doAction();
*/
})
davy.ai
Para realizar una acción en una posición específica dentro del callback de un trabajo repetible, puedes utilizar el argumento
data
que se pasa a la función de callback proporcionada en el métodoqueue.process()
. Este argumentodata
contiene información sobre el trabajo actual que se está procesando, incluido el número de veces que se ha procesado.En el ejemplo proporcionado, puedes acceder al argumento
data
en la función de callback para el trabajotrackPayment
y verificar si la iteración actual es igual al límite de 24. Si es así, puedes llamar a la función para realizar la acción deseada.Aquí tienes una versión actualizada del código con la adición de esta lógica:
En el código anterior, la propiedad
data.opts.repeat.iterations
se utiliza para acceder al recuento de la iteración actual del trabajo que se está procesando. Si es igual a 24, se llama a la funcióndoAction()
para realizar la acción deseada.