laravel: 用redis实现消息队列(Laravel 8.83.27)

一,配置

1,修改.env,确认保存了redis的连接信息

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

2,修改.env,指定默认的队列连接使用redis

QUEUE_CONNECTION=redis

3, 确保config/database.php中指定了redis的连接

二,创建消息的消费者

1,通过命令行创建:

[lhdop@blog dignews]$ php artisan make:job consumemail
Job created successfully.

2, 编写代码:

<?php

namespace 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;
use Illuminate\Support\Facades\Log;

class consumemail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    
    protected $msg;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($msg)
    {
	    //
	    $this->msg = $msg;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        echo "接收到消息:".$this->msg.";开始处理:\n";
	    //log
	    Log::info("queue msg:".$this->msg);
    }
}

 

三,创建消息的生产者

1,创建controller 

php artisan make:controller UserController

2, 代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Jobs\consumemail;


class UserController extends Controller
{
	//
	//直接返回字符串
    public function home(){

         $rand_digit = rand(100,999);
         $msg = 'hello,随机数:'.$rand_digit;
         $this->dispatch(new consumemail($msg));
        return 'Hello, World!'.$msg;
    }
}

四,测试效果

1, 在终端运行接收队列消息的任务程序:

[lhdop@blog dignews]$  php artisan queue:work --daemon --quiet --delay=3 --sleep=3 --tries=1

2, 访问controller的页面地址后,观察终端的反应:

接收到消息:hello,随机数:525;开始处理:
接收到消息:hello,随机数:647;开始处理:
接收到消息:hello,随机数:347;开始处理:
接收到消息:hello,随机数:818;开始处理:
接收到消息:hello,随机数:112;开始处理:
接收到消息:hello,随机数:547;开始处理:
接收到消息:hello,随机数:938;开始处理:
接收到消息:hello,随机数:615;开始处理:
接收到消息:hello,随机数:715;开始处理:

 五,查看laravel的版本:

[lhdop@blog dignews]$ php artisan --version
Laravel Framework 8.83.27

 

posted @ 2024-07-05 16:55  刘宏缔的架构森林  阅读(151)  评论(0编辑  收藏  举报