本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon SQS 中从标准队列移动到 FIFO 队列
如果您的现有应用程序使用标准队列,并且您想利用 FIFO 队列的排序或精确一次处理功能,则需要正确配置队列和应用程序。
重要注意事项:
-
创建 FIFO 队列:您无法将现有的标准队列转换为 FIFO 队列。您必须为应用程序创建新的 FIFO 队列,或者删除现有的标准队列并将其重新创建为 FIFO 队列。
-
延迟参数:FIFO 队列不支持每条消息的延迟,仅支持每队列的延迟。如果您的应用程序在每条消息上都设置了
DelaySeconds
参数,则必须将其修改为在整个队列DelaySeconds
上设置。 -
消息组 ID:为每封已发送的消息提供消息组 ID。此 ID 允许并行处理消息,同时保持消息的相应顺序。使用精细的业务维度作为消息组 ID,以便更好地扩展 FIFO 队列。您向其分发消息的消息组 ID 越多,可供使用的消息数量就越多。
-
高吞吐量模式:对 FIFO 队列使用推荐的高吞吐量模式以提高吞吐量。有关消息配额的更多信息,请参阅亚马逊 SQS 消息配额。
移至 FIFO 队列的清单
在将消息发送到 FIFO 队列之前,请确认以下内容:
-
配置延迟设置
-
修改您的应用程序以消除每条消息的延迟。
-
在整个队列上设置
DelaySeconds
参数。
-
-
设置消息组 ID
-
根据业务维度指定消息组 ID,将消息整理到消息组中。
-
使用更精细的业务维度来提高可扩展性。
-
-
处理消息重复数据删除
-
如果您的应用程序可以发送具有相同消息正文的消息,请为每条消息提供唯一的消息重复数据删除 ID。
-
如果您的应用程序发送带有唯一消息正文的消息,请启用基于内容的重复数据删除。
-
-
配置消费者
-
通常,消费者无需更改代码。
-
如果处理消息需要很长时间并且可见性超时设置得很高,请考虑为每个
ReceiveMessage
操作添加一个接收请求尝试 ID。这有助于在网络出现故障时重试接收尝试,并防止队列因接收尝试失败而暂停。
-
通过执行这些步骤,您可以确保您的应用程序在FIFO队列中正常运行,充分利用其排序和精确一次处理功能。有关更多详细信息,请参阅 Amazon 简单队列服务 API 参考。