当队列中有消息时,Amazon SQS长轮询返回0条消息。

14
当我的队列中仍有消息时,Amazon SQS长轮询返回0 条消息。我已经多次复制了这种效果。
我知道即使队列中有更多的消息,SQS长轮询也可能会产生少于最大请求消息的情况。
我还知道,即使队列中有大于零的消息,短轮询也可能会返回零条消息。
但是我不知道当队列中有多余的消息时长轮询会返回零条消息。从我阅读文档后所能看出来, 这不应该发生。
问题:
在队列上有消息时,SQS长轮询是否可能返回0条消息?如果可能,是否有特定条件会导致此情况发生?如果没有,是否有其他人经历过此行为?

1
你的断言是正确的 - 那不应该是可能的 - 但消息确实必须是可见的 - 而不是已经在运行中。你的控制台是否显示了正在运行的消息?还是可见的?这是标准队列还是先进先出队列(FIFO)? - Michael - sqlbot
@Michael-sqlbot 很抱歉这里回复较慢,感谢您的评论。没有消息处于传输中,一切都是可见的。而且这是一个先进先出队列。 - Peter Berg
@PeterBerg 我刚刚遇到了同样的问题 - 你解决了吗? - Pijotrek
@Pijotrek 不幸的是,我只能每隔20秒轮询一次,以确保最终获取所有消息。我对这个解决方案并不满意 =/ - Peter Berg
@PeterBerg 谢谢,我也得想个解决办法。 - Pijotrek
你能发布示例代码吗? - John Zabroski
2个回答

11

检查组ID是否唯一。

据我所知,如果一个组中的消息正在传递中,则整个组将不可见。


当我添加消息时,我使用了相同的组ID。将组ID更改为不同后,它就起作用了。 谢谢 - DineshNS

0
据我所知,这可能与以下任何一个队列属性有关: 请检查您的队列配置。请记住,可以在消息级别上设置特定的可见性超时时间,这可能与队列设置的值不匹配。
希望这可以帮到您。
此致敬礼,

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接