recherche
Maisoncadre phpLaravelComment utiliser RabbitMQ dans Laravel (environnement Homestead)

Comment utiliser RabbitMQ avec Laravel dans l'environnement Homestead ? L'article suivant vous présentera comment utiliser RabbitMQ avec Homestead (ubuntu) + Laravel. J'espère qu'il vous sera utile !

Comment utiliser RabbitMQ dans Laravel (environnement Homestead)

Homestead (ubuntu) + Laravel utilisant RabbitMQ

Utilisation 1 : utilisez laravel-queue-rabbitmq seul

installation de laravel RabbitMQ :
Faites d'abord attention aux informations sur la version de laravel prises en charge par laravel-queue- Rabbitmq :

Version du package Version Laravel Corrections de bugs jusqu'au
9 6 5 octobre 2021 Documentation
10 6, 7 5 octobre 2021 Documentation
11 8 6 avril 2021 Documentation

Exécutez la commande d'installation :

composer require vladimir-yuldashev/laravel-queue-rabbitmq

Attendez la fin de l'installation et ajoutez : config/queue.php中添加:

'connections' => [
  // ...

  'rabbitmq' => [

     'driver' => 'rabbitmq',
     'queue' => env('RABBITMQ_QUEUE', 'default'),
     'connection' => PhpAmqpLib\Connection\AMQPLazyConnection::class,

     'hosts' => [
         [
             'host' => env('RABBITMQ_HOST', '127.0.0.1'),
             'port' => env('RABBITMQ_PORT', 5672),
             'user' => env('RABBITMQ_USER', 'guest'),
             'password' => env('RABBITMQ_PASSWORD', 'guest'),
             'vhost' => env('RABBITMQ_VHOST', '/'),
         ],
     ],

     'options' => [
         'ssl_options' => [
             'cafile' => env('RABBITMQ_SSL_CAFILE', null),
             'local_cert' => env('RABBITMQ_SSL_LOCALCERT', null),
             'local_key' => env('RABBITMQ_SSL_LOCALKEY', null),
             'verify_peer' => env('RABBITMQ_SSL_VERIFY_PEER', true),
             'passphrase' => env('RABBITMQ_SSL_PASSPHRASE', null),
         ],
         'queue' => [
             'job' => VladimirYuldashev\LaravelQueueRabbitMQ\Queue\Jobs\RabbitMQJob::class,
         ],
     ],

     /*
      * Set to "horizon" if you wish to use Laravel Horizon.
      */
     'worker' => env('RABBITMQ_WORKER', 'default'),

  ],

  // ...    ],

并且在config/queue.php中修改:

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

执行命令生成任务类:

php artisan make:job TestQueue

修改TestQueue.php代码:

<?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"]]
        );
    }
}

调用队列函数:

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

开启队列:

php artisan queue:work

调用函数后执行结果:

Comment utiliser RabbitMQ dans Laravel (environnement Homestead)

队列消费成功,查看数据库,数据也写入正常。

用法2:使用laravel-queue-rabbitmq+rabbitmq-server

到这里,会有一个问题,既然方法1能够正常使用,为什么还要加入rabbitmq-serverrabbitmq-server又是干啥的?
根据官方描述——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

翻译过来就是:RabbitMQ 是一个功能丰富的多协议消息代理。 它支持以下几种协议。

根据RabbitMQ官网的描述:

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

翻译过来就是:

RabbitMQ 运行在许多操作系统和云环境中,并为大多数流行语言提供了广泛的开发工具。

总结起来就是:方法1使用的是laravel队列的使用方法,比较简单,并没有涉及到太多队列当中概念性的东西(例如生产者和消费者等等),而使用rabbitmq-server,为大家提供了一个服务端,不管是什么语言,使用账号、密码连接到相应的hostport就能使用RabbitMQ。类似的还有EMQX(mqtt服务端)等等。并且rabbitmq-server提供了一个管理后台,可以查看队列的相关情况,便于管理。

启动rabbitmq-server:

sudo service rabbitmq-server start

开启队列:

php artisan queue:work

测试队列(代码和方法1代码一样)结果:

Comment utiliser RabbitMQ dans Laravel (environnement Homestead)

Comment utiliser RabbitMQ dans Laravel (environnement Homestead)

注意:

config/queue.phpusernamepassword里不要使用默认的guest账号密码来连接,否则会报错:

The connection timed out after 3 sec while awaiting incoming data

前文已经添加过admin的账号密码,使用这个账号密码还需要给admin账号添加权限:

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

rabbitmq-server管理后台查看用户权限:

laravel 队列之Comment utiliser RabbitMQ dans Laravel (environnement Homestead)

有权限是Can access virtual hosts显示/,无权限就是显示No Accessrrreee

à config/queue.php et modifiez-le dans config/queue.php : Modifier le code TestQueue.php :

rrreee

Appeler la fonction file d'attente :

rrreee

Ouvrir la file d'attente :

rrreee

Résultat de l'exécution après avoir appelé la fonction :

Utilisation de RabbitMQ avec laravel sous Homestead (ubuntu) - Chapitre pratique

File d'attente La consommation est réussie, vérifiez la base de données et les données sont écrites normalement.

Utilisation 2 : Utilisation de laravel-queue-rabbitmq+rabbitmq-server

À ce stade, il y aura une question puisque la méthode 1 peut être utilisée normalement, pourquoi devrions-nous ajouter rabbitmq-server, rabbitmq-server ? Selon la description officielle - RabbitMQ est un courtier de messagerie multiprotocole riche en fonctionnalités. Il prend en charge :

  • AMQP 0-9-1
<. li>
  • 🎜AMQP 1.0🎜
  • 🎜MQTT 3.1.1🎜
  • 🎜STOMP 1.0 à 1.2🎜
  • 🎜La traduction est : RabbitMQ est un courtier de messages multiprotocole riche en fonctionnalités. Il prend en charge les protocoles suivants. 🎜🎜🎜Selon la description sur le site officiel de RabbitMQ :🎜🎜RabbitMQ fonctionne sur de nombreux systèmes d'exploitation et environnements cloud, et fournit une large gamme d'outils de développement pour les langages les plus populaires.🎜🎜La traduction est :🎜🎜RabbitMQ fonctionne sur de nombreux systèmes d'exploitation environnement de systèmes et d'environnements cloud et fournit une large gamme d'outils de développement pour les langages les plus populaires. 🎜🎜🎜🎜🎜Pour résumer : la méthode 1 utilise la méthode d'utilisation de la file d'attente laravel, qui est relativement simple et n'implique pas trop d'éléments conceptuels dans la file d'attente (comme les producteurs et les consommateurs, etc.), et utilise rabbitmq -server fournit un serveur pour tout le monde. Quelle que soit la langue, vous pouvez l'utiliser en vous connectant à l'hôte et au port correspondants à l'aide de votre compte et de votre mot de passe. .LapinMQ. Les fichiers similaires incluent EMQX (serveur mqtt), etc. Et rabbitmq-server fournit un arrière-plan de gestion où vous pouvez afficher l'état pertinent de la file d'attente pour une gestion facile. 🎜🎜Démarrez Rabbitmq-server : 🎜rrreee🎜Ouvrez la file d'attente : 🎜rrreee🎜Testez la file d'attente (le code est le même que la méthode 1) Résultat : 🎜🎜Utilisation de RabbitMQ avec laravel sous Homestead (ubuntu) - Combat pratique🎜🎜Utiliser RabbitMQ avec laravel sous Homestead (ubuntu) - Chapitre pratique🎜🎜🎜🎜Remarque : 🎜🎜Dans config/queue. phpN'utilisez pas le compte invité et le mot de passe par défaut dans nom d'utilisateur et mot de passe pour vous connecter, sinon une erreur sera signalée : 🎜rrreee🎜Le compte administrateur et le mot de passe ont été ajoutés précédemment, utilisez ce compte et ce mot de passe. Vous devez également ajouter des autorisations au compte administrateur : 🎜rrreee🎜 Vérifiez les autorisations de l'utilisateur dans l'arrière-plan de gestion du rabbitmq-server : 🎜🎜file d'attente laravel utilisant RabbitMQ sous Homestead (ubuntu) - chapitre pratique🎜🎜Si vous avez l'autorisation , Peut accéder aux hôtes virtuelsafficher/, s'il n'y a aucune autorisation, Aucun accès sera affiché. 🎜🎜🎜🎜Autres utilisations🎜🎜1. laravel-queue-rabbitmq+Démon Superviseur. Essentiellement, il s'agit de changer le pilote de file d'attente, et l'utilisation n'est pas différente de redis ; 🎜🎜2 Vous pouvez utiliser une utilisation similaire à celle-ci : java exploite RabbitMQ, sans laravel, en utilisant la méthode connexion + producteur + consommateur ; 3. Vous pouvez également utiliser une utilisation plus complexe, comme accéder à d'autres protocoles de communication (tels que MQTT), vous abonner à des sujets, etc. Pour une utilisation spécifique, veuillez vous référer au site officiel de RabbitMQ. 🎜🎜🎜🎜Résumé🎜🎜L'utilisation régulière de laravel+redis queue+Supervisor peut déjà répondre à nos besoins quotidiens. Selon "Engineering Cybernetics" de Qian Lao - pour un système, la technologie la plus récente ou la plus avancée n'est peut-être pas la meilleure. Ce qui convient au système et garantit la stabilité du système est le meilleur. 🎜🎜Bien sûr, à l'inverse, nous ne pouvons pas nous en tenir aux anciennes règles. Nos ensembles de compétences doivent être mis à jour et améliorés en temps opportun, afin que nous puissions être dignes de nous-mêmes et de la carrière que nous aimons. 🎜🎜🎜Recommandations associées : 🎜Les cinq derniers didacticiels vidéo Laravel🎜🎜🎜

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
    Polyvylity de Laravel: des sites simples aux systèmes complexesPolyvylity de Laravel: des sites simples aux systèmes complexesApr 13, 2025 am 12:13 AM

    Le projet de développement de Laravel a été choisi en raison de sa flexibilité et de sa puissance pour répondre aux besoins de différentes tailles et complexités. Laravel fournit un système de routage, Eloquentorm, une ligne de commande artisanale et d'autres fonctions, soutenant le développement de blogs simples aux systèmes complexes au niveau de l'entreprise.

    Laravel (PHP) contre Python: environnements de développement et écosystèmesLaravel (PHP) contre Python: environnements de développement et écosystèmesApr 12, 2025 am 12:10 AM

    La comparaison entre Laravel et Python dans l'environnement de développement et l'écosystème est la suivante: 1. L'environnement de développement de Laravel est simple, seul PHP et compositeur sont nécessaires. Il fournit une riche gamme de packages d'extension tels que Laravelforge, mais la maintenance des forfaits d'extension peut ne pas être opportun. 2. L'environnement de développement de Python est également simple, seuls Python et PIP sont nécessaires. L'écosystème est énorme et couvre plusieurs champs, mais la gestion de la version et de la dépendance peut être complexe.

    Laravel et le backend: alimentation logique d'application WebLaravel et le backend: alimentation logique d'application WebApr 11, 2025 am 11:29 AM

    Comment Laravel joue-t-il un rôle dans la logique backend? Il simplifie et améliore le développement backend par le biais de systèmes de routage, d'éloquente, d'authentification et d'autorisation, d'événements et d'auditeurs et d'optimisation des performances. 1. Le système de routage permet la définition de la structure d'URL et demande la logique de traitement. 2.Lao-éloquente simplifie l'interaction de la base de données. 3. Le système d'authentification et d'autorisation est pratique pour la gestion des utilisateurs. 4. L'événement et l'écoute implémentent la structure de code couplée de manière lâche. 5. L'optimisation des performances améliore l'efficacité de l'application par la mise en cache et la file d'attente.

    Pourquoi Laravel est-il si populaire?Pourquoi Laravel est-il si populaire?Apr 02, 2025 pm 02:16 PM

    La popularité de Laravel comprend son processus de développement simplifié, offrant un environnement de développement agréable et des caractéristiques riches. 1) Il absorbe la philosophie de conception des rubyonrails, combinant la flexibilité de PHP. 2) Fournir des outils tels que l'éloquente, le moteur de modèle de lame, etc. pour améliorer l'efficacité du développement. 3) Son mécanisme d'architecture MVC et d'injection de dépendance rend le code plus modulaire et testable. 4) fournit des outils de débogage puissants et des méthodes d'optimisation des performances telles que les systèmes de mise en cache et les meilleures pratiques.

    Quel est le meilleur, Django ou Laravel?Quel est le meilleur, Django ou Laravel?Mar 28, 2025 am 10:41 AM

    Django et Laravel sont tous deux des frameworks à pile. Django convient aux développeurs Python et à la logique métier complexe, tandis que Laravel convient aux développeurs PHP et à la syntaxe élégante. 1.Django est basé sur Python et suit la philosophie "Battery-Complete", adaptée au développement rapide et à une grande concurrence. 2.Laravel est basé sur PHP, mettant l'accent sur l'expérience du développeur et convient aux projets de petite et moyenne taille.

    Quel est le meilleur PHP ou Laravel?Quel est le meilleur PHP ou Laravel?Mar 27, 2025 pm 05:31 PM

    PHP et Laravel ne sont pas directement comparables, car Laravel est un cadre basé sur PHP. 1.Php convient aux petits projets ou à un prototypage rapide car il est simple et direct. 2. Laravel convient à de grands projets ou à un développement efficace car il offre des fonctions et des outils riches, mais a une courbe d'apprentissage abrupte et peut ne pas être aussi bon que PHP pur.

    Laravel est-il un frontend ou un backend?Laravel est-il un frontend ou un backend?Mar 27, 2025 pm 05:31 PM

    LaravelisabackendFrameworkBuiltonPhp, conçue pourwebapplicationdevelopment.itfocusonServer-sidelogic, databasemanagement, andapplicationsstructure, andcanbenegrategratedwithfrontentechnologies likevue.jsorrectForfull-stackdevelopment.

    Comment créer et utiliser des directives de lame personnalisées à Laravel?Comment créer et utiliser des directives de lame personnalisées à Laravel?Mar 17, 2025 pm 02:50 PM

    L'article discute de la création et de l'utilisation des directives de lame personnalisées à Laravel pour améliorer les modèles. Il couvre la définition des directives, les utilisant dans des modèles et les gérer dans de grands projets, mettant en évidence des avantages tels que l'amélioration de la réutilisabilité du code et R

    See all articles

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    Article chaud

    R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
    3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Meilleurs paramètres graphiques
    3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Comment réparer l'audio si vous n'entendez personne
    3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Comment déverrouiller tout dans Myrise
    4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

    Outils chauds

    Dreamweaver Mac

    Dreamweaver Mac

    Outils de développement Web visuel

    MinGW - GNU minimaliste pour Windows

    MinGW - GNU minimaliste pour Windows

    Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

    Adaptateur de serveur SAP NetWeaver pour Eclipse

    Adaptateur de serveur SAP NetWeaver pour Eclipse

    Intégrez Eclipse au serveur d'applications SAP NetWeaver.

    VSCode Windows 64 bits Télécharger

    VSCode Windows 64 bits Télécharger

    Un éditeur IDE gratuit et puissant lancé par Microsoft

    PhpStorm version Mac

    PhpStorm version Mac

    Le dernier (2018.2.1) outil de développement intégré PHP professionnel