laravel rabbitmq 队列

server/2024/12/22 9:18:42/
  1. 安装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"><?phpnamespace 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"><?phpnamespace 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博客

 


http://www.ppmy.cn/server/26217.html

相关文章

Axios 库相关

目录 一、含义 二、作用 三、使用 1. 安装 Axios 2. 引入 Axio 3. 发送 GET 请求 4. 发送 POST 请求 5. 设置请求头&#xff1a;通过 headers 选项设置请求头 6. 取消请求&#xff1a;Axios 允许取消请求&#xff0c;可以使用 CancelToken 来实现 一、含义 Axios是一个…

js中onchange的使用场景及如何使用

使用场景&#xff1a; onchange 事件常用于表单元素&#xff08;如 input、select、textarea 等&#xff09;的值发生改变时触发相应的操作。可以用于实时监测用户输入的内容&#xff0c;进行验证或实时更新相关内容。 示例代码&#xff1a; <!DOCTYPE html> <html…

Spring MVC入门程序

SpringMVC入门程序 一、实现思路 掌握Spring MVC入门程序&#xff0c;能够实现入门程序的编写 二、编码实现 1、新建项目 项目&#xff1a;maven&#xff0c;原型&#xff1a;maven-archetype-webapp&#xff0c;GroupID&#xff1a;com.sw 引入pom依赖 2、补充项目目录 src…

html中引用视频文件的方式有哪些?

在HTML中引用视频文件的方式有以下几种&#xff1a; 使用 <video> 标签&#xff1a;通过使用 <video> 标签来嵌入视频文件&#xff0c;可以设置视频的大小、播放控件和其他属性。示例代码如下&#xff1a; <video src"video.mp4" controls width&qu…

iview 自定义项求和的方法和错误点

这是iview自定义某几项参数合计的方法&#xff0c;其实是蛮简单的&#xff0c;很多人自定义合计的时候&#xff0c;老是会不知道怎么处理除了需要合计的几项的其他项&#xff0c;其实不需要管&#xff0c;不需要合计的项直接返回空就好了&#xff0c;需要的就在计算的里面做key…

C++ | Leetcode C++题解之第61题旋转链表

题目&#xff1a; 题解&#xff1a; class Solution { public:ListNode* rotateRight(ListNode* head, int k) {if (k 0 || head nullptr || head->next nullptr) {return head;}int n 1;ListNode* iter head;while (iter->next ! nullptr) {iter iter->next;n…

基于FPGA的数字信号处理(4)--浮点数的定点化

写在前面 首先要说明的是&#xff0c;题目《浮点数的定点化》中所谓的 浮点数 并不是指 IEEE754 规定的 单精度浮点数 或者 双精度浮点数 等格式&#xff0c;而是指10进制小数。所以说白了&#xff0c;这篇文章要讲的就是如何将10进制小数采用定点数的形式表示。 为什么2进制无…

36. BI - 详细讲解机器学习分支之强化学习的概念和实际案例:迷宫问题

本文为 「茶桁的 AI 秘籍 - BI 篇 第 36 篇」 文章目录 什么是强化学习迷宫问题 Hi&#xff0c;你好。我是茶桁。 上一节课上利用 GCN 去完成了一个恶意软件的检测&#xff0c;同时为了做对比&#xff0c;还使用 LSTM 也完成了一遍。大家可以去我的代码仓库中去找到源代码&…