How to Set up a Laravel Queue

How to Set up a Laravel Queue?

Being one of the most powerful frameworks, Laravel has found a huge user base for itself. It offers many advanced functionalities including the queues that run in the background and help in configuring how the system reacts. They make the work easier by letting you set up the tasks on your priority list. You can use them to delay time-consuming tasks and improve performance.

Furthermore, you can easily configure a queue by following the steps given below:

Configure the queue

Configure the queue using tools like drivers that store the list of tasks for you. Additionally, depending on your work requirements you can also choose among different tools like database, Beanstalkd, Redis, Amazon, IronMQ, etc.

Use the command:

This will create a migration file and create a database table to store the current and failed jobs.  It should be visible at the backend in the form of the code below:

There after, run the migrate command again:

This shall be visible in the “failed_jobs” tables. Then, update the environment file and open the .env file using the below command:

Check to ensure queue connection:

Now that you have successfully created a queue, the next step is to create a job. After this run make: job.”

Here, you can use controller:command to create a skeleton for “app/Jobs” in the folder named “MatchSendEmail.php.”

This will result in the below code

Create an Email Template and Mailable Class

You can easily do this using the make:mail”.This can be done with the code:


Now that you are done with implementing the queue, testing is the next step before you launch it. Add the below code:

And then run:


Use the following command for dispatching the jobs with the controller methods.

Further, you can also dispatch the jobs conditionally. For this, use the‘ dispatch If’ and ‘dispatch unless’ methods.

More over, the jobs can also be dispatched at specific queues using the below code.

Alternatively, delay the Jobs to a later time by using:

You may also choose the set tries or timeout properties to the job class, as these values will be used by the queue driver.

Start the employment to process the queue after it is dispatched by using a straight forward command.

But the freedom does not end here as you can also specify queue connection, length of time a job can run, the queue’s priorities, process all posts, or a single job, sleep duration between two job executions and do a lot more.

Laravel also lets you easily handle the failed jobs by specifying the number of times it will attempt a job before adding it in the failed job table using the “–tries=5” with the “queue:work” in the queue worker. Additionally, you may specify the delay time using“–delay=5” (number defines the seconds).

Concluding Words

Configuring the Laravel queue is now easy for your work requirements. Although there are many methods to run a queue in Laravel, we have discussed the easiest one above. Go ahead and try this to successfully run the tasks in a hassle-free manner and if you want to know more, reach out to us in the comments below.

Featured Posts