gpt4 book ai didi

amazon-web-services - AWS : multiple instances reading SQS

转载 作者:行者123 更新时间:2023-12-04 04:58:59 25 4
gpt4 key购买 nike

简单的问题:
我想在 Amazon 上运行一个自动缩放组,它会启动多个实例来处理来自 SQS 队列的消息。但是我怎么知道这些实例没有处理相同的消息呢?

我可以在处理消息时从队列中删除它。但是如果它还没有被删除并且仍在被一个实例处理,另一个实例可以下载相同的消息并也在我看来处理它。

最佳答案

除了 SQS 多次错误地传递相同消息的相当遥远的可能性(您仍然需要考虑,即使不太可能),我怀疑您的问题源于对 SQS 的“可见性超时”概念缺乏熟悉。 ”

Immediately after the component receives the message, the message is still in the queue. However, you don't want other components in the system receiving and processing the message again. Therefore, Amazon SQS blocks them with a visibility timeout, which is a period of time during which Amazon SQS prevents other consuming components from receiving and processing that message.

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AboutVT.html



这就是阻止多个队列运行程序看到相同消息的原因。一旦可见性超时到期,消息将再次传递给队列使用者,除非您将其删除,或者它超过了最大配置的传递次数(此时它会被删除或进入单独的死信队列,如果您已配置) )。如果作业将花费比配置的可见性超时更长的时间,您的使用者还可以向 SQS 发送请求以更改该单个消息的可见性超时。

更新:

由于此答案最初是编写的,因此 SQS 在某些 AWS 区域中引入了 FIFO 队列。这些操作与上述相同的逻辑,但有保证的按顺序传递和额外的保护措施,以确保不会偶尔发生重复的消息传递。

FIFO (First-In-First-Out) queues are designed to enhance messaging between applications when the order of operations and events is critical, or where duplicates can't be tolerated. FIFO queues also provide exactly-once processing but are limited to 300 transactions per second (TPS).

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html



将应用程序切换到 FIFO 队列确实需要更改一些代码,并且需要创建一个新队列——现有队列不能更改为 FIFO。

关于amazon-web-services - AWS : multiple instances reading SQS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30187683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com