这是我的情况:
我有一个脚本,它获取原始数据,将其保存在数据库中,获取项目 ID,然后将其发布到亚马逊 SQS 队列。
我有另一个脚本(用 PHP 编写)从数据库中检索原始数据并对其进行处理。(通常需要几分钟。
缺少的部分是如何从 SQS 中检索要处理的消息。处理新数据的频率各不相同,可以从每小时几项到每分钟几十项。
一种方法是让一个 cron 作业向 SQS 查询新消息并启动处理脚本(它必须是多线程的,并且可能是用 php 以外的东西编写的。Python 或 Ruby 可能)。cron 的问题在于它的效率非常低,在高负载阶段它会不堪重负,而在安静阶段它会进行无用的调用。
我想要的是某种多线程侦听器,它可以接收消息并处理它们。一个重要的要求是及时处理原始数据,最多在收到后几分钟。
关于最佳解决方案的任何想法?SQS 是否适合该任务?侦听和处理队列的最有效方法是什么?