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','测试发布订阅功能');
})



IT开发前线



以上是关于Laravel Redis 发布订阅消息的主要内容,如果未能解决你的问题,请参考以下文章

laravel扩展使用redis发布与订阅

最通俗易懂的Redis发布订阅及代码实战

最通俗易懂的Redis发布订阅及代码实战

Redis发布订阅功能介绍,生产场景使用及性能测试

基于Redis消息的订阅发布应用场景

redis发布与订阅