찾다
PHP 프레임워크LaravelLaravel(Homestead 환경)에서 RabbitMQ를 사용하는 방법

Homestead 환경에서 Laravel과 함께 RabbitMQ를 어떻게 사용하나요? 다음 글에서는 Homestead(ubuntu) + Laravel과 함께 RabbitMQ를 사용하는 방법을 소개하겠습니다. 도움이 되셨으면 좋겠습니다!

Laravel(Homestead 환경)에서 RabbitMQ를 사용하는 방법

Homestead(ubuntu) + RabbitMQ를 사용하는 Laravel

사용법 1: laravel-queue-rabbitmq만 사용

laravel 설치 RabbitMQ:
먼저 laravel-queue-에서 지원하는 laravel 버전 정보에 주목하세요. Rabbitmq:

패키지 버전 Laravel 버전 버그 수정 종료일
9 6 2021년 10월 5일 문서
10 6, 7 2021년 10월 5일 문서
11 8 2021년 4월 6일 문서

설치 명령 실행:

composer require vladimir-yuldashev/laravel-queue-rabbitmq

설치가 완료될 때까지 기다린 후 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

调用函数后执行结果:

Laravel(Homestead 환경)에서 RabbitMQ를 사용하는 방법

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

用法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代码一样)结果:

Laravel(Homestead 환경)에서 RabbitMQ를 사용하는 방법

Laravel(Homestead 환경)에서 RabbitMQ를 사용하는 방법

注意:

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 队列之Laravel(Homestead 환경)에서 RabbitMQ를 사용하는 방법

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

config/queue.php에 추가하고 config/queue.php에서 수정합니다. >: TestQueue.php 코드 수정:

rrreee

대기열 함수 호출:

rrreee

대기열 열기:

rrreee

실행 결과 함수 호출 후:

Homestead(우분투)에서 laravel과 함께 RabbitMQ 사용 - 실전편

Queue 소비 성공, 데이터베이스 확인 후 정상적으로 데이터가 기록됩니다.

사용법 2: laravel-queue-rabbitmq+rabbitmq-server 사용하기

이때 방법 1도 정상적으로 사용할 수 있는데 왜 rabbitmq-server를 추가해야 합니까? >, rabbitmq-server는 무슨 일을 하나요? 공식 설명에 따르면 RabbitMQ는 기능이 풍부한 다중 프로토콜 메시징 브로커입니다.

  • AMQP 0-9-1
  • 🎜AMQP 1.0🎜
  • 🎜MQTT 3.1.1🎜
  • 🎜STOMP 1.0 ~ 1.2🎜
  • 🎜번역은 다음과 같습니다: RabbitMQ 기능이 풍부한 다중 프로토콜 메시지 브로커입니다. 다음 프로토콜을 지원합니다. 🎜🎜🎜RabbitMQ 공식 웹사이트의 설명에 따르면:🎜🎜RabbitMQ는 다양한 운영 체제와 클라우드 환경에서 실행되며 가장 널리 사용되는 언어에 대한 광범위한 개발자 도구를 제공합니다.🎜🎜번역:🎜🎜RabbitMQ는 다양한 운영 체제에서 실행됩니다. 시스템 및 클라우드 환경 환경을 제공하며 가장 널리 사용되는 언어에 대한 광범위한 개발 도구를 제공합니다. 🎜🎜🎜🎜🎜요약하자면, 방법 1은 라라벨 큐 사용 방법을 사용하는데, 이는 상대적으로 간단하고 큐(생산자, 소비자 등)에 너무 많은 개념적 사항을 포함하지 않으며 rabbitmq를 사용합니다. -server는 언어에 관계없이 모든 사람을 위한 서버를 제공합니다. 계정과 비밀번호를 사용하여 해당 호스트포트에 연결하면 됩니다. .RabbitMQ. 유사한 것으로는 EMQX(mqtt 서버) 등이 있습니다. 그리고 rabbitmq-server는 쉬운 관리를 위해 대기열의 관련 상태를 볼 수 있는 관리 배경을 제공합니다. 🎜🎜rabbitmq-server 시작: 🎜rrreee🎜큐 열기: 🎜rrreee🎜큐 테스트(코드는 방법 1과 동일) 결과: 🎜🎜Homestead에서 Laravel과 함께 RabbitMQ 사용(ubuntu) - 실제 전투🎜🎜Homestead에서 laravel과 함께 RabbitMQ 사용(ubuntu) - 실습 장🎜🎜🎜🎜참고: 🎜🎜 in config/queue. php 사용자 이름비밀번호에 기본 게스트 계정과 비밀번호를 사용하여 연결하지 마세요. 그렇지 않으면 오류가 보고됩니다: 🎜rrreee🎜관리자 계정 및 비밀번호 이전에 추가되었으므로 이 계정과 비밀번호를 사용하십시오. 또한 관리자 계정에 권한을 추가해야 합니다: 🎜rrreee🎜 rabbitmq-server 관리 백그라운드에서 사용자 권한을 확인하십시오: 🎜🎜Homestead(우분투)에서 RabbitMQ를 사용하는 라라벨 큐 - 실습 장🎜🎜권한은 가상 호스트에 접근할 수 있습니다 표시/, 권한이 없으면 No Access가 표시됩니다. 🎜🎜🎜🎜기타 사용법🎜🎜1.laravel-queue-rabbitmq+Supervisor 데몬. 본질적으로 큐 드라이버를 변경하는 것이며 사용법은 redis와 다르지 않습니다. 🎜🎜2 다음과 유사한 사용법을 사용할 수 있습니다. java는 laravel 없이 연결 + 생산자 + 소비자 방법을 사용하여 RabbitMQ를 작동합니다. 3. 다른 통신 프로토콜(예: MQTT) 액세스, 주제 구독 등 보다 복잡한 사용법을 사용할 수도 있습니다. 구체적인 사용법은 RabbitMQ 공식 웹사이트를 참조하세요. 🎜🎜🎜🎜요약🎜🎜laravel+redis queue+Supervisor를 정기적으로 사용하면 일상적인 요구 사항을 충족할 수 있습니다. Qian Lao의 "엔지니어링 사이버네틱스"에 따르면 시스템에 있어서 최신 또는 가장 진보된 기술은 시스템에 적합하고 시스템의 안정성을 보장하는 것이 최고가 아닐 수 있습니다. 🎜🎜물론, 우리는 규칙을 고수할 수 없으며, 우리가 사랑하는 직업과 우리 자신에게 합당할 수 있도록 기술 패키지를 적시에 업데이트하고 개선해야 합니다. 🎜🎜🎜관련 추천: 🎜최신 5개의 Laravel 비디오 튜토리얼🎜🎜🎜

    위 내용은 Laravel(Homestead 환경)에서 RabbitMQ를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명
    이 기사는 learnku에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
    laravel单点登录方法详解laravel单点登录方法详解Jun 15, 2022 am 11:45 AM

    本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于单点登录的相关问题,单点登录是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,下面一起来看一下,希望对大家有帮助。

    一起来聊聊Laravel的生命周期一起来聊聊Laravel的生命周期Apr 25, 2022 pm 12:04 PM

    本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于Laravel的生命周期相关问题,Laravel 的生命周期从public\index.php开始,从public\index.php结束,希望对大家有帮助。

    laravel中guard是什么laravel中guard是什么Jun 02, 2022 pm 05:54 PM

    在laravel中,guard是一个用于用户认证的插件;guard的作用就是处理认证判断每一个请求,从数据库中读取数据和用户输入的对比,调用是否登录过或者允许通过的,并且Guard能非常灵活的构建一套自己的认证体系。

    laravel中asset()方法怎么用laravel中asset()方法怎么用Jun 02, 2022 pm 04:55 PM

    laravel中asset()方法的用法:1、用于引入静态文件,语法为“src="{{asset(‘需要引入的文件路径’)}}"”;2、用于给当前请求的scheme前端资源生成一个url,语法为“$url = asset('前端资源')”。

    实例详解laravel使用中间件记录用户请求日志实例详解laravel使用中间件记录用户请求日志Apr 26, 2022 am 11:53 AM

    本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于使用中间件记录用户请求日志的相关问题,包括了创建中间件、注册中间件、记录用户访问等等内容,下面一起来看一下,希望对大家有帮助。

    laravel中间件基础详解laravel中间件基础详解May 18, 2022 am 11:46 AM

    本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于中间件的相关问题,包括了什么是中间件、自定义中间件等等,中间件为过滤进入应用的 HTTP 请求提供了一套便利的机制,下面一起来看一下,希望对大家有帮助。

    laravel路由文件在哪个目录里laravel路由文件在哪个目录里Apr 28, 2022 pm 01:07 PM

    laravel路由文件在“routes”目录里。Laravel中所有的路由文件定义在routes目录下,它里面的内容会自动被框架加载;该目录下默认有四个路由文件用于给不同的入口使用:web.php、api.php、console.php等。

    laravel的fill方法怎么用laravel的fill方法怎么用Jun 06, 2022 pm 03:33 PM

    在laravel中,fill方法是一个给Eloquent实例赋值属性的方法,该方法可以理解为用于过滤前端传输过来的与模型中对应的多余字段;当调用该方法时,会先去检测当前Model的状态,根据fillable数组的设置,Model会处于不同的状态。

    See all articles

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    AI Hentai Generator

    AI Hentai Generator

    AI Hentai를 무료로 생성하십시오.

    뜨거운 도구

    Atom Editor Mac 버전 다운로드

    Atom Editor Mac 버전 다운로드

    가장 인기 있는 오픈 소스 편집기

    Dreamweaver Mac版

    Dreamweaver Mac版

    시각적 웹 개발 도구

    안전한 시험 브라우저

    안전한 시험 브라우저

    안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

    DVWA

    DVWA

    DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

    mPDF

    mPDF

    mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.