search
HomePHP FrameworkLaravelHow to use RabbitMQ in laravel (Homestead environment)

How to use RabbitMQ with Laravel in Homestead environment? The following article will introduce to you how to use RabbitMQ in Homestead (ubuntu) Laravel. I hope it will be helpful to you!

How to use RabbitMQ in laravel (Homestead environment)

Homestead(ubuntu) Laravel using RabbitMQ

Usage 1: Use laravel-queue-rabbitmq alone

Laravel installation RabbitMQ:
First pay attention to the laravel version information supported by laravel-queue-rabbitmq:

##96October 5th, 2021Documentation106, 7October 5th, 2021Documentation118April 6th, 2021Documentation

Execute the installation command:

composer require vladimir-yuldashev/laravel-queue-rabbitmq

Wait for the installation to complete and add: <pre class='brush:php;toolbar:false;'>&amp;#39;connections&amp;#39; =&gt; [ // ... &amp;#39;rabbitmq&amp;#39; =&gt; [ &amp;#39;driver&amp;#39; =&gt; &amp;#39;rabbitmq&amp;#39;, &amp;#39;queue&amp;#39; =&gt; env(&amp;#39;RABBITMQ_QUEUE&amp;#39;, &amp;#39;default&amp;#39;), &amp;#39;connection&amp;#39; =&gt; PhpAmqpLib\Connection\AMQPLazyConnection::class, &amp;#39;hosts&amp;#39; =&gt; [ [ &amp;#39;host&amp;#39; =&gt; env(&amp;#39;RABBITMQ_HOST&amp;#39;, &amp;#39;127.0.0.1&amp;#39;), &amp;#39;port&amp;#39; =&gt; env(&amp;#39;RABBITMQ_PORT&amp;#39;, 5672), &amp;#39;user&amp;#39; =&gt; env(&amp;#39;RABBITMQ_USER&amp;#39;, &amp;#39;guest&amp;#39;), &amp;#39;password&amp;#39; =&gt; env(&amp;#39;RABBITMQ_PASSWORD&amp;#39;, &amp;#39;guest&amp;#39;), &amp;#39;vhost&amp;#39; =&gt; env(&amp;#39;RABBITMQ_VHOST&amp;#39;, &amp;#39;/&amp;#39;), ], ], &amp;#39;options&amp;#39; =&gt; [ &amp;#39;ssl_options&amp;#39; =&gt; [ &amp;#39;cafile&amp;#39; =&gt; env(&amp;#39;RABBITMQ_SSL_CAFILE&amp;#39;, null), &amp;#39;local_cert&amp;#39; =&gt; env(&amp;#39;RABBITMQ_SSL_LOCALCERT&amp;#39;, null), &amp;#39;local_key&amp;#39; =&gt; env(&amp;#39;RABBITMQ_SSL_LOCALKEY&amp;#39;, null), &amp;#39;verify_peer&amp;#39; =&gt; env(&amp;#39;RABBITMQ_SSL_VERIFY_PEER&amp;#39;, true), &amp;#39;passphrase&amp;#39; =&gt; env(&amp;#39;RABBITMQ_SSL_PASSPHRASE&amp;#39;, null), ], &amp;#39;queue&amp;#39; =&gt; [ &amp;#39;job&amp;#39; =&gt; VladimirYuldashev\LaravelQueueRabbitMQ\Queue\Jobs\RabbitMQJob::class, ], ], /* * Set to &quot;horizon&quot; if you wish to use Laravel Horizon. */ &amp;#39;worker&amp;#39; =&gt; env(&amp;#39;RABBITMQ_WORKER&amp;#39;, &amp;#39;default&amp;#39;), ], // ... ],</pre> to

config/queue.php

and add it to config/ Modify in queue.php:

//把sync修改为rabbitmq,同理使用redis驱动则修改为redis
&#39;default&#39; => env(&#39;QUEUE_CONNECTION&#39;, &#39;sync&#39;),
&#39;default&#39; => env(&#39;QUEUE_CONNECTION&#39;, &#39;rabbitmq&#39;),
//或者修改.env下QUEUE_CONNECTION=rabbitmq
QUEUE_CONNECTION=rabbitmq

Execute command to generate task class:

php artisan make:job TestQueue

Modify TestQueue.phpCode:

<?php

namespace App\Jobs;

use App\Models\UserInfo;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class TestQueue implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    private $data;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        //
        $this->data = $data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //
        $data = $this->data;
        UserInfo::query()->firstOrCreate(
            ["phone" => $data["phone"]],
            ["name" => $data["name"]]
        );
    }
}

Call queue Function:

public function test(Request $request){
    $data = ["name" => "李大", "phone" => "12345678901"];
    $this->dispatch(new TestQueue($data));
}

Open the queue:

php artisan queue:work

The execution result after calling the function:

How to use RabbitMQ in laravel (Homestead environment)

Queue consumption is successful, check the database, and the data is also written Enter normal.

Usage 2: Using laravel-queue-rabbitmq rabbitmq-server

At this point, there will be a question. Since method 1 can be used normally, why should we add itrabbitmq-server, what do rabbitmq-server do?
According to the official description——RabbitMQ is a feature rich, multi-protocol messaging broker. It supports:

  • AMQP 0-9-1

  • AMQP 1.0

  • MQTT 3.1.1

  • STOMP 1.0 through 1.2

Translation Enough: RabbitMQ is a feature-rich multi-protocol message broker. It supports the following protocols.

According to the description on the RabbitMQ official website:

RabbitMQ runs on many operating systems and cloud environments, and provides a wide range of developer tools for most popular languages.

Translated:

RabbitMQ runs on many operating systems and cloud environments and provides a wide range of development tools for most popular languages.

To sum up: Method 1 uses the laravel queue method, which is relatively simple and does not involve too many conceptual things in the queue (such as producers and Consumers, etc.), and using rabbitmq-server provides a server for everyone. No matter what language it is, use the account and password to connect to the corresponding host and port can use RabbitMQ. Similar ones include EMQX (mqtt server) and so on. And rabbitmq-server provides a management background where you can view the relevant status of the queue for easy management.

Start rabbitmq-server:

sudo service rabbitmq-server start

Open the queue:

php artisan queue:work

Test the queue (the code is the same as method 1 code) Result:

How to use RabbitMQ in laravel (Homestead environment)

How to use RabbitMQ in laravel (Homestead environment)

Note:

username and # in config/queue.php Do not use the default guest account and password to connect in ##password, otherwise an error will be reported:

The connection timed out after 3 sec while awaiting incoming data

The admin account and password have been added in the previous article. To use this account and password, you also need to add permissions to the admin account:

sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

Check the user permissions in the

rabbitmq-server management background:

laravel 队列之How to use RabbitMQ in laravel (Homestead environment)

The permissions are

Can access virtual hosts / is displayed. If there is no permission, No Access is displayed.

1. laravel-queue-rabbitmq Supervisor daemon. In essence, it is to change the queue driver, and the usage is no different from redis;

2. You can use a usage similar to this: java operates RabbitMQ, breaks away from laravel, and uses the method of connecting producers and consumers;

3. You can also use more complex usage, such as accessing other communication protocols (such as MQTT), subscribing to topics, etc. For specific usage, please refer to the RabbitMQ official website.

The regular use of laravel redis queue Supervisor can already meet our daily needs. According to Qian Lao's "Engineering Cybernetics" - for a system, the latest or most advanced technology may not be the best. What is suitable for the system and ensures the stability of the system is the best.

Of course, on the other hand, we cannot stick to the old rules. Our skill packages must be updated and improved in a timely manner, so that we can be worthy of ourselves and the career we love.

Related recommendations:

The latest five Laravel video tutorials

Package Version Laravel Version Bug Fixes Until

The above is the detailed content of How to use RabbitMQ in laravel (Homestead environment). For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:learnku. If there is any infringement, please contact admin@php.cn delete
Laravel's Versatility: From Simple Sites to Complex SystemsLaravel's Versatility: From Simple Sites to Complex SystemsApr 13, 2025 am 12:13 AM

The Laravel development project was chosen because of its flexibility and power to suit the needs of different sizes and complexities. Laravel provides routing system, EloquentORM, Artisan command line and other functions, supporting the development of from simple blogs to complex enterprise-level systems.

Laravel (PHP) vs. Python: Development Environments and EcosystemsLaravel (PHP) vs. Python: Development Environments and EcosystemsApr 12, 2025 am 12:10 AM

The comparison between Laravel and Python in the development environment and ecosystem is as follows: 1. The development environment of Laravel is simple, only PHP and Composer are required. It provides a rich range of extension packages such as LaravelForge, but the extension package maintenance may not be timely. 2. The development environment of Python is also simple, only Python and pip are required. The ecosystem is huge and covers multiple fields, but version and dependency management may be complex.

Laravel and the Backend: Powering Web Application LogicLaravel and the Backend: Powering Web Application LogicApr 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.

Why is Laravel so popular?Why is Laravel so popular?Apr 02, 2025 pm 02:16 PM

Laravel's popularity includes its simplified development process, providing a pleasant development environment, and rich features. 1) It absorbs the design philosophy of RubyonRails, combining the flexibility of PHP. 2) Provide tools such as EloquentORM, Blade template engine, etc. to improve development efficiency. 3) Its MVC architecture and dependency injection mechanism make the code more modular and testable. 4) Provides powerful debugging tools and performance optimization methods such as caching systems and best practices.

Which is better, Django or Laravel?Which is better, Django or Laravel?Mar 28, 2025 am 10:41 AM

Both Django and Laravel are full-stack frameworks. Django is suitable for Python developers and complex business logic, while Laravel is suitable for PHP developers and elegant syntax. 1.Django is based on Python and follows the "battery-complete" philosophy, suitable for rapid development and high concurrency. 2.Laravel is based on PHP, emphasizing the developer experience, and is suitable for small to medium-sized projects.

Which is better PHP or Laravel?Which is better PHP or Laravel?Mar 27, 2025 pm 05:31 PM

PHP and Laravel are not directly comparable, because Laravel is a PHP-based framework. 1.PHP is suitable for small projects or rapid prototyping because it is simple and direct. 2. Laravel is suitable for large projects or efficient development because it provides rich functions and tools, but has a steep learning curve and may not be as good as pure PHP.

Is Laravel a frontend or backend?Is Laravel a frontend or backend?Mar 27, 2025 pm 05:31 PM

LaravelisabackendframeworkbuiltonPHP,designedforwebapplicationdevelopment.Itfocusesonserver-sidelogic,databasemanagement,andapplicationstructure,andcanbeintegratedwithfrontendtechnologieslikeVue.jsorReactforfull-stackdevelopment.

How do I create and use custom Blade directives in Laravel?How do I create and use custom Blade directives in Laravel?Mar 17, 2025 pm 02:50 PM

The article discusses creating and using custom Blade directives in Laravel to enhance templating. It covers defining directives, using them in templates, and managing them in large projects, highlighting benefits like improved code reusability and r

See all articles

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

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)