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

相关推荐
轻刀快马3 小时前
讲透分布式系统的演进史与核心架构
开发语言·架构·php
zb200641203 小时前
Laravel5.x核心特性全解析
android·spring boot·php·laravel
zhangfeng11333 小时前
ThinkPHP5 事件系统的标准最佳实践 事件系统的完整设计逻辑tags.php tags.php(事件地图)
android·开发语言·php
byzh_rc4 小时前
[DL_Net从入门到入土] 生成对抗网络 GAN
人工智能·生成对抗网络·php
zb200641204 小时前
Laravel4.x核心特性全解析
spring boot·后端·php·laravel
Devin~Y4 小时前
大厂Java面试实录:Spring Boot微服务 + Redis缓存 + Kafka消息队列 + Prometheus链路追踪 + RAG向量检索
java·spring boot·redis·spring cloud·kafka·rabbitmq·spring mvc
phltxy4 小时前
RabbitMQ 入门与安装
分布式·rabbitmq
逻极5 小时前
RabbitMQ 从入门到精通:构建高可用、高性能的消息中间件系统
分布式·rabbitmq·消息中间件
不正经的小寒19 小时前
PHP 8.4 核心特性
php
不正经的小寒21 小时前
PHP 8.3 核心特性
php