Laravel 8 发布与订阅
Laravel 为 Redis 的 publish
及 subscribe
提供了方便的接口。这些 Redis 命令让你可以监听指定「频道」上的消息。你可以从另一个应用程序发布消息给另一个应用程序,甚至使用其它编程语言,让应用程序和进程之间能够轻松进行通信。
首先,我们使用 subscribe
方法设置频道监听器。我们将这个方法调用放在 Artisan 命令 中,因为调用 subscribe
方法会启动一个长时间运行的进程:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis;
class RedisSubscribe extends Command
{
/**
* 控制台命令的名称和签名
*
* @var string
*/
protected $signature = 'redis:subscribe';
/**
* 控制台命令说明
*
* @var string
*/
protected $description = 'Subscribe to a Redis channel';
/**
* 执行控制台命令
*
* @return mixed
*/
public function handle()
{
Redis::subscribe(['test-channel'], function ($message) {
echo $message;
});
}
}
现在我们可以使用 publish
方法将消息发布到频道:
Route::get('publish', function () {
// Route logic...
Redis::publish('test-channel', json_encode(['foo' => 'bar']));
});