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