我完全卡住了。我正在使用SQS在服务器到服务器之间进行通信。我在凌晨3点向队列添加了一条消息“init_scrape”。每隔5分钟由我的服务器上的脚本轮询队列,以检查队列上的消息并运行任务。这是我的电子邮件日志:
2013-07-29 03:05:01,857 INFO Queue Messages Found: run_scrape init_scrape
2013-07-29 03:05:01,858 INFO Init_Scrape Running
2013-07-29 03:22:45,055 INFO init_scrape deleted from queue
2013-07-29 03:22:45,211 INFO Queue Messages Found: run_scrape
此时,init_scrape已从队列中删除,只留下run_scrape。绝对没有别的东西将init_scrape消息添加到队列中,但这是下一个日志:
2013-07-29 03:25:02,054 INFO Queue Messages Found: run_scrape init_scrape
2013-07-29 03:25:02,055 INFO Init_Scrape Running
2013-07-29 03:42:44,739 INFO init_scrape deleted from queue
2013-07-29 03:42:44,879 INFO Queue Messages Found: run_scrape
为什么我只将消息发送到队列一次,但即使我的脚本从队列中删除它,它似乎也会出现?
编辑:这与visibility_timeout有关吗?
答案 0 :(得分:1)
SQS保证消息将至少一次传递。他们无法保证不会发送很多次。 SQS非常简洁,因为它可以扩展,但实际上你会发现一些奇怪的行为,因为它们是如何扩展的,就像这样,而且消息是按顺序发送的,这使得它对于那些不真正实现的项目来说有点麻烦需要规模。