您现在的位置: 首页 > 开发编程 > Laravel教程 > 正文

Laravel Redis 发布、订阅消息

作者:admin来源:网络浏览:时间:2018-01-21 13:07:24我要评论
分享到
Redis有一个重要的功能,即可发布、订阅消息,通过对消息的发布和订阅可以实现消息队列的功能。redis是通过publish和subscribe指令提供消息的发布和订阅的,通过订阅一个“队列”用于监听消息,当有消息通过publish指令发布到“队列”中时,订阅程序就会监听到消息并进行响应。

下面讲述一下Laravel的实现

Laravel中可以使用artisan命令“php artisan make:console  SendMsg --command=Send:Msg” 来创建一个订阅类,并修改该类的handle()函数,通过Reids::subscribe()方式订阅一个“队列”,但是,只创建一个控制台指令类还是不行的,需要将改类在控制台核心类(App\Console\Kerenl)的“$commands”属性中进行注册才能生效。具体实现代码如下:

  1. <?php 
  2.  
  3. namespace App\Console\Commands; 
  4.  
  5.  
  6. use Illuminate\Console\Command; 
  7. use Illuminate\Support\Facades\Redis as Redis; 
  8.  
  9. class SendMsg extends Command 
  10.     //控制台指令名称 
  11.     protected $signature = 'Send:Msg'
  12.  
  13.    //控制台指令的描述 
  14.     protected $description = '发布、订阅'
  15.  
  16.     /** 
  17.      * Create a new command instance. 
  18.      * 
  19.      * @return void 
  20.      */ 
  21.     public function __construct() 
  22.     { 
  23.         parent::__construct(); 
  24.     } 
  25.  
  26.     /** 
  27.      * Execute the console command. 
  28.      * 
  29.      * @return mixed 
  30.      */ 
  31.     public function handle() 
  32.     { 
  33.        Redis::subscribe(['redis-msg'],function($message){ 
  34.            echo $message
  35.        }); 
  36.     } 

找到文件app\Console\Kernel.php

 

  1. //应用中提供artisan命令  www.bcty365.com B5教程网 
  2.  
  3. protected $commands =[ 
  4.      \App\Console\Commands\Inspire::class
  5.      \App\Console\Commands\SendMsg::class 


下面建立路由测试

找到文件app\Http\routes.php

  1. <?php 
  2.  
  3. Route::get('/',function(){ 
  4.  
  5. Redis::publish('redis-msg','测试发布订阅功能'); 
  6.  
  7. }) 


ok,上面就基本实现了发布、订阅一个功能。
 

相关热词搜索: Laravel Redis 发布订阅