使用场景:做用户中心需要和java对接订单数据,收到订单数据之后要做很多业务逻辑处理,包括请求高德接口获取省市区县的数据,期间会消耗很多时间去处理,所以为了避免这种情况,我想到了之前利用tp5试验过的消息队列的方式,于是有了这篇文章。
1.laravel .env文件配置
QUEUE_DRIVER=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379
2.生成
php artisan make:job SendReminderEmail
3.处理
public function handle() { $redis = app('redis.connection'); $redis->select(4); $i = 1; while ($value = $redis->lpop('fooList')){ $data['uid'] = 1; $data['value'] = $value; $data['time'] = time(); DB::connection('mysql_api')->table('test_redis')->insert($data);
if($i > 20){ echo 'end '.date('Y-m-d H:i:s').PHP_EOL; break; }
$i++;
}
}
4.模拟数据
$redis = app('redis.connection'); $redis->select(4); for ($i=0;$i<60;$i++){ $redis->lpush('fooList', 'bar'.$i); }5.开启服务
php artisan queue:listen
6.OK
发表回复