我正在寻找一种解决方案,将项目添加到队列中,然后以与google appengine的任务管理器类似的方法逐个执行。每个任务都将使用对php脚本的http请求执行。
由于我正在使用亚马逊,我明白最佳做法是使用SNS服务负责接收新任务,将它们添加到队列(亚马逊的SQS服务)并通知我php worker已将新任务推入队列,以便他可以查找并执行它。 该方法存在若干问题(例如需要通过工作人员本身限制工作人员实例的数量,或者只是在我们调用工作人员时,任务不会进入队列的可能性,因为我们将任务添加到在同一时间排队)。
我想知道是否有更好的选择或更好的方式来实现任务管理器。我喜欢使用亚马逊的服务,但我可以接受任何新的建议,寻找最好的方法。亚马逊缺少的功能,如FIFO和优先级支持也是一个很好的补充。
谢谢! 本
答案 0 :(得分:2)
我找到了一个很好的解决方案。 AWS Beanstalk服务显然提供了将新的弹性beanstalk实例定义为" worker"或者是"网络服务器"。如果您将其定义为" Worker",您将能够将其附加到sqs队列,它将负责轮询队列并执行任务(使用您部署的代码)实例)。