如何通过 SQS 将任务从 EC2 卸载到工作人员

How do I offload task from EC2 to worker via SQS

我有一个带有 Worker 设置的 Elastic bean EC2(我将其用于定期任务)。据我了解,周期性任务在 SQS 中排队并由工作人员读取并作为 http://localhost HTTP Post 执行到我们在 cron.yaml[ 中设置的 url =18=]

 - name: "db-backup"
   url: "/cron/db-backup"
   schedule: "30 21 * * *"

我们如何使用 AWS 开发工具包实现这一目标?我只能看到 QueueUrlMessageBody。如何指定 URL 路径,即 /cron/db-backup

$client->sendMessage(array(
   'QueueUrl'    => $queueUrl,
   'MessageBody' => 'Hello World!',
));

我应该在哪里指定路径/cron/db-backup?还是我理解错了?

事实证明我部分正确。您不能为您 post 到队列的单个消息设置 HTTP 路径,但您可以并且确实为所有消息设置一个通用路径,从您将为代码流实现调度逻辑的位置传递。

您在配置 Worker 层时设置此项,并且可以随时从 Worker 配置部分更改。

如果您将 MIME 类型设置为 application/json,您将从 file_get_contents('php://input') & 如果 x-www-form-urlencoded 它将 成为 $_POST

虽然听起来很简单,但考虑到在作为周期性任务工作时我可以使用多个 http 路径 (url),我完全迷失了方向。我希望这对其他人也有帮助。