Mantle provides a Queue interface for queueing asynchronous jobs that should be run in the background instead of blocking the user's request. By default, the queue is powered through the WordPress cron but is abstracted so that it could add additional providers in the future.
The queue configuration is stored in
config/queue.php where you can configure the default provider and additional parameters such as how long the cron should wait before running the next batch of queued tasks.
Application jobs are stored in the
apps/jobs directory. Jobs can be generated through the
wp mantle make:job Example_Job
Once you have a job class you can dispatch to it from anywhere in your application.
use App\Jobs\Example_Job; Example_Job::dispatch( $post_data_to_include );
To allow for some priority between jobs a job can be sent to a specific queue. By default all jobs will be sent to the
default queue. A job can be selectively sent to a smaller/different queue to allow for some priority among jobs.
// Sent to the 'default' queue. Example_Job::dispatch(); // Sent to the 'priority' queue. Example_Job::dispatch()->on_queue( 'priority' );
A job can be invoked synchronously and will be run in the current request.
In the future, we hope to add better processing for failed jobs and better support for concurrency among jobs.