【发布时间】:2018-09-13 11:53:53
【问题描述】:
我正在尝试通过 SNS 从 Amazon SES 获取电子邮件回复(退回、投诉和递送)。在 Amazon SQS 控制台上,我看到消息已经在队列中,所以我确信 Amazon 上的结构设置是正确的。
然后,使用 Laravel 5.5,在 official guide 之后,我设置了一个监听 SQS 的队列。我跳过了将作业分派到队列的部分,因为这将由 SNS 完成。在作业处理程序中,为简单起见,我只是 var_dump 我收到的。工作如下所示:
public function handle($testing_message)
{
var_dump($testing_message);
echo "testing handle!\n";
}
它的配置看起来像这样:
'sqs' => [
'driver' => 'sqs', //mainly to show that I am using the correct driver
'key' => env('SQS_KEY', 'your-public-key'),
'secret' => env('SQS_SECRET', 'your-secret-key'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'your-queue-name'),
'region' => env('SQS_REGION', 'us-east-1'),
],
为了安全起见,.env 中隐藏了实际值。然后我运行:
composer require aws/aws-sdk-php ~3.0
php artisan config:cache
php artisan queue:listen
但是,进程只是坐在那里运行,没有响应,也没有错误消息。
我想问:
- 我如何知道与队列的连接是否正确?
- 如果连接正确,为什么SQS没有返回? (我确信来自 Amazon 控制台的 SQS 队列中已经有消息)
【问题讨论】:
-
尝试:php artisian queue:listen -vvv
-
@albert 我可以知道
-vvv是干什么用的吗? -
详细调试级别
-
@albert 仍然没有错误和响应。
-
尝试
php artisan queue:work而不是听。如果没有任何反应,请尝试同步,这有助于调试代码中的问题。
标签: php amazon-web-services laravel-5 amazon-sqs amazon-sns