SQS消息未删除

时间:2012-04-17 15:35:07

标签: java amazon-web-services message-queue amazon-sqs

我在SQS队列中有一小组消息,即使发送到AWS端点的删除请求返回200响应,也不会删除这些消息。我的应用程序处理的邮件很好,删除请求也很好。

我正在使用Java AWS SDK 1.3.6。

还有其他人遇到过这个问题吗?

2 个答案:

答案 0 :(得分:12)

糟糕 - 队列被意外设置为defaultVisibilityTimeout=0。将此值更改为正值可解决问题。

但这仍然提出了一些问题:

  1. 为什么这只影响某些消息?也许有些人需要更长时间来处理
  2. 为什么亚马逊在没有删除邮件时返回200删除?
  3. 删除是否失败,因为它超出了0秒窗口(在这种情况下为什么任何删除请求成功?),或者它们是否因为另一个消费者已经通过收到删除请求的时间?

答案 1 :(得分:2)

官方文档(版本1.9.13)

  

重要提示:您甚至可能会收到消息   删除了它。如果其中一个,这可能会发生在极少数情况下   您请求时,存储邮件副本的服务器不可用   删除邮件。副本仍保留在服务器上,可能是   在随后的接收请求中再次返回给您。你应该   创建你的系统是幂等的,以便接收一个特定的   消息不止一次不是问题。