我想从amazon sqs中获取消息的顺序与其插入sqs的顺序相同(先入先出模型)。他们有什么办法实现它吗??我正在使用zend php进行编程。
发布于 2012-06-05 02:14:17
无序消息传递是SQS设计中固有的特性。您可以尝试通过对消息进行编号并在本地存储无序的消息,直到丢失的消息到达,来解决这个问题,但这可能不值得这么麻烦。
SQS真的有点奇怪,它做到了它所说的,但它所做的并不是大多数人在消息总线中寻找的。我真的希望亚马逊能提供更多像RabbitMQ一样的排队解决方案。SQS实际上只适合分布那些甚至不是远程耦合的任务,以及顺序和延迟等并不重要的任务。例如,它非常适合于将已完成的订单发送到发货中心,或者安排打印作业。
他们自己的文档显示它被用来计划缩略图的创建,但当我最近将其用于这个确切的目的时,我很快发现我的用户不会对延迟印象深刻:有时是30-50秒。
您仍然可以在EC2节点上运行RabbitMQ,尽管其可伸缩性不如SQS,但它确实是集群的,应该会让您走得更远。
发布于 2012-06-16 02:41:24
你可以试试IronMQ。它像SQS一样托管,保证了先进先出排序,没有最终的一致性延迟,具有更高的可扩展性,您可以在几分钟内启动并运行。
这里有一个PHP库:https://github.com/iron-io/iron_mq_php
免责声明:我为Iron.io工作
发布于 2014-07-11 06:18:41
SQS documentation会为你回答这个问题(我强调粗体直接回答你的问题):
Amazon SQS尽最大努力保持消息中的顺序,但由于队列的分布式性质,我们不能保证您将按发送消息的确切顺序接收消息。如果您的系统要求保留顺序,我们建议您在每封邮件中放置排序信息,以便您可以在收到邮件时对邮件重新排序。
https://stackoverflow.com/questions/10876441
复制相似问题