SQS - 按ID获取消息

时间:2014-07-03 03:16:40

标签: amazon-sqs

我是否可以根据Amazon PHP SDK的消息ID从SQS队列中获取消息?我是否必须抓住队列中的所有消息,然后在我的服务器上过滤它?

我的服务器收到带有队列消息Id的SNS发起请求,我不得不从SQS的消息数组中过滤消息。

3 个答案:

答案 0 :(得分:2)

这样可以帮助别人。我无法找到一种直接的方法来做到这一点。相反,实现另一组队列工作程序来委派任务解决了性能问题。这些工人只完成了两项任务

  1. 检索队列项
  2. 关联有效身份
  3. 将其发送到处理服务器(执行负载检查,可用性等后)

答案 1 :(得分:2)

队列的目的是将其用作缓冲区,以在某个处理任务之前存储消息。这不应与存储服务或数据库服务混淆。 Amazon SQS允许进程从队列(缓冲区)检索消息并根据需要处理它们。如果需要,可以使用StandardFIFO个队列。

回答您的问题:SQS没有提供Message ID检索的机制。因此,正如您所建议的那样,您可以让单独的工作程序并行检索所有邮件,并查找包含所需ID的邮件。 (这可能是详尽无遗的)

由于您的用例类似于存储服务的用例,我建议写入存储服务并根据名为“消息ID”的列从中检索。

答案 2 :(得分:0)

我需要了解更多有关您的用例的信息,但听起来您使用SQS作为数据库。我可能会建议而不是向SQS发送消息并将消息ID发送给SNS,而是在DynamoDB中添加一行,并通过SNS发送密钥?

或者甚至更好,只需通过SNS发送原始数据?