Home PHP Framework Laravel New features and changes in Laravel 8 queue system

New features and changes in Laravel 8 queue system

Sep 27, 2020 pm 01:40 PM
laravel

The following is the tutorial column of Laravel to introduce you to the new features and changes of the Laravel 8 queue system. I hope it will be helpful to friends in need!

New features and changes in Laravel 8 queue system

Laravel 8 comes with cool new features and some changes to the queue system. In this article, we'll look at these features and changes.

Change


Backoff

has beenretryAfter() Methods and properties of retryAfter queued jobs, emails, notifications and listeners were renamed to backoff. The

php artisan queue:work command's --delay option has also been renamed to --backoff.

You should also know that you can now pass an array to the backoff property to instruct the worker to implement exponential backoff:

public $backoff = [30, 60];
Copy after login

or from The backoff() method returns an array:

public function backoff()
{
    return [30, 60]; 
}
Copy after login

Using exponential backoff here, we instruct the worker to delay 30 seconds after the first failure to retry the job, and then delay 60 seconds after each failure .

You can also use exponential backoff on the queue:work command:

php artisan queue:Work --backoff=30,60
Copy after login

Job Expiration

Queue the job, The timeoutAt property for notifications and listeners has been renamed to retryUntil.

Use $retryUntil to instruct the worker to continue retrying the job until some time in the future.

You can add retryUntil as a public property of the job class or as a retryUntil method:

public function retryUntil()
{
    return now()->addDay();
}
Copy after login

New Features

Queue Closure

You can now chain calls to the catch() method when dispatching a queue closure:

dispatch(function () {
    // Job logic...
})->catch(function (Throwable $e) {
    // Handle Failure...
});
Copy after login

if If the job fails, the closure provided to the catch() method will be called.

Database Driver Reliability

Laravel will now perform operations within a transaction when a job is released back to the queue using the database queue driver. This means that jobs will not be removed from the queue unless a new published instance is added. This greatly reduces the chance of job failure.

Redis Driver Efficiency

When using the Redis queue driver to batch distribute a set of jobs, Laravel will perform the operation by sending a single command to Redis. Previously, Laravel used to send multiple rpush commands to Redis, one for each job.

Worker Graceful Termination

Starting with Laravel 8, Workers will exit gracefully and call any termination registered by App::Terminating() callback.

Worker self-terminating

To avoid memory leaks, it is common practice to kill your workers from time to time and then let your process monitoring tool start a new worker. This is usually done by adding a CRON job that runs the queue:restart command.

In Laravel 8, you can instruct Workers to exit after processing a certain number of jobs or running for a specific number of seconds:

php artisan queue:work --max-jobs=1000 --max-time=3600
Copy after login

Named Workers

You now add the --name option to the queue:work command:

php artisan queue:work --name=notifications
Copy after login

The main purpose of adding this functionality is to allow people to customize Workers at runtime How to choose which queue to process a task:

Worker::popUsing('notifications', function ($pop) {
    $queues = time()->atNight() 
        ? ['mail', 'webhooks'] 
        : ['push-notifications', 'sms', 'mail', 'webhooks'];

    foreach ($queues as $queue) {
        if (! is_null($job = $pop($queue))) {
            return $job;
        }
    }
});
Copy after login

Task Batching

Laravel's task batching allows you to dispatch many tasks for parallel processing by your Workers. You can perform actions after all tasks in the batch have been processed or any batch task has failed:

Bus::batch([
    new ProcessFile(1),
    new ProcessFile(2),
    new ProcessFile(3),
])->dispatch();
Copy after login

You can find more information about "Job Batching" in Official Documentation More information.

Job Chain

You can now schedule a series of jobs directly using Bus:

Bus::chain([
    new ExtractReports,
    new GenerateReport,
    new SendResults,
])->dispatch();
Copy after login

You can also add a catch() Callback that will be called if any job in the chain fails:

Bus::chain([
    new ExtractReports,
    new GenerateReport,
    new SendResults,
])->catch(function(){
    // Handle the chain failure.
})
->dispatch();
Copy after login

Horizon Balance Rate

Two new ones have been added to Horizon Configuration options: balanceMaxShift and balanceCooldown.

 'environments' => [
    'environment' => [
        'supervisor-1' => [
            'balanceMaxShift' => 5,
        ],
    ],
],
Copy after login

balanceMaxShift Sets the maximum number of worker processes to add or remove each time Horizon expands the worker pool. In previous versions of Horizon, only one worker process was added or removed, now you can control that number.

As for balanceCooldown, it sets the number of seconds to wait between each scaling operation. In earlier versions of Horizon, this was hardcoded to 3 seconds.

 'environments' => [
    'environment' => [
        'supervisor-1' => [
            'balanceCooldown' => 1,
        ],
    ],
],
Copy after login

原文地址:https://dev.to/themsaid/features-and-changes-coming-to-laravel-8-s-queue-system-5amg

译文地址:https://learnku.com/laravel/t/50086

The above is the detailed content of New features and changes in Laravel 8 queue system. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1663
14
PHP Tutorial
1263
29
C# Tutorial
1236
24
Laravel Introduction Example Laravel Introduction Example Apr 18, 2025 pm 12:45 PM

Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

Solve caching issues in Craft CMS: Using wiejeben/craft-laravel-mix plug-in Solve caching issues in Craft CMS: Using wiejeben/craft-laravel-mix plug-in Apr 18, 2025 am 09:24 AM

When developing websites using CraftCMS, you often encounter resource file caching problems, especially when you frequently update CSS and JavaScript files, old versions of files may still be cached by the browser, causing users to not see the latest changes in time. This problem not only affects the user experience, but also increases the difficulty of development and debugging. Recently, I encountered similar troubles in my project, and after some exploration, I found the plugin wiejeben/craft-laravel-mix, which perfectly solved my caching problem.

Laravel user login function Laravel user login function Apr 18, 2025 pm 12:48 PM

Laravel provides a comprehensive Auth framework for implementing user login functions, including: Defining user models (Eloquent model), creating login forms (Blade template engine), writing login controllers (inheriting Auth\LoginController), verifying login requests (Auth::attempt) Redirecting after login is successful (redirect) considering security factors: hash passwords, anti-CSRF protection, rate limiting and security headers. In addition, the Auth framework also provides functions such as resetting passwords, registering and verifying emails. For details, please refer to the Laravel documentation: https://laravel.com/doc

Laravel and the Backend: Powering Web Application Logic Laravel and the Backend: Powering Web Application Logic Apr 11, 2025 am 11:29 AM

How does Laravel play a role in backend logic? It simplifies and enhances backend development through routing systems, EloquentORM, authentication and authorization, event and listeners, and performance optimization. 1. The routing system allows the definition of URL structure and request processing logic. 2.EloquentORM simplifies database interaction. 3. The authentication and authorization system is convenient for user management. 4. The event and listener implement loosely coupled code structure. 5. Performance optimization improves application efficiency through caching and queueing.

Laravel framework installation method Laravel framework installation method Apr 18, 2025 pm 12:54 PM

Article summary: This article provides detailed step-by-step instructions to guide readers on how to easily install the Laravel framework. Laravel is a powerful PHP framework that speeds up the development process of web applications. This tutorial covers the installation process from system requirements to configuring databases and setting up routing. By following these steps, readers can quickly and efficiently lay a solid foundation for their Laravel project.

How to learn Laravel How to learn Laravel for free How to learn Laravel How to learn Laravel for free Apr 18, 2025 pm 12:51 PM

Want to learn the Laravel framework, but suffer from no resources or economic pressure? This article provides you with free learning of Laravel, teaching you how to use resources such as online platforms, documents and community forums to lay a solid foundation for your PHP development journey from getting started to master.

How to view the version number of laravel? How to view the version number of laravel How to view the version number of laravel? How to view the version number of laravel Apr 18, 2025 pm 01:00 PM

The Laravel framework has built-in methods to easily view its version number to meet the different needs of developers. This article will explore these methods, including using the Composer command line tool, accessing .env files, or obtaining version information through PHP code. These methods are essential for maintaining and managing versioning of Laravel applications.

What versions of laravel are there? How to choose the version of laravel for beginners What versions of laravel are there? How to choose the version of laravel for beginners Apr 18, 2025 pm 01:03 PM

In the Laravel framework version selection guide for beginners, this article dives into the version differences of Laravel, designed to assist beginners in making informed choices among many versions. We will focus on the key features of each release, compare their pros and cons, and provide useful advice to help beginners choose the most suitable version of Laravel based on their skill level and project requirements. For beginners, choosing a suitable version of Laravel is crucial because it can significantly impact their learning curve and overall development experience.

See all articles