AWS SQS FIFO - 如何一次获取超过 10 条消息?
AWS SQS FIFO - How to get more than 10 messages at a time?
目前我们想要拉下一个整个 FIFO 队列,并处理内容,如果有任何问题,将消息释放回队列。
问题是,目前 AWS 只给我们 10 条消息,在我们删除或释放前 10.
虽然我们需要得到 10 个以上。这不可能吗?我们知道我们可以将 group_id 设置为一个随机字符串,这允许处理更多,但不能保证顺序,这违背了 FIFO 的目的。
我设法重现了您的结果 -- 我可以检索 10 条消息,但是 运行 再次使用相同的命令不会 return 另一组消息。
相关文档好像是:
While messages with a particular MessageGroupId
are invisible, no more messages belonging to the same MessageGroupId
are returned until the visibility timeout expires. You can still receive messages with another MessageGroupId
as long as it is also visible.
我怀疑(只是一个理论!)这是为了保留消息的顺序...如果客户端请求一组消息并且它们仍在处理中,则消息可能是return进入队列。因此,在删除原始消息或超过其可见性超时之前,不会提供更多消息。
这只是 FIFO 队列的一种行为。
您似乎需要接收并删除所有消息才能访问所有消息。我会建议:
- 收到一条(或多条)消息。
- 处理它。如果一切正常,请删除消息。
- 如果有问题,将消息推送到新队列。
- 队列为空后,您需要从新队列中读取并将它们发送回原始队列(应保留顺序)。
如果您经常需要 Amazon SQS 提供的更多功能,您可以考虑使用 Amazon MQ – Managed message broker service for ActiveMQ。它具有更多功能(但相应地更少 'simple')。
如果您设置另一个MessageGroupId,即使您不释放或删除之前的消息,您也可以获得另外10条消息。
https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagegroupid-property.html
目前我们想要拉下一个整个 FIFO 队列,并处理内容,如果有任何问题,将消息释放回队列。
问题是,目前 AWS 只给我们 10 条消息,在我们删除或释放前 10.
虽然我们需要得到 10 个以上。这不可能吗?我们知道我们可以将 group_id 设置为一个随机字符串,这允许处理更多,但不能保证顺序,这违背了 FIFO 的目的。
我设法重现了您的结果 -- 我可以检索 10 条消息,但是 运行 再次使用相同的命令不会 return 另一组消息。
相关文档好像是:
While messages with a particular
MessageGroupId
are invisible, no more messages belonging to the sameMessageGroupId
are returned until the visibility timeout expires. You can still receive messages with anotherMessageGroupId
as long as it is also visible.
我怀疑(只是一个理论!)这是为了保留消息的顺序...如果客户端请求一组消息并且它们仍在处理中,则消息可能是return进入队列。因此,在删除原始消息或超过其可见性超时之前,不会提供更多消息。
这只是 FIFO 队列的一种行为。
您似乎需要接收并删除所有消息才能访问所有消息。我会建议:
- 收到一条(或多条)消息。
- 处理它。如果一切正常,请删除消息。
- 如果有问题,将消息推送到新队列。
- 队列为空后,您需要从新队列中读取并将它们发送回原始队列(应保留顺序)。
如果您经常需要 Amazon SQS 提供的更多功能,您可以考虑使用 Amazon MQ – Managed message broker service for ActiveMQ。它具有更多功能(但相应地更少 'simple')。
如果您设置另一个MessageGroupId,即使您不释放或删除之前的消息,您也可以获得另外10条消息。 https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagegroupid-property.html