使用 RabbitMQ 前需要:

下载安装 Erlang :Windows 下安装 Erlang_Dragon-v的博客-CSDN博客

安装 PHP amqp 扩展:PHP 安装 amqp 扩展(Windows)_Dragon-v的博客-CSDN博客

开启 PHP sockets:PHP 开启 sockets_Dragon-v的博客-CSDN博客

1、在 RabbitMQ 的界面创建队列和路由:

RabbitMQ 创建 virtual host_Dragon-v的博客-CSDN博客

2、Composer 安装 laravel-queue-rabbitmq,下图是laravel和rabbitmq版本对应

composer require vladimir-yuldashev/laravel-queue-rabbitmq

3、在 config/queue.php 配置文件中的 connections 数组中加入以下配置

'rabbitmq' => ['driver' => 'rabbitmq','queue' => env('RABBITMQ_QUEUE', 'default'),'connection' => PhpAmqpLib\Connection\AMQPLazyConnection::class,'hosts' => [['host' => env('RABBITMQ_HOST', '127.0.0.1'),'port' => env('RABBITMQ_PORT', 5672),'user' => env('RABBITMQ_USER', 'guest'),'password' => env('RABBITMQ_PASSWORD', 'guest'),'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),],'queue' => ['job' => VladimirYuldashev\LaravelQueueRabbitMQ\Queue\Jobs\RabbitMQJob::class,/*//以下配置是rabbitmq 广播模式(direct)'exchange' => 'laravel_exchange2','exchange_type' => 'direct','exchange_routing_key' => 'userkey1',*//*//以下配置是rabbitmq 广播模式(topic)'exchange' => 'laravel_exchange1','exchange_type' => 'topic','exchange_routing_key' => 'user.info',*/],],/** Set to "horizon" if you wish to use Laravel Horizon.*/'worker' => env('RABBITMQ_WORKER', 'default'),],

4、修改 .env 文件

RABBITMQ_HOST=127.0.0.1
RABBITMQ_PORT=5672
#通过15672创建的rabbitmq虚拟主机,默认是'/'
RABBITMQ_VHOST=test-host
RABBITMQ_USER=guest
RABBITMQ_PASSWORD=guest
#通过15672创建的rabbitmq队列
RABBITMQ_QUEUE=laravel_swoole

5、创建任务类

php artisan make:job Queue

代码如下

<?phpnamespace App\Jobs;use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;class Queue implements ShouldQueue
{use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;public $data;/*** Create a new job instance.** @return void*/public function __construct($data){$this->data = $data;}/*** Execute the job.** @return void*/public function handle(){print_r($this->data);}
}

6、建一个控制器,代码如下,写个路由调用这个方法进行生产数据放入队列中

<?phpnamespace App\Http\Controllers;use App\Jobs\Queue;
use Illuminate\Http\Request;class TextController extends Controller
{public function aaa(Request $request){$user = [1,2,3,4,5];foreach ($user as $item) {//host-queue1 对应的队列名   $item为放入的值,也可以放入数组Queue::dispatch($item)->onConnection('rabbitmq')->onQueue('host-queue1');/* //以下配置是rabbitmq 路由模式(direct) 广播模式(topic)UserEmail::dispatch($user)->onConnection('rabbitmq');*/}return response()->json(['code'=>0, 'msg'=>"success"]);}}

7、消费队列,使用命令进行消费

php artisan queue:work rabbitmq --queue=host-queue1

效果如下:

如果队列中放的是数组那么效果如下

Laravel8 使用 RabbitMQ相关推荐

  1. rabbitMQ原理+Laravel8简单示例

    一.rabbitMQ原理 #mermaid-svg-tvLwZJeD2JH9GfUm .label{font-family:'trebuchet ms', verdana, arial;font-fa ...

  2. RabbitMQ 入门系列(11)— RabbitMQ 常用的工作模式(simple模式、work模式、publish/subscribe模式、routing模式、topic模式)

    1. simple 模式 simple 模式是最简单最常用的模式 2. work 模式 work 模式有多个消费者 消息产生者将消息放入队列.生产者系统不需知道哪一个任务执行系统在空闲,直接将任务扔到 ...

  3. Go 学习笔记(57)— Go 第三方库之 amqp (RabbitMQ 生产者、消费者整个流程)

    1. 安装 rabbitmq 的 golang 包 golang 可使用库 github.com/streadway/amqp 操作 rabbitmq .使用下面命令安装 RabbitMQ . go ...

  4. RabbitMQ 入门系列(4)— RabbitMQ 启动、停止节点和应用程序、用户管理、权限配置

    1. 服务器管理 我们使用 "节点" 来指代 RabbitMQ 实例,当我们谈到 RabbitMQ 节点时指的是 RabbitMQ 应用程序和其所在的 Erlang 节点. 1.1 ...

  5. RabbitMQ 入门系列(3)— 生产者消费者 Python 代码实现

    生产者消费者代码示例 上一章节中对消息通信概念做了详细的说明,本章节我们对 RabbitMQ 生产者和消费者代码分别做一示例说明. 1. 生产者代码 #!/usr/bin/env python # c ...

  6. RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器

    本系列是「RabbitMQ实战:高效部署分布式消息队列」和 「RabbitMQ实战指南」书籍的读书笔记. RabbitMQ 中重要概念 1. 生产者 生产者(producer)创建消息,然后发送到代理 ...

  7. RabbitMQ 入门系列(1)— Ubuntu 安装 RabbitMQ 及配置

    1. RabbitMQ 简介 消息 (Message) 是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串.JSON等,也可以很复杂,比如内嵌对象. 消息队列中间件(Message Que ...

  8. RabbitMQ超详细安装教程(Linux)

    目录 1.简介 2.下载安装启动RabbitMQ 2.1.下载RabbitMQ 2.2.下载Erlang 2.3.安装Erlang 2.4.安装RabbitMQ 2.5.启动RabbitMQ服务 3. ...

  9. 第五节 RabbitMQ在C#端的应用-消息收发

    原文:第五节 RabbitMQ在C#端的应用-消息收发 版权声明:未经本人同意,不得转载该文章,谢谢 https://blog.csdn.net/phocus1/article/details/873 ...

最新文章

  1. 去伪存真,更多区块链落地应用即将涌现
  2. HDU 1574 RP问题
  3. 【upc 9541 矩阵乘法】非正解
  4. python PyQt5 sizeHint()
  5. Keras学习笔记:序列式模型
  6. 漫步数学分析六——聚点
  7. 从生产线到生产岛:理解敏捷开发中的设计与测试活动
  8. linux自动更新漏洞,Linux爆本地提权漏洞 请立即更新udev程序
  9. AdventNet Agent Toolkit C Edition6 AGENT
  10. 计算机中丢失pbvm80,修复pbvm80.dll
  11. BugFree使用指南
  12. 项目管理之项目成本管理
  13. 概括几种项目类型使用的技术路线
  14. 树形DP(放置街灯,uva 10859)
  15. ListView在工程中的详细应用(简易记账本)
  16. 网站域名解析为什么错误?域名解析错误怎么解决?
  17. Java创建RPG游戏角色
  18. git重新生成ssh密钥
  19. SAP 委外加工与工序外协
  20. 《牧羊少年奇幻之旅》shbp--2

热门文章

  1. 《气候宣言》和We Mean Business联盟合作推出全方位行动,助力企业推行更具雄心的碳减排目标
  2. FM及其变种(转载)
  3. Vuex概念+实现原理
  4. ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细
  5. js 阿拉伯数字变大写
  6. 嵌入式面试常见问题(四)—牛客网
  7. 通过MATLAB 调用大量csv里的数据
  8. 五一名宿现涨价毁约潮会涨多少?没人订会降价吗?
  9. httpie 101
  10. 马石油2022年总收入增至3753亿林吉特