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: What is the difference between migration and model?Laravel: What is the difference between migration and model?May 16, 2025 am 12:15 AM

MigrationsinLaravelmanagedatabaseschema,whilemodelshandledatainteraction.1)Migrationsactasblueprintsfordatabasestructure,allowingcreation,modification,anddeletionoftables.2)Modelsrepresentdataandprovideaninterfaceforinteraction,enablingCRUDoperations

Laravel: Is it better to use Soft Deletes or physical deletes?Laravel: Is it better to use Soft Deletes or physical deletes?May 16, 2025 am 12:15 AM

SoftdeletesinLaravelarebetterformaintaininghistoricaldataandrecoverability,whilephysicaldeletesarepreferablefordataminimizationandprivacy.1)SoftdeletesusetheSoftDeletestrait,allowingrecordrestorationandaudittrails,butmayincreasedatabasesize.2)Physica

Laravel Soft Deletes: A Comprehensive Guide to ImplementationLaravel Soft Deletes: A Comprehensive Guide to ImplementationMay 16, 2025 am 12:11 AM

SoftdeletesinLaravelareafeaturethatallowsyoutomarkrecordsasdeletedwithoutremovingthemfromthedatabase.Toimplementsoftdeletes:1)AddtheSoftDeletestraittoyourmodelandincludethedeleted_atcolumn.2)Usethedeletemethodtosetthedeleted_attimestamp.3)Retrieveall

Understanding Laravel Migrations: Database Schema Control Made EasyUnderstanding Laravel Migrations: Database Schema Control Made EasyMay 16, 2025 am 12:09 AM

LaravelMigrationsareeffectiveduetotheirversioncontrolandreversibility,streamliningdatabasemanagementinwebdevelopment.1)TheyencapsulateschemachangesinPHPclasses,allowingeasyrollbacks.2)Migrationstrackexecutioninalogtable,preventingduplicateruns.3)They

Laravel Migrations: Best Practices for Database DevelopmentLaravel Migrations: Best Practices for Database DevelopmentMay 16, 2025 am 12:01 AM

Laravelmigrationsarebestwhenfollowingthesepractices:1)Useclear,descriptivenamingformigrations,like'AddEmailToUsersTable'.2)Ensuremigrationsarereversiblewitha'down'method.3)Considerthebroaderimpactondataintegrityandfunctionality.4)Optimizeperformanceb

Laravel Vue.js single page application (SPA) tutorialLaravel Vue.js single page application (SPA) tutorialMay 15, 2025 pm 09:54 PM

Single-page applications (SPAs) can be built using Laravel and Vue.js. 1) Define API routing and controller in Laravel to process data logic. 2) Create a componentized front-end in Vue.js to realize user interface and data interaction. 3) Configure CORS and use axios for data interaction. 4) Use VueRouter to implement routing management and improve user experience.

How to create custom helper functions in Laravel?How to create custom helper functions in Laravel?May 15, 2025 pm 09:51 PM

The steps to create a custom helper function in Laravel are: 1. Add an automatic loading configuration in composer.json; 2. Run composerdump-autoload to update the automatic loader; 3. Create and define functions in the app/Helpers directory. These functions can simplify code, improve readability and maintainability, but pay attention to naming conflicts and testability.

How to handle database transactions in Laravel?How to handle database transactions in Laravel?May 15, 2025 pm 09:48 PM

When handling database transactions in Laravel, you should use the DB::transaction method and pay attention to the following points: 1. Use lockForUpdate() to lock records; 2. Use the try-catch block to handle exceptions and manually roll back or commit transactions when needed; 3. Consider the performance of the transaction and shorten execution time; 4. Avoid deadlocks, you can use the attempts parameter to retry the transaction. This summary fully summarizes how to handle transactions gracefully in Laravel and refines the core points and best practices in the article.

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

Video Face Swap

Video Face Swap

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

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Clair Obscur: Expedition 33 - How To Get Perfect Chroma Catalysts
2 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.

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools