SendMessageBatch API

0

【以下的问题经过翻译处理】 你好,

我正在使用 java sdk 并使用 sendMessageBatch 将消息发送到 FIFO 队列。我试图准确了解消息是如何排入 FIFO 队列的。更具体地说,我想知道这些消息是否都进入队列并同时变得可见,或者它们是否在幕后一条一条地发布。我已经阅读了尽可能多的文档,但没有找到答案,我读过的最接近的是:

“对于 FIFO 队列,单个批次中的多条消息按发送顺序排队。”

来自此处的文档:https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html

不幸的是,这并没有给我我正在寻找的信息,希望有人可以帮助解决这个问题!

谢谢你,

布兰登

profile picture
专家
已提问 5 个月前5 查看次数
1 回答
0

【以下的回答经过翻译处理】 你说得对,我可以确认目前如果满足以下条件,一个SQS FIFO队列将会出现以下行为:

  1. 队列中没有消息可供返回(空的或者所有消息都在flight状态);
  2. 已经有一个长轮询ReceiveMessage请求等待在队列上;
  3. 一批消息已发送到FIFO队列中。

那么现有的长轮询ReceiveMessage请求将立即完成并只返回已发送批次的第一个消息。如果还有其他长轮询ReceiveMessage请求等待,它将返回批次中的其余消息(但仅在它们有不同的消息组ID时,FIFO排序规则仍然适用)。

这种行为将会影响你试图通过最小化与SQS的调用次数来完成的场景。我已向团队的待办事项中添加了一个请求,以改变这种行为。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则