AWS SQS:可见性超时到期后,FIFO 队列中消息的顺序是什么?
AWS SQS: Which is the order of message in a FIFO queue after visibility-timeout expires?
在 AWS SQS FIFO 的队列中;当一条已读消息的可见性超时时,消息将在队列中的哪个位置?
例如:
- 我在队列中有这些消息:“[A、B、C、D]”(顺序:A 在先)
- 我从队列中读取了一条消息,所以我收到消息 'A'
- 消息 'A' 的可见性超时到期,消费者可以再次使用它
消息的新顺序是什么?
- a) [A, B, C, D]
- b) [B、C、D、A]
顺序保持不变:[A, B, C, D]
事实上,在处理完消息 A 之前,无法从队列 中获取具有相同 Message Group ID 的另一条消息。这样可以确保保留顺序。
允许并行处理某些消息的地方,您可以指定不同的消息组 ID。
[A, B, C, D]
当且仅当所有消息共享相同的消息组 ID 时才是正确的。如果他们不这样做,可见性超时到期会将消息发送到队列的后面。 ([B, C, D, A]
).
同时处理来自 SQS FIFO 队列的多条消息的唯一方法是使用多个消息组 ID,不幸的是,这会破坏最旧消息的优先顺序。
在 AWS SQS FIFO 的队列中;当一条已读消息的可见性超时时,消息将在队列中的哪个位置?
例如:
- 我在队列中有这些消息:“[A、B、C、D]”(顺序:A 在先)
- 我从队列中读取了一条消息,所以我收到消息 'A'
- 消息 'A' 的可见性超时到期,消费者可以再次使用它
消息的新顺序是什么?
- a) [A, B, C, D]
- b) [B、C、D、A]
顺序保持不变:[A, B, C, D]
事实上,在处理完消息 A 之前,无法从队列 中获取具有相同 Message Group ID 的另一条消息。这样可以确保保留顺序。
允许并行处理某些消息的地方,您可以指定不同的消息组 ID。
[A, B, C, D]
当且仅当所有消息共享相同的消息组 ID 时才是正确的。如果他们不这样做,可见性超时到期会将消息发送到队列的后面。 ([B, C, D, A]
).
同时处理来自 SQS FIFO 队列的多条消息的唯一方法是使用多个消息组 ID,不幸的是,这会破坏最旧消息的优先顺序。