开发者社区> 问答> 正文

消息服务MNS中删除消息时报“message not exist”的错误,如何解决?

消息服务MNS中删除消息时报“message not exist”的错误,如何解决?

展开
收起
保持可爱mmm 2020-03-29 00:25:12 1298 0
1 条回答
写回答
取消 提交回答
  • 问题原因 VisibilityTimeout到期,该消息的ReceiptHandle失效,导致消息删除失败。详细过程如下。 当消息被消费端接收,消息状态从active变为inactive。 inactive状态将持续VisibilityTimeout的时间。在这段时间里,用户可以删除这条消息。 VisibilityTimeout到期后,消息状态将从inactive变回为active,消息可继续被其他消费端消费,该消息的 ReceiptHandle随之失效。 如果使用已经失效的ReceiptHandle去删除消息,系统将返回message not exist的错误。

    解决方案 检查队列属性VisibilityTimeout的大小,设置一个合适的值,下次接收到消息时,再删除消息。关于该参数大小的调整,请注意如下两点。 如果VisibilityTimeout设置得太小,当来不及删除消息时,会导致message not exist错误。 如果VisibilityTimeout设置得太大,当消息处理失败时,将不能在短时间内再次处理该条消息。

    2020-03-29 00:27:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
消息服务在Serverless中的应用 立即下载
使命必达 —— 钉钉企业级 消息服务的机遇与挑战 立即下载
使命必达—钉钉企业级消息服务的机遇与挑战 立即下载