如何通过 SQS 将任务从 EC2 卸载到工作人员
Posted
技术标签:
【中文标题】如何通过 SQS 将任务从 EC2 卸载到工作人员【英文标题】:How do I offload task from EC2 to worker via SQS 【发布时间】:2015-07-22 13:53:58 【问题描述】:我有一个带有 Worker 设置的 Elastic bean EC2(我将它用于定期任务)。据我了解,周期性任务在 SQS 中排队并由工作人员读取并作为http://localhost
HTTP Post 执行到我们在cron.yaml
中设置的 url
- name: "db-backup"
url: "/cron/db-backup"
schedule: "30 21 * * *"
我们如何使用 AWS 开发工具包实现这一目标?我只能看到QueueUrl
和MessageBody
。如何指定 URL 路径,即/cron/db-backup
$client->sendMessage(array(
'QueueUrl' => $queueUrl,
'MessageBody' => 'Hello World!',
));
我应该在哪里指定路径/cron/db-backup
?还是我理解错了?
【问题讨论】:
【参考方案1】:事实证明我是部分正确的。您无法为发布到队列的单个消息设置 HTTP 路径,但您可以为所有要传递的消息设置一个公共路径,您将从那里为代码流实现调度逻辑。
您在配置 Worker 层时设置此项,并且可以随时从 Worker 配置部分更改。
如果您将 MIME 类型设置为 application/json,您将从 file_get_contents('php://input') 和如果 x-www 获取有效负载-form-urlencoded 它将是 $_POST
虽然听起来很简单,但考虑到在作为周期性任务工作时可以使用多个 http 路径 (url),我完全迷失了方向。我希望这对其他人也有帮助。
【讨论】:
以上是关于如何通过 SQS 将任务从 EC2 卸载到工作人员的主要内容,如果未能解决你的问题,请参考以下文章