amazon-web-services - 我能否判断 Amazon SQS 消息是否仍在传输中?

标签 amazon-web-services amazon-sqs

给定一条 Amazon SQS 消息,有没有办法通过 API 判断它是否仍在传输中?或者,我是否需要在收到消息时记下时间戳,从当前时间中减去它,然后检查它是否小于可见性超时?

最佳答案

使用 Amazon Simple Queuing Service (SQS) 的正常流程是:

  • 一条消息是 使用 SendMessage 进入队列(最多可以在队列中停留 14 天)
  • 应用程序使用 ReceiveMessage检索 来自队列的消息(不保证先进先出)
  • 当应用程序有 成品加工消息,它调用 DeleteMessage (也可以调用ChangeMessageVisibility来延长时间直到超时)
  • 如果应用程序在预先配置的时间段内没有删除消息,SQS 会生成消息 再次出现在队列中
  • 如果从队列中检索消息的次数超过预先配置的次数,则可以将消息移至 死信队列

  • 无法获得有关特定消息的信息。 相反,应用程序请求一条消息(或一批消息),消息在此之后变得不可见(或“在飞行中”)。这也可以访问 ReceiptHandle可以与 DeleteMessage 一起使用或 ChangeMessageVisibility .

    最接近的选择是调用 GetQueueAttributes . ApproximateNumberOfMessagesNotVisible 的值将指示 飞行中消息数量但它不会深入了解特定消息。

    关于amazon-web-services - 我能否判断 Amazon SQS 消息是否仍在传输中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31792753/

    相关文章:

    amazon-web-services - 如何在 AWS DocumentDB 中编写联接查询

    python - 如何使用 Python AWS AppSync 客户端?

    php - 如何使用 laravel 向 sqs 发送 json 消息?

    php - SQS 是缓慢的发布请求

    amazon-web-services - AWS 中的负载均衡器、监听器目标、目标组之间有什么区别?

    java - 使用 Bitbucket Pipelines 更新 AWS Java Lambda 函数时出错 - java.lang.ClassNotFoundException

    amazon-web-services - 有可用的 Amazon AWS SQS gui 吗?

    json - 对于 S3 存储桶,在 TopicConfigurations 的 CloudFormation 中,属性 Event 的值必须为 String 类型

    spring - DefaultMessageListenerContainer 停止处理消息

    linux - AWS :Determining aws volume parameters from the linux system mountpoint