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博客

相关推荐
龙哥·三年风水6 小时前
活动系统开发之采用设计模式与非设计模式的区别-后台功能总结
设计模式·php·tinkphp6
白总Server8 小时前
MySQL在大数据场景应用
大数据·开发语言·数据库·后端·mysql·golang·php
yukai080089 小时前
Python 全栈系列271 微服务踩坑记
python·微服务·php
向宇it10 小时前
一张图解析FastAdmin中的弹出窗口的功能(备份)
php·fastadmin
最美不过下雨天啊11 小时前
php curl发送get、post请求
php
xcx00314 小时前
快充协议方案,Type-C接口受电端Sink取电快充协议芯片
zookeeper·rabbitmq·flume·memcached·storm
杰信步迈入C++之路15 小时前
【RabbitMQ】快速上手
分布式·rabbitmq·ruby
c1tenj215 小时前
docker创建rabbitmq容器
java·rabbitmq·java-rabbitmq
程序员小猪。16 小时前
laravel public 目录获取
laravel·public·public目录
sdg_advance18 小时前
RabbitMQ消费者确认和重复机制
rabbitmq·java-rabbitmq