ホームページ > PHPフレームワーク > Laravel > laravelでRabbitMQを使う方法(Homestead環境)

laravelでRabbitMQを使う方法(Homestead環境)

青灯夜游
リリース: 2022-02-14 14:04:17
転載
3372 人が閲覧しました

Homestead環境でLaravelでRabbitMQを使用するにはどうすればよいですか? Homestead (ubuntu) Laravel で RabbitMQ を使用する方法を次の記事で紹介しますので、ご参考になれば幸いです。

laravelでRabbitMQを使う方法(Homestead環境)

RabbitMQ を使用した Homestead(ubuntu) Laravel

使用法 1: laravel-queue-rabbitmq を単独で使用する

Laravel のインストール RabbitMQ:
まず、laravel-queue-rabbitmq でサポートされている laravel のバージョン情報に注意してください:

##962021 年 10 月 5 日ドキュメント106、72021 年 10 月 5 日Documentation1182021 年 4 月 6 日Documentation

インストール コマンドを実行します:

composer require vladimir-yuldashev/laravel-queue-rabbitmq
ログイン後にコピー

インストールが完了するまで待ち、<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;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><div class="contentsignin">ログイン後にコピー</div></div>

config/queue.php

に追加して、 config/ 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
ログイン後にコピー

コマンドを実行してタスク クラスを生成します:

php artisan make:job TestQueue
ログイン後にコピー

Modify 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でRabbitMQを使う方法(Homestead環境)

Queue消費が成功した場合、データベースを確認すると、データも書き込まれます。正常に入力します。

使い方 2: laravel-queue-rabbitmq を使用する Rabbitmq-server

ここで疑問が生じますが、方法 1 は普通に使えるのですが、なぜそうする必要があるのでしょうか。これを追加しますrabbitmq-serverrabbitmq-server は何をしますか?
公式説明によると—RabbitMQ は機能が豊富なマルチプロトコル メッセージング ブローカーであり、サポートしています:

  • AMQP 0-9-1

  • AMQP 1.0

  • ##MQTT 3.1.1

  • STOMP 1.0 ~ 1.2

十分な翻訳: RabbitMQ は、機能が豊富なマルチプロトコル メッセージ ブローカーです。以下のプロトコルをサポートしています。

RabbitMQ 公式 Web サイトの説明によると:

RabbitMQ は多くのオペレーティング システムとクラウド環境で実行され、最も一般的な言語に対応する幅広い開発者ツールを提供します。

翻訳:

RabbitMQ は多くのオペレーティング システムおよびクラウド環境で実行され、最も一般的な言語に対応する幅広い開発ツールを提供します。

要約すると: 方法 1 は、laravel キューメソッドを使用します。これは比較的単純で、キュー内にあまり多くの概念的なもの (プロデューサーやコンシューマーなど) が関与しません。 .)、rabbitmq-server を使用すると、全員にサーバーが提供されます。言語に関係なく、アカウントとパスワードを使用して、対応する host port# に接続します。 ## は RabbitMQ を使用できます。同様のものにはEMQX(mqttサーバー)などがあります。また、rabbitmq-server は、キューの関連ステータスを表示して管理を容易にする管理バックグラウンドを提供します。 rabbitmq-server を開始します:

sudo service rabbitmq-server start
ログイン後にコピー

キューを開きます:

php artisan queue:work
ログイン後にコピー
ログイン後にコピー

キューをテストします (コードはメソッド 1 のコードと同じです) 結果:

laravelでRabbitMQを使う方法(Homestead環境)

laravelでRabbitMQを使う方法(Homestead環境)

注: config/queue の

username と #。 php ##password での接続にデフォルトのゲスト アカウントとパスワードを使用しないでください。そうしないと、エラーが報告されます:

The connection timed out after 3 sec while awaiting incoming data
ログイン後にコピー
管理者アカウントとパスワードは、前の記事で追加されています。このアカウントとパスワードを使用するには、管理者アカウントに権限を追加する必要もあります:
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
ログイン後にコピー

rabbitmq-server

管理バックグラウンドでユーザー権限を確認します:

権限は laravel 队列之laravelでRabbitMQを使う方法(Homestead環境)Can access virtual hosts

/ が表示され、権限がない場合は No Access が表示されます。

その他の使用法

1. laravel-queue-rabbitmq スーパーバイザー デーモン。本質的には、キュー ドライバーを変更することであり、使用法は redis と変わりません;

2. これと同様の使用法を使用できます: Java は RabbitMQ を操作し、laravel から離脱し、メソッドを使用します。プロデューサーとコンシューマーの接続;

3. 他の通信プロトコル (MQTT など) へのアクセス、トピックのサブスクライブなど、より複雑な使用法も使用できます。具体的な使用法については、RabbitMQ 公式を参照してください。 Webサイト。

概要

laravel redis queue Supervisor を定期的に使用することで、すでに日常のニーズを満たすことができます。 Qian Lao 氏の「エンジニアリング サイバネティクス」によれば、システムにとって、最新または最先端のテクノロジーが最良であるとは限らず、システムに適しており、システムの安定性を保証するものが最良であると考えられています。

もちろん、その一方で、古いルールに固執することはできません。私たちが自分自身と愛するキャリアにふさわしい人間になるためには、スキル パッケージをタイムリーに更新し、改善する必要があります。

関連する推奨事項:

最新の 5 つの Laravel ビデオ チュートリアル

パッケージのバージョン Laravel バージョン バグ修正まで

以上がlaravelでRabbitMQを使う方法(Homestead環境)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート