Laravel 使用 RabbitMQ 案例

1. 首先安装 PHP 扩展 amqp
2.Docker 安装 RabbitMq 将以下内容追加到 docker-compose.yml
  rabbitmq:
        container_name: xb_rabbitmq # 容器名称
        image: rabbitmq:management  # 镜像
        networks:
          - wb_net
        ports:
          - 15673:15672
          - 5673:5672
        volumes:
          - './storage/rabbitmq:/var/lib/rabbitmq' # 映射目录
3.重新构建镜像
docker-compose up -d
4.RabbitMq 后台地址 账号密码:guest

以上完成 RabbitMq 前提工作

5.安装
composer require vladimir-yuldashev/laravel-queue-rabbitmq
6.config/queue.php文件在connections中追加
        'rabbitmq' => [

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

            'hosts' => [
                [
                    'host' => env('RABBITMQ_HOST', '192.168.159.166'),
                    'port' => env('RABBITMQ_PORT', 15672),
                    'user' => env('RABBITMQ_USER', 'admin'),
                    'password' => env('RABBITMQ_PASSWORD', 'admin'),
                    '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),
                ],
            ],

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

        ],

7. env 追加配置 后 执行 php artisan config:cache

QUEUE_CONNECTION=rabbitmq # 更改


RABBITMQ_HOST=xb_rabbitmq # 容器名称
RABBITMQ_PORT=5672
#通过15672创建的rabbitmq虚拟主机,默认是'/'
RABBITMQ_VHOST=/
RABBITMQ_USER=guest
RABBITMQ_PASSWORD=guest
#通过15672创建的rabbitmq队列
RABBITMQ_QUEUE=rebbitmq
8.创建 job:php artisan make:job Queue
<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;


class Queue implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Log::info('mq-执行end');
    }
}

9.监听队列

php artisan queue:work
10.创建控制器:php artisan make:controller QueueController
<?php

namespace App\Http\Controllers;

use App\Jobs\Queue;

class QueueController extends Controller
{

    public function mq()
    {
        Queue::dispatch();
    }
}
11.写入路由并访问此Api
Route::get('mq', [\App\Http\Controllers\QueueController::class,'mq']);

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值