簡體   English   中英

SQS 消息未刪除

[英]SQS Messages Not Deleting

我在 SQS 隊列中有一小部分消息,即使發送到 AWS 端點的刪除請求返回 200 響應,也不會刪除這些消息。 我的應用程序可以很好地處理這些消息,並且也可以很好地發送刪除請求。

我使用的是 Java AWS SDK 1.3.6。

有沒有其他人遇到過這個問題?

糟糕 - 隊列被意外設置為defaultVisibilityTimeout=0 將此值更改為正值可解決問題。

這仍然提出了幾個問題:

  1. 為什么這只影響某些消息? 也許有些人需要更長時間來處理
  2. 為什么亞馬遜在沒有刪除郵件時返回200刪除?
  3. 被刪除失敗,因為它落在了0秒窗口(在這種情況下,為什么任何刪除請求成功嗎?)之外,還是他們失敗了,因為其他消費者已經由次地拿起收到刪除請求?

官方文件(版本1.9.13)

重要提示:即使您刪除了該消息,也可能會收到消息。 如果在請求刪除郵件時存儲郵件副本的其中一個服務器不可用,則極少數情況下可能會發生這種情況。 副本仍保留在服務器上,並可能在后續接收請求中再次返回給您。 您應該將系統創建為冪等的,以便不止一次地接收特定消息不是問題。

如果您傳入了異常,則很有可能您實際上並未刪除 sqs 消息,因此它會卡在“飛行中”,因為您的處理過程中可能存在錯誤。 將您的 sqs 輪詢包裝起來,除了像這樣,看看您是否有任何例外:

import traceback
import sys

try:
    pollsqshere()
except Exception:
    print(traceback.format_exc())
    # or
    print(sys.exc_info()[2])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM