Amazon sqs 消息卡在可用消息中
Amazon sqs messages stuck in available messages
我是 Amazon sqs 的新手,我在公司支持一些队列。我面临的问题是,几天前,一些消息卡在 可用消息 中,如图所示。不是每条消息都会卡住。
你们知道这是怎么回事吗?
听起来工作人员未能正确处理来自队列的消息。
当工作人员(或应用程序)从队列中检索消息时,它需要在完成处理后调用 DeleteMessage()
。这会将其从队列中移除。
但是,如果工作人员失败,或者调用DeleteMessage()
失败,消息会在隐身期结束后自动重新出现。
您可以实现一个 Amazon SQS dead-letter queue,它会在消息收到一定次数后将其移动到 dead-letter 队列。这会将其移出队列以进一步 examination/processing.
我在定期@Scheduled java 作业中读取来自 SQS 的消息时遇到了类似的问题。正如 John Rotenstein 所指出的,必须调用 deleteMessage 方法才能从队列中删除消息。
就我而言,问题出在@Scheduled 注释方法本身。由于某些特定原因,它在某些特定条件下没有完成执行,因此调度程序从未准备好再次 运行 我的读取方法。
就我而言,我的队列 A
没有可用的 EC2 worker。
您可以通过转到相应的集群进行检查。
Elastic Container Services
-> Clusters
-> 筛选相应的集群 A
-> 检查 Pending tasks count
和 Running tasks count
指标
您可以等到工人再次可用。或者 spin-up 一些你自己。
我是 Amazon sqs 的新手,我在公司支持一些队列。我面临的问题是,几天前,一些消息卡在 可用消息 中,如图所示。不是每条消息都会卡住。
你们知道这是怎么回事吗?
听起来工作人员未能正确处理来自队列的消息。
当工作人员(或应用程序)从队列中检索消息时,它需要在完成处理后调用 DeleteMessage()
。这会将其从队列中移除。
但是,如果工作人员失败,或者调用DeleteMessage()
失败,消息会在隐身期结束后自动重新出现。
您可以实现一个 Amazon SQS dead-letter queue,它会在消息收到一定次数后将其移动到 dead-letter 队列。这会将其移出队列以进一步 examination/processing.
我在定期@Scheduled java 作业中读取来自 SQS 的消息时遇到了类似的问题。正如 John Rotenstein 所指出的,必须调用 deleteMessage 方法才能从队列中删除消息。
就我而言,问题出在@Scheduled 注释方法本身。由于某些特定原因,它在某些特定条件下没有完成执行,因此调度程序从未准备好再次 运行 我的读取方法。
就我而言,我的队列 A
没有可用的 EC2 worker。
您可以通过转到相应的集群进行检查。
Elastic Container Services
-> Clusters
-> 筛选相应的集群 A
-> 检查 Pending tasks count
和 Running tasks count
指标
您可以等到工人再次可用。或者 spin-up 一些你自己。