全部產品
Search
文件中心

:Message ServiceMNS中刪除訊息時報“message not exist”的錯誤

更新時間:Jan 01, 2025

本文介紹了當MNS刪除訊息時返回“message not exist”的問題描述、問題原因和解決方案。

問題描述

Message ServiceMNS中刪除訊息時報如下錯誤。
message not exist

問題原因

VisibilityTimeout到期,該訊息的ReceiptHandle失效,導致訊息刪除失敗。詳細過程如下:

  • 當訊息被消費端接收,訊息狀態從active變為inactive。
  • inactive狀態將持續VisibilityTimeout的時間。在這段時間裡,使用者可以刪除這條訊息。
  • VisibilityTimeout到期後,訊息狀態將從inactive變回為active,訊息可繼續被其他消費端消費,該訊息的ReceiptHandle隨之失效。
  • 如果使用已經失效的ReceiptHandle去刪除訊息,系統將返回“message not exist”的錯誤。

解決方案

檢查隊列屬性VisibilityTimeout的大小,設定一個合適的值,下次接收到訊息時,再刪除訊息。關於該參數大小的調整,請注意如下兩點:

  • 如果VisibilityTimeout設定得太小,當來不及刪除訊息時,會導致“message not exist”錯誤。
  • 如果VisibilityTimeout設定得太大,當訊息處理失敗時,將不能在短時間內再次處理該條訊息。