Amazon web services AWS SQS FIFO can';我不能接收所有的信息
我正在学习AWS SQS,我已经向FIFO队列发送了Amazon web services AWS SQS FIFO can';我不能接收所有的信息,amazon-web-services,amazon-sqs,Amazon Web Services,Amazon Sqs,我正在学习AWS SQS,我已经向FIFO队列发送了6消息,使用相同的GroupId。但是当我尝试轮询消息时,我只能接收其中的2条消息(为什么?我使用bot3API设置MaxNumberOfMessages=10,但我只能接收2条消息。我如何才能接收所有消息?) (如图所示,我有5条可用消息,但我只能收到2条消息。) 我试图删除收到的两条消息中的一条,然后再次轮询。被删除的一条不见了,我收到了一条新消息。但总的来说,还是有两条消息。来自: 要返回的最大消息数。Amazon SQS不会返回超过此值
6
消息,使用相同的GroupId
。但是当我尝试轮询消息时,我只能接收其中的2条消息(为什么?我使用bot3
API设置MaxNumberOfMessages=10
,但我只能接收2条消息。我如何才能接收所有消息?)
(如图所示,我有5条可用消息,但我只能收到2条消息。)
我试图删除收到的两条消息中的一条,然后再次轮询。被删除的一条不见了,我收到了一条新消息。但总的来说,还是有两条消息。来自:
要返回的最大消息数。Amazon SQS不会返回超过此值的消息(但是,返回的消息可能会更少)
就像doc写的一样,你可以收到更少的消息。您必须多次调用
ReceiveMessage
,通常在循环中完成。您还可以增加WaitTimeSeconds
,以便ReceiveMessage
在没有消息时不会立即返回。使用Amazon SQS FIFO队列意味着您希望按顺序接收消息。它还将尝试确保在消息组中排序
这意味着,如果当前正在处理给定消息组ID的某些消息(“正在处理中”),则将不再提供该消息组的消息,因为如果未完全处理,可能会将较早的消息返回队列。这可能会导致邮件被无序处理
发件人:
要在单个FIFO队列中交错多个有序消息组,请使用消息组ID值(例如,多个用户的会话数据)。在此场景中,多个使用者可以处理队列,但每个用户的会话数据都是以FIFO方式处理的
当属于特定消息组ID的消息不可见时,其他消费者无法处理具有相同消息组ID的消息
因此,您的选择是:
- 不要使用FIFO队列,或者
- 使用不同的消息组ID,或
- 对它正在做的事情感到高兴,因为这是期望的FIFO行为