Mar*_*ind 5 amazon-sqs amazon-web-services amazon-elastic-beanstalk
我遇到的问题是我的SQS消息永远不会从SQS队列中删除.只有在生命周期结束时才会删除它们,即4天.
所以总结一下应用程序:
将URL发送到SQS队列以等待爬网
向Elastic Beanstalk App发送消息,抓取数据并将其存储在数据库中
该脚本似乎工作的意思是它确实收到了消息,它确实成功抓取它并将数据成功存储在数据库中.唯一的问题是消息保留在队列中,卡在"可用消息"中.
所以,如果我例如用800条消息加载队列.它会在大约800条消息中停留4天,然后由于生命周期的价值,它们将立即被删除.似乎有一些消息被删除,因为数字略有变化,但大部分消息从未从队列中删除.
所以问题:
Isnt SQS假设在脚本发送和接收后立即删除消息?
我是否有手动方式在脚本本身删除当前消息?据我所知,消息只发送1路.来自SQS - > App.所以据我所知,我不能做SQS < - > App.
有任何想法吗?
Mar*_*ind 11
工作线程环境中的Web应用程序应仅侦听本地主机.当工作线程环境层中的Web应用程序返回200 OK响应以确认它已收到并成功处理了请求时,守护程序将向SQS队列发送DeleteMessage调用,以便从队列中删除该消息.(SQS自动删除队列中的消息的时间超过配置的RetentionPeriod.)如果应用程序返回200 OK以外的任何响应,或者在配置的InactivityTimeout期间没有响应,则SQS再次使消息在队列中可见并可用于另一次处理.
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html
所以我猜这回答了我的问题.某些消息不返回HTTP 200,然后它们陷入无限循环.
阅读Queue Item时,不会删除任何消息;它仅在特定时间内隐藏,称为Visibility Timeout。可见性超时背后的想法是,确保单个队列中有多个使用者,而没有两个使用者选择同一项目并开始处理。
这是您进行应用以获得预期行为所需的更改
AWS文档-DeleteMessage
| 归档时间: |
|
| 查看次数: |
2935 次 |
| 最近记录: |