Laravel Redis 发布订阅消息
Posted IT开发前线
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel Redis 发布订阅消息相关的知识,希望对你有一定的参考价值。
Redis有一个重要的功能,即可发布、订阅消息,通过对消息的发布和订阅可以实现消息队列的功能。redis是通过publish和subscribe指令提供消息的发布和订阅的,通过订阅一个“队列”用于监听消息,当有消息通过publish指令发布到“队列”中时,订阅程序就会监听到消息并进行响应。
下面讲述一下Laravel的实现
Laravel中可以使用artisan命令“php artisan make:console SendMsg --command=Send:Msg” 来创建一个订阅类,并修改该类的handle()函数,通过Reids::subscribe()方式订阅一个“队列”,但是,只创建一个控制台指令类还是不行的,需要将改类在控制台核心类(App\Console\Kerenl)的“$commands”属性中进行注册才能生效。具体实现代码如下:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis as Redis;
class SendMsg extends Command
{
//控制台指令名称
protected $signature = 'Send:Msg';
//控制台指令的描述
protected $description = '发布、订阅';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
Redis::subscribe(['redis-msg'],function($message){
echo $message;
});
}
}
找到文件app\Console\Kernel.php 添加如下代码
//应用中提供artisan命令 www.bcty365.com B5教程网
protected $commands =[
\App\Console\Commands\Inspire::class,
\App\Console\Commands\SendMsg::class
]
下面建立路由测试
找到文件app\Http\routes.php添加如下代码
<?php
Route::get('/',function(){
Redis::publish('redis-msg','测试发布订阅功能');
})
以上是关于Laravel Redis 发布订阅消息的主要内容,如果未能解决你的问题,请参考以下文章