Background Jobs and Cron
Solutions for long-running jobs and scheduled jobs
There are great open source packages for long-running jobs and background jobs available from the core team and the community.
What to choose?
In case you need cron-like functionality, use Flowpack.Task or NeosRulez.Neos.Scheduler.
In case you need something like a CI pipeline, but within your project, use Flowpack.Prunner.
In case you need a job queue, either roll your own with Redis, or use Flowpack.JobQueue.
This is the oldest of the job queue packages and infrastructure, created by some core team members.
Job queues work well and support different storage backends - but it is not easily possible to use the specific features of individual queues. Use this if you need flexibility on which backend system the queue is executed.
Alternatively, you can of course also implement queues directly f.e. via Redis without any abstraction - this is the route done here.
Base Package containing the API
Doctrine DBAL storage for jobs
Redis storage for jobs
Beanstalkd storage for jobs
RabbitMQ Storage for jobs
Google PubSub storage for jobs
Low memory footprint worker for RabbitMQ jobs
The package Flowpack.Task was created in 2021 and provides a simple to use task scheduler for Neos Flow for one-time or recurring tasks. Tasks are configured via settings, recurring tasks can be configured using cron syntax.
Additionally, there is a backend module for seeing the task status in package Wwwisision.Neos.TaskModule.
The package NeosRulez.Neos.Scheduler was created in 2021 and allows to add and configure tasks completely via a Neos backend module, and not as Settings.
In this package, the script is entered directly in the Neos backend, whereas Flowpack.Task has the configuration of the script in Settings YAML.
Flowpack.Prunner was created in 2021 and is an embeddable task / pipeline runner for Neos and Flow. It is good for orchestrating long-running jobs with multiple steps; so if you think "I need a CI pipeline", but within your project, this is for you. For instance, Flowpack.DecoupledContentStore uses this.
The pipeline definition is done in a
pipelines.yml file and is static. The package also contains a Neos backend module for observing the pipeline status.
For executing the pipelines, a lightweight go-based daemon needs to be installed on the server.
Prunner does not support Cron jobs as of now.