【问题标题】:How to use Laravel 5 to receive Amazon SNS message from SQS?如何使用 Laravel 5 从 SQS 接收 Amazon SNS 消息?
【发布时间】: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

但是,进程只是坐在那里运行,没有响​​应,也没有错误消息。

我想问:

  1. 我如何知道与队列的连接是否正确?
  2. 如果连接正确,为什么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


【解决方案1】:

我不确定您为什么使用队列而不是简单的 https 端点。这消除了很多复杂性并且不需要轮询。

有一个simple php example 显示需要什么。

最大的问题是,在 SNS 开始向您的端点发送 POST 请求之前,您需要能够确认 SNS 订阅。

【讨论】:

  • 由于某些操作政策,我们在 00:00-08:00 停止发送电子邮件。因此,我们预计会在 8:00(或者可能是策略更改的其他时间)突然忙于发送(因此响应)流量,那么队列将是处理流量高峰的好方法吗?
  • 如果扩展是一个问题,您可以随时使用 API 网关 + Lambda。
  • 是的,但您始终可以使用 node 或 python。您希望在上午 8 点处理什么类型的音量?您可以通过自动缩放计划事件来启动集群,以处理 SNS 帖子,但老实说,除非您每小时发送数百万封电子邮件,否则负载可能不是问题。
  • 叹息....说来话长。该系统是为客户构建的,将在系统投入生产后移交给他们。他们只有只愿意使用 PHP 的程序员。他们有运行其他应用程序的服务器,并希望我们使用同一台服务器来降低成本。 Lambda 的低成本对他们来说仍然可以,但是具有他们要求的配置的 EC2 对他们来说过于庞大。无论如何,客户永远是对的。这听起来可能不合理,但我们别无选择。
  • 如果您谈论的是在“服务器”上运行的系统,那么您发送的内容并不多。一个 http 端点就可以了。
猜你喜欢
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 2013-10-17
  • 2017-08-22
  • 1970-01-01
相关资源
最近更新 更多