【问题标题】:AWS SQS: Which is the order of message in a FIFO queue after visibility-timeout expires?AWS SQS:可见性超时到期后,FIFO 队列中的消息顺序是什么?
【发布时间】:2019-11-07 07:05:03
【问题描述】:

在 AWS SQS FIFO 的队列中;当一条已读消息的可见性超时时,该消息将在队列的哪个位置?

例如:

  • 我在队列中有这些消息:'[A, B, C, D]'(顺序:A 先入)
  • 我从队列中读取了一条消息,因此收到消息“A”
  • 消息“A”的可见性超时到期,消费者可以再次使用它

消息的新顺序是什么?

  • a) [A、B、C、D]
  • b) [B、C、D、A]

【问题讨论】:

    标签: amazon-web-services timeout message-queue amazon-sqs fifo


    【解决方案1】:

    [A, B, C, D] 正确当且仅当所有消息共享相同的消息组 ID。如果他们不这样做,可见性超时到期会将消息发送到队列的后面。 ([B, C, D, A])。

    同时处理来自 SQS FIFO 队列的多条消息的唯一方法是使用多个消息组 ID,不幸的是,这会破坏最旧消息的优先顺序。

    【讨论】:

      【解决方案2】:

      顺序保持不变:[A, B, C, D]

      事实上,在处理完消息 A 之前,不可能从队列中获取另一条具有相同 Message Group ID 的消息。这样可以确保保留订单。

      在允许并行处理某些消息的情况下,您可以指定不同的消息组 ID。

      【讨论】:

      • 这仅对 FIFO 队列或任何 SQS 类型有效吗?
      • @nyxz 这现在是先进先出 (FIFO) 队列运行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      • 2015-04-27
      • 2016-02-06
      • 1970-01-01
      相关资源
      最近更新 更多