laravel rabbitmq 队列

安装Laravel的RabbitMQ队列驱动:

复制代码
composer require vladimir-yuldashev/laravel-queue-rabbitmq

env文件配置

复制代码
#rabbitmq
QUEUE_CONNECTION=rabbitmq  #修改一下
RABBITMQ_HOST=192.168.11.4  #要连接的主机名
RABBITMQ_PORT=5671         #端口号
RABBITMQ_VHOST=/
RABBITMQ_USER=root       #mq登录名
RABBITMQ_PASSWORD=root     #mq登录密码
RABBITMQ_QUEUE=test11111         #mq连接的名称(随便写)

创建一个新的队列任务类

复制代码
php artisan make:job ProcessPodcast

ProcessPodcast任务类中实现handle方法

php 复制代码
<?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\Log;
class ProcessPodcast implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    private $data;
    /**
     * Create a new job instance.
     */
    public function __construct($data)
    {
        $this->data = $data;
    }

    /**
     * Execute the job.
     */
    public function handle(): void
    {
        // 处理业务...
        echo json_encode(['1----'.date('Y-m-d H:i:s',time())]);
        sleep(5);
        echo json_encode(['2----'.date('Y-m-d H:i:s',time())]);
        sleep(5);
        echo json_encode(['3----'.date('Y-m-d H:i:s',time())]);
        sleep(5);
        echo json_encode(['4----'.date('Y-m-d H:i:s',time())]);

        $this->data['exec_time'] = date('Y-m-d H:i:s');

        Log::info($this->data);
        echo json_encode($this->data);
    }
}

配置 config/app.php 增加

php 复制代码
VladimirYuldashev\LaravelQueueRabbitMQ\LaravelQueueRabbitMQServiceProvider::class,

配置 config/queue.php 增加

php 复制代码
'rabbitmq' => [
        'driver'                => 'rabbitmq',

        'host'                  => env('RABBITMQ_HOST', '192.168.11.4'),
        'port'                  => env('RABBITMQ_PORT', 5671),

        'vhost'                 => env('RABBITMQ_VHOST', '/'),
        'login'                 => env('RABBITMQ_LOGIN', 'root'),
        'password'              => env('RABBITMQ_PASSWORD', 'root'),

        'queue'                 => env('RABBITMQ_QUEUE'), // name of the default queue,

        'exchange_declare'      => env('RABBITMQ_EXCHANGE_DECLARE', true), // create the exchange if not exists
        'queue_declare_bind'    => env('RABBITMQ_QUEUE_DECLARE_BIND', true), // create the queue if not exists and bind to the exchange

        'queue_params'          => [
            'passive'           => env('RABBITMQ_QUEUE_PASSIVE', false),
            'durable'           => env('RABBITMQ_QUEUE_DURABLE', true),
            'exclusive'         => env('RABBITMQ_QUEUE_EXCLUSIVE', false),
            'auto_delete'       => env('RABBITMQ_QUEUE_AUTODELETE', false),
        ],

        'exchange_params' => [
            'name'        => env('RABBITMQ_EXCHANGE_NAME', null),
            'type'        => env('RABBITMQ_EXCHANGE_TYPE', 'direct'), // more info at http://www.rabbitmq.com/tutorials/amqp-concepts.html
            'passive'     => env('RABBITMQ_EXCHANGE_PASSIVE', false),
            'durable'     => env('RABBITMQ_EXCHANGE_DURABLE', true), // the exchange will survive server restarts
            'auto_delete' => env('RABBITMQ_EXCHANGE_AUTODELETE', false),
        ],

    ],

控制器 TestController

php 复制代码
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Jobs\ProcessPodcast;

class TestController extends Controller
{

    /**
     * 队列
     * */
    public function rabbitmqTest(){
        // 在控制器或其他逻辑中
        $job = new ProcessPodcast(['zh'=>1]);
        dd(dispatch($job));
    }

}

运行

php 复制代码
php artisan queue:work

ACCESS_REFUSED -使用身份验证机制AMQPLAIN时登录被拒绝

解决方案,ACCESS_REFUSED -使用身份验证机制AMQPLAIN时登录被拒绝-CSDN博客

相关推荐
今天和Aboo结婚了吗2 小时前
【Broker一重启消息没了:一次RabbitMQ非持久化+没开Confirm的血亏事故】
java·rabbitmq·messagequeue·bug排查
H5css�海秀8 小时前
今天是自学大模型的第一天(sanjose)
后端·python·node.js·php
xingxin329 小时前
日志文件分析溯源(连接WebShell的IP地址)实验报告
安全·web安全·网络安全·php·文件上传
LegendNoTitle10 小时前
计算机三级等级考试 网络技术 选择题考点详细梳理
服务器·前端·经验分享·笔记·php
三七吃山漆17 小时前
[红明谷CTF 2021]write_shell
php·ctf·[红明谷ctf 2021]
standovon17 小时前
RabbitMQ 的介绍与使用
分布式·rabbitmq·ruby
ZHOUPUYU19 小时前
PHP与WebSocket实时通信的原理到生产级应用
开发语言·html·php
困死,根本不会20 小时前
树莓派 SSH 连接排错实录:从 IP 网段到主机密钥变更,再到 VNC 自启动
开发语言·ssh·php·树莓派
天远云服1 天前
驾培系统车辆核验实战:PHP集成天远二手车估值API实现学员车辆信息自动化管理
大数据·开发语言·自动化·php
ZHOUPUYU1 天前
PHP异步编程实战ReactPHP到Swoole的现代方案
开发语言·php