如何在发送失败时处理错误?

时间:2017-09-07 07:16:20

标签: php laravel queue amazon-sqs

我使用Laravel,队列和SQS作为队列驱动程序。

这是感兴趣的代码的一部分:

try{
    $teReq       = new MyRequestPayload($jsonData);
    $jobInstance = new ProcessQueuedSendRequestJob($payload);
    dispatch($jobInstance);
}catch(Exception $e){
    Log::info("==================================================");
    Log::error($e->getMessage());
}

错误可能会从行中出现:

  dispatch($jobInstance);

在我的情况下,如果应用程序由于某种原因无法连接到SQS,就会发生这种情况。

我在日志中收到以下错误,并且它没有被catch

捕获
Error executing "SendMessage" on "https://sqs.****.amazonaws.com/*****/app-dev"; 
AWS HTTP error: Client error: `POST https://sqs.****.amazonaws.com/*****/app-dev` 
resulted in a `403 Forbidden` response: <?xml version="1.0"?>
<ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Type>Sender</Type><Code>S (truncated...)  
SignatureDoesNotMatch (client): Signature expired: 20170906T161652Z is now earlier than 20170907T063633Z (20170907T065133Z - 15 min.)

并且...它不是解决这个问题/错误本身,而是关于在分派工作后捕获任何可能的错误。为了发送警报,告诉我的队列应用程序无法保存消息。

我想这不会被捕获,因为底层的aws-php-sdk不是抛出异常而只是记录错误。

0 个答案:

没有答案