En ocasiones tenemos trabajos en segundo plano que pueden tardar varios segundos y es mejor que los procese el cron (el cron ejecuta hasta 1000 eventos de la cola de trabajos), pero no queremos un cronjob porque no se va a ejecutar todos los días, solamente cuando se dispare cierto evento. Para estos casos necesitamos indicar que ese worker y por consiguiente el evento entero se debe procesar en el cron.
Al registrar el worker, en lugar de llamar al método addWorker()
, podemos llamar a un nuevo método addCronWorker()
:
WorkQueue::addCronWorker('MiWorker', 'Model.Producto.Update');
Este método debe añadir el worker a la lista y debe marcar los eventos de ese tipo como que solamente se deben ejecutar en el cron. Hay que modificar tanto la tabla como el modelo correspondiente, y también la función run()
de la cola de trabajos, para indicar cuando se ejecuta desde el cron y cuando no.
Esta tarea fue aprobada el 03-10-2024 y está pendiente para comenzar el desarrollo el 30-01-2025.