【发布时间】:2021-08-16 12:23:20
【问题描述】:
在我负责的其中一个系统上,有时由于 Redis 的连接问题而无法分派某些作业,这最终会向用户返回错误,在我们这边,我们可以忽略此错误并只是错过了这份工作,我在谷歌上寻找如何处理它,但我没有找到任何关于它的信息。
public function sendMessage(Request $request, Model $model)
{
// Do the necessary stuff
ResolveMessageBilling::dispatch($model, $request->all());
return response()->json([
'message' => 'The message was succesfully sent'
], 200);
}
这是我们得到的错误:RedisException - socket error on read socket
如果发生错误如何忽略?一个简单的try/catch 就可以解决问题?
public function sendMessage(Request $request, Model $model)
{
// Do the necessary stuff
try {
ResolveMessageBilling::dispatch($model, $request->all());
} catch(\Exception $e) {}
return response()->json([
'message' => 'The message was succesfully sent'
], 200);
}
【问题讨论】:
-
您是否检查过 Redis 连接可用性?如果您正在使用其他 Redis 服务,例如
Caching with Redis,它是否工作正常? Check Redis connection availability -
您是否使用 AWS 的 Redis,因为有时会发生这种情况,因为 AWS ElasticeCache Redis 集群可能会使用 100% 的可用内存
-
您是否使用队列来处理作业?还是它们同步运行?
-
@HuyPhạm 我正在使用 digitalocean 内存优化的 redis...
-
@MrEduar 是的,我正在使用队列...
标签: laravel laravel-queue