亚马逊SQS如何通知我的“工作”服务器队列中有内容?
5 个回答
7
进一步说明一下SQS的问题 - 你必须定期去检查是否有新通知,而且没有保证在你每次检查时都能收到队列中的事件(这是因为他们的架构设计有冗余)。这意味着你需要考虑到,有可能你检查的时候没有返回任何消息(对我来说,这意味着我需要提高检查的频率)。
总的来说,我发现SQS有太多限制(我在一些其他AWS工具,比如SimpleDB中也发现了类似的问题)。不过这只是我个人的看法。
9
现在可以通过长轮询来实现对SQS队列的访问。
长轮询支持的时间范围是1到20秒,也就是说,当你调用接收消息的操作时,它会等待最多20秒,看看队列里有没有消息。如果在这段时间内没有消息,它就会返回一个空的响应,而不是立刻告诉你没有消息。
如果你在请求中没有指定等待时间,系统会使用队列的一个设置来决定等待多久。
类型:0到20的整数(秒)
默认值:队列的接收消息等待时间设置。
14
很遗憾,SQS(简单队列服务)缺少一些我们通常在队列中期待的功能。比如,它没有通知功能,也没有可以阻塞的“获取”调用。
亚马逊的SNS(简单通知服务)可能对你有帮助。当你在队列中添加了工作后,可以向订阅的工作者发送通知。
你可以查看以下链接了解更多: