【以下的问题经过翻译处理】 我在一个单个接收请求中以最大消息数设置为2的方式从同一SQS FIFO组中获取多个消息。这是正确的行为吗?我不理解,API里说明:
当从具有多个消息组ID的FIFO队列接收消息时,Amazon SQS首先尝试返回尽可能多的具有相同消息组ID的消息。这允许其他用户处理具有不同消息组ID的消息。当您收到具有消息组ID的消息时,除非删除消息或消息变为可见,否则不会返回同一消息组ID的更多消息。
https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-understanding-logic.html
我的代码直接将消息分派给工作程序,没有任何组检查逻辑。看起来我要么需要实现这样的功能,要么就要让所有 SQS 接收请求的 maxMessages 设置为 1,这听起来像是在浪费资源。我感到困惑,因为在上面提到的文件页面上,有以下信息:
可以使用ReceiveMessage操作的MaxNumberOfMessages请求参数在单个调用中接收最多10条消息。这些消息保留其FIFO顺序,并且可以具有相同的消息组ID。
这违反了上述合同,该合同字面上说:“除非删除消息或消息变为可见”。在我的测试中,我立即在单个接收调用中看到这些消息返回,但它们设置为30秒过期。我不明白,是否有某种日志可以告诉我为什么消息发送得那么快?我可能在这里漏了什么。