Bagaimana untuk menggunakan RabbitMQ dengan Laravel dalam persekitaran Homestead? Artikel berikut akan memperkenalkan kepada anda cara menggunakan RabbitMQ dalam Homestead (ubuntu) Laravel Saya harap ia akan membantu anda!
Pemasangan laravel RabbitMQ:
Perhatikan dahulu maklumat versi laravel yang disokong oleh laravel-queue-rabbitmq:
Pakej Versi | Versi Laravel | Pepijat Pembetulan Sehingga |
|
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
9 | 6 | 5 Oktober 2021 | Dokumentasi | ||||||||||||||||
10 | 6 , 7 | 5 Oktober 2021 | Dokumentasi | ||||||||||||||||
11 | 8 | 6hb April 2021 | Dokumentasi |
Laksanakan arahan pemasangan:
composer require vladimir-yuldashev/laravel-queue-rabbitmq
Tunggu pemasangan selesai dan tambah: 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'), ], // ... ],
dan ubah suainya kepada config/queue.php
:
//把sync修改为rabbitmq,同理使用redis驱动则修改为redis 'default' => env('QUEUE_CONNECTION', 'sync'), 'default' => env('QUEUE_CONNECTION', 'rabbitmq'), //或者修改.env下QUEUE_CONNECTION=rabbitmq QUEUE_CONNECTION=rabbitmq
Laksanakan arahan untuk menjana kelas tugas:
php artisan make:job TestQueue
Ubah suai kod 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"]] ); } }
Panggil fungsi baris gilir:
public function test(Request $request){ $data = ["name" => "李大", "phone" => "12345678901"]; $this->dispatch(new TestQueue($data)); }
Dayakan Baris:
php artisan queue:work
Hasil pelaksanaan selepas memanggil fungsi:
Penggunaan baris gilir berjaya, semak pangkalan data, dan data ditulis secara normal.
Pada ketika ini, akan timbul soalan Memandangkan kaedah 1 boleh digunakan seperti biasa, mengapa perlu kami menambah< Apa yang 🎜> dan rabbitmq-server
buat? rabbitmq-server
Menurut penerangan rasmi - RabbitMQ ialah broker pemesejan berbilang protokol yang kaya dengan ciri yang menyokong:
Menurut huraian di tapak web rasmi RabbitMQ:RabbitMQ berjalan pada banyak sistem pengendalian dan persekitaran awan, dan menyediakan pelbagai alat pembangun untuk kebanyakan bahasa popular. Diterjemah: RabbitMQ berjalan pada banyak sistem pengendalian dan persekitaran awan dan menyediakan pelbagai alatan pembangunan untuk kebanyakan bahasa popular.
rabbitmq-server
dan host
yang sepadan untuk menggunakan RabbitMQ. Yang serupa termasuk EMQX (mqtt server) dan sebagainya. Dan port
menyediakan latar belakang pengurusan yang membolehkan anda melihat status baris gilir yang berkaitan untuk pengurusan yang mudah. rabbitmq-server
sudo service rabbitmq-server start
php artisan queue:work
dan config/queue.php
Akaun dan kata laluan untuk menyambung, jika tidak, ralat akan dilaporkan: username
password
The connection timed out after 3 sec while awaiting incoming data
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
rabbitmq-server
Jika anda mempunyai kebenaran, ia akan memaparkan
, jika anda tidak mempunyai kebenaran, ia akan memaparkan Can access virtual hosts
. /
No Access
2. Anda boleh menggunakan penggunaan yang serupa dengan ini: Java mengendalikan RabbitMQ, melepaskan diri dari laravel dan menggunakan; kaedah menghubungkan pengeluar dan pengguna;
3 Anda juga boleh menggunakan penggunaan yang lebih kompleks, seperti mengakses protokol komunikasi lain (seperti MQTT), melanggan topik, dll. Untuk penggunaan khusus, sila rujuk kepada Laman web rasmi RabbitMQ.
Sudah tentu, sebaliknya, kita tidak boleh berpegang pada peraturan lama, dan pakej kemahiran kita mesti dikemas kini dan dipertingkatkan tepat pada masanya, supaya kita layak untuk diri sendiri dan kerjaya yang kita cintai.
Cadangan berkaitan:Lima tutorial video Laravel terbaharu
Atas ialah kandungan terperinci Cara menggunakan RabbitMQ dalam laravel (persekitaran Homestead). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!