我使用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不是抛出异常而只是记录错误。